]> source.dussan.org Git - archiva.git/blob
073de90545aa2cf2a0c61d092f359c0412ae335a
[archiva.git] /
1 package org.apache.archiva.configuration.functors;
2
3 /*
4  * Licensed to the Apache Software Foundation (ASF) under one
5  * or more contributor license agreements.  See the NOTICE file
6  * distributed with this work for additional information
7  * regarding copyright ownership.  The ASF licenses this file
8  * to you under the Apache License, Version 2.0 (the
9  * "License"); you may not use this file except in compliance
10  * with the License.  You may obtain a copy of the License at
11  *
12  *  http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing,
15  * software distributed under the License is distributed on an
16  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17  * KIND, either express or implied.  See the License for the
18  * specific language governing permissions and limitations
19  * under the License.
20  */
21
22 import junit.framework.TestCase;
23 import org.apache.archiva.configuration.ProxyConnectorConfiguration;
24 import org.apache.commons.lang.StringUtils;
25
26 import java.util.ArrayList;
27 import java.util.Collections;
28 import java.util.List;
29 import org.apache.archiva.test.utils.ArchivaBlockJUnit4ClassRunner;
30 import org.junit.Test;
31 import org.junit.runner.RunWith;
32
33 /**
34  * ProxyConnectorConfigurationOrderComparatorTest
35  *
36  * @version $Id$
37  */
38 @RunWith( ArchivaBlockJUnit4ClassRunner.class )
39 public class ProxyConnectorConfigurationOrderComparatorTest
40     extends TestCase
41 {
42     @Test
43     public void testSortOfAllZeros()
44     {
45         List<ProxyConnectorConfiguration> proxies = new ArrayList<ProxyConnectorConfiguration>();
46
47         proxies.add( createConnector( "corporate", 0 ) );
48         proxies.add( createConnector( "snapshots", 0 ) );
49         proxies.add( createConnector( "3rdparty", 0 ) );
50         proxies.add( createConnector( "sandbox", 0 ) );
51
52         Collections.sort( proxies, ProxyConnectorConfigurationOrderComparator.getInstance() );
53
54         assertProxyOrder( new String[]{ "corporate", "snapshots", "3rdparty", "sandbox" }, proxies );
55     }
56
57     @Test
58     public void testSortNormal()
59     {
60         List<ProxyConnectorConfiguration> proxies = new ArrayList<ProxyConnectorConfiguration>();
61
62         proxies.add( createConnector( "corporate", 3 ) );
63         proxies.add( createConnector( "snapshots", 1 ) );
64         proxies.add( createConnector( "3rdparty", 2 ) );
65         proxies.add( createConnector( "sandbox", 4 ) );
66
67         Collections.sort( proxies, new ProxyConnectorConfigurationOrderComparator() );
68
69         assertProxyOrder( new String[]{ "snapshots", "3rdparty", "corporate", "sandbox" }, proxies );
70     }
71
72     @Test
73     public void testSortPartial()
74     {
75         List<ProxyConnectorConfiguration> proxies = new ArrayList<ProxyConnectorConfiguration>();
76
77         proxies.add( createConnector( "corporate", 3 ) );
78         proxies.add( createConnector( "snapshots", 0 ) );
79         proxies.add( createConnector( "3rdparty", 2 ) );
80         proxies.add( createConnector( "sandbox", 0 ) );
81
82         Collections.sort( proxies, new ProxyConnectorConfigurationOrderComparator() );
83
84         assertProxyOrder( new String[]{ "3rdparty", "corporate", "snapshots", "sandbox" }, proxies );
85     }
86
87     private void assertProxyOrder( String[] ids, List<ProxyConnectorConfiguration> proxies )
88     {
89         assertEquals( "Proxies.size() == ids.length", ids.length, proxies.size() );
90
91         int orderFailedAt = -1;
92
93         for ( int i = 0; i < ids.length; i++ )
94         {
95             if ( !StringUtils.equals( ids[i], proxies.get( i ).getProxyId() ) )
96             {
97                 orderFailedAt = i;
98                 break;
99             }
100         }
101
102         if ( orderFailedAt >= 0 )
103         {
104             StringBuffer msg = new StringBuffer();
105
106             msg.append( "Failed expected order of the proxies <" );
107             msg.append( StringUtils.join( ids, ", " ) );
108             msg.append( ">, actual <" );
109
110             boolean needsComma = false;
111             for ( ProxyConnectorConfiguration proxy : proxies )
112             {
113                 if ( needsComma )
114                 {
115                     msg.append( ", " );
116                 }
117                 msg.append( proxy.getProxyId() );
118                 needsComma = true;
119             }
120             msg.append( "> failure at index <" ).append( orderFailedAt ).append( ">." );
121
122             fail( msg.toString() );
123         }
124     }
125
126     private ProxyConnectorConfiguration createConnector( String id, int order )
127     {
128         ProxyConnectorConfiguration proxy = new ProxyConnectorConfiguration();
129         proxy.setProxyId( id );
130         proxy.setOrder( order );
131         proxy.setSourceRepoId( id + "_m" );
132         proxy.setTargetRepoId( id + "_r" );
133
134         return proxy;
135     }
136 }