]> source.dussan.org Git - archiva.git/blob
62a666c20ac4733375d9b3b0a3bf180b1dd1f52d
[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 org.apache.archiva.configuration.ProxyConnectorConfiguration;
23 import org.apache.archiva.test.utils.ArchivaBlockJUnit4ClassRunner;
24 import org.apache.commons.lang.StringUtils;
25 import org.junit.Test;
26 import org.junit.runner.RunWith;
27
28 import java.util.ArrayList;
29 import java.util.Collections;
30 import java.util.List;
31
32 import static org.junit.Assert.assertEquals;
33 import static org.junit.Assert.fail;
34
35 /**
36  * ProxyConnectorConfigurationOrderComparatorTest
37  *
38  *
39  */
40 @RunWith( ArchivaBlockJUnit4ClassRunner.class )
41 public class ProxyConnectorConfigurationOrderComparatorTest
42 {
43     @Test
44     public void testSortOfAllZeros()
45     {
46         List<ProxyConnectorConfiguration> proxies = new ArrayList<>();
47
48         proxies.add( createConnector( "corporate", 0 ) );
49         proxies.add( createConnector( "snapshots", 0 ) );
50         proxies.add( createConnector( "3rdparty", 0 ) );
51         proxies.add( createConnector( "sandbox", 0 ) );
52
53         Collections.sort( proxies, ProxyConnectorConfigurationOrderComparator.getInstance() );
54
55         assertProxyOrder( new String[]{ "corporate", "snapshots", "3rdparty", "sandbox" }, proxies );
56     }
57
58     @Test
59     public void testSortNormal()
60     {
61         List<ProxyConnectorConfiguration> proxies = new ArrayList<>();
62
63         proxies.add( createConnector( "corporate", 3 ) );
64         proxies.add( createConnector( "snapshots", 1 ) );
65         proxies.add( createConnector( "3rdparty", 2 ) );
66         proxies.add( createConnector( "sandbox", 4 ) );
67
68         Collections.sort( proxies, new ProxyConnectorConfigurationOrderComparator() );
69
70         assertProxyOrder( new String[]{ "snapshots", "3rdparty", "corporate", "sandbox" }, proxies );
71     }
72
73     @Test
74     public void testSortPartial()
75     {
76         List<ProxyConnectorConfiguration> proxies = new ArrayList<>();
77
78         proxies.add( createConnector( "corporate", 3 ) );
79         proxies.add( createConnector( "snapshots", 0 ) );
80         proxies.add( createConnector( "3rdparty", 2 ) );
81         proxies.add( createConnector( "sandbox", 0 ) );
82
83         Collections.sort( proxies, new ProxyConnectorConfigurationOrderComparator() );
84
85         assertProxyOrder( new String[]{ "3rdparty", "corporate", "snapshots", "sandbox" }, proxies );
86     }
87
88     private void assertProxyOrder( String[] ids, List<ProxyConnectorConfiguration> proxies )
89     {
90         assertEquals( "Proxies.size() == ids.length", ids.length, proxies.size() );
91
92         int orderFailedAt = -1;
93
94         for ( int i = 0; i < ids.length; i++ )
95         {
96             if ( !StringUtils.equals( ids[i], proxies.get( i ).getProxyId() ) )
97             {
98                 orderFailedAt = i;
99                 break;
100             }
101         }
102
103         if ( orderFailedAt >= 0 )
104         {
105             StringBuilder msg = new StringBuilder();
106
107             msg.append( "Failed expected order of the proxies <" );
108             msg.append( StringUtils.join( ids, ", " ) );
109             msg.append( ">, actual <" );
110
111             boolean needsComma = false;
112             for ( ProxyConnectorConfiguration proxy : proxies )
113             {
114                 if ( needsComma )
115                 {
116                     msg.append( ", " );
117                 }
118                 msg.append( proxy.getProxyId() );
119                 needsComma = true;
120             }
121             msg.append( "> failure at index <" ).append( orderFailedAt ).append( ">." );
122
123             fail( msg.toString() );
124         }
125     }
126
127     private ProxyConnectorConfiguration createConnector( String id, int order )
128     {
129         ProxyConnectorConfiguration proxy = new ProxyConnectorConfiguration();
130         proxy.setProxyId( id );
131         proxy.setOrder( order );
132         proxy.setSourceRepoId( id + "_m" );
133         proxy.setTargetRepoId( id + "_r" );
134
135         return proxy;
136     }
137 }