View Javadoc
1   package org.apache.maven.repository.metadata;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
5    * agreements. See the NOTICE file distributed with this work for additional information regarding
6    * copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance with the License. You may obtain a
8    * copy of the License at
9    *
10   * http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software distributed under the License
13   * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
14   * or implied. See the License for the specific language governing permissions and limitations under
15   * the License.
16   */
17  
18  import org.apache.maven.artifact.ArtifactScopeEnum;
19  import org.apache.maven.repository.metadata.ArtifactMetadata;
20  import org.apache.maven.repository.metadata.GraphConflictResolver;
21  import org.apache.maven.repository.metadata.MetadataGraph;
22  import org.apache.maven.repository.metadata.MetadataGraphEdge;
23  import org.apache.maven.repository.metadata.MetadataGraphVertex;
24  import org.codehaus.plexus.PlexusTestCase;
25  import org.codehaus.plexus.logging.Logger;
26  
27  /**
28   *
29   * @author <a href="mailto:oleg@codehaus.org">Oleg Gusakov</a>
30   *
31   */
32  
33  public class DefaultGraphConflictResolverTest
34  extends PlexusTestCase
35  {
36  	Logger log;
37  	
38  	GraphConflictResolver resolver;
39  	
40  	MetadataGraph graph;
41  
42  	MetadataGraphVertex v1;
43  	MetadataGraphVertex v2;
44  	MetadataGraphVertex v3;
45  	MetadataGraphVertex v4;
46      //------------------------------------------------------------------------------------------
47      @Override
48  	protected void setUp() throws Exception
49  	{
50  		super.setUp();
51  		resolver = (GraphConflictResolver) lookup( GraphConflictResolver.ROLE, "default" );
52  
53      	/*
54      	 *       v2
55      	 *   v1<
56      	 *      v3-v4
57      	 *
58      	 */
59      	graph = new MetadataGraph( 4, 3 );
60      	v1 = graph.addVertex(new ArtifactMetadata("g","a1","1.0"));
61      	graph.setEntry(v1);
62      	v2 = graph.addVertex(new ArtifactMetadata("g","a2","1.0"));
63      	v3 = graph.addVertex(new ArtifactMetadata("g","a3","1.0"));
64      	v4 = graph.addVertex(new ArtifactMetadata("g","a4","1.0"));
65  
66      	// v1-->v2
67      	graph.addEdge(v1, v2, new MetadataGraphEdge( "1.1", true, null, null, 2, 1 ) );
68      	graph.addEdge(v1, v2, new MetadataGraphEdge( "1.2", true, null, null, 2, 2 ) );
69      	
70      	// v1-->v3
71      	graph.addEdge(v1, v3, new MetadataGraphEdge( "1.1", true, null, null, 2, 1 ) );
72      	graph.addEdge(v1, v3, new MetadataGraphEdge( "1.2", true, null, null, 4, 2 ) );
73      	
74      	// v3-->v4
75      	graph.addEdge(v3, v4, new MetadataGraphEdge( "1.1", true, ArtifactScopeEnum.runtime, null, 2, 1 ) );
76      	graph.addEdge(v3, v4, new MetadataGraphEdge( "1.2", true, ArtifactScopeEnum.provided, null, 2, 2 ) );
77  	}
78      //------------------------------------------------------------------------------------------
79      public void testCompileResolution()
80      throws Exception
81      {
82      	MetadataGraph res;
83      	
84      	res = resolver.resolveConflicts( graph, ArtifactScopeEnum.compile );
85      	
86      	assertNotNull("null graph after resolver", res );
87      	assertNotNull("no vertices in the resulting graph after resolver", res.getVertices() );
88  
89      	assertNotNull("no edges in the resulting graph after resolver", res.getExcidentEdges(v1) );
90  
91      	assertEquals( "wrong # of vertices in the resulting graph after resolver", 4, res.getVertices().size() );
92      	assertEquals( "wrong # of excident edges in the resulting graph entry after resolver", 2, res.getExcidentEdges(v1).size() );
93  
94      	assertEquals( "wrong # of v2 incident edges in the resulting graph after resolver", 1, res.getIncidentEdges(v2).size() );
95      	assertEquals( "wrong edge v1-v2 in the resulting graph after resolver", "1.2", res.getIncidentEdges(v2).get(0).getVersion() );
96  
97      	assertEquals( "wrong # of edges v1-v3 in the resulting graph after resolver", 1, res.getIncidentEdges(v3).size() );
98      	assertEquals( "wrong edge v1-v3 in the resulting graph after resolver", "1.1", res.getIncidentEdges(v3).get(0).getVersion() );
99  
100     	assertEquals( "wrong # of edges v3-v4 in the resulting graph after resolver", 1, res.getIncidentEdges(v4).size() );
101     	assertEquals( "wrong edge v3-v4 in the resulting graph after resolver", "1.2", res.getIncidentEdges(v4).get(0).getVersion() );
102     }
103     //------------------------------------------------------------------------------------------
104     public void testRuntimeResolution()
105     throws Exception
106     {
107     	MetadataGraph res;
108     	
109     	res = resolver.resolveConflicts( graph, ArtifactScopeEnum.runtime );
110     	
111     	assertNotNull("null graph after resolver", res );
112     	assertNotNull("no vertices in the resulting graph after resolver", res.getVertices() );
113     	assertNotNull("no edges in the resulting graph after resolver", res.getExcidentEdges(v1) );
114 
115     	assertEquals( "wrong # of vertices in the resulting graph after resolver", 4, res.getVertices().size() );
116     	assertEquals( "wrong # of excident edges in the resulting graph entry after resolver", 2, res.getExcidentEdges(v1).size() );
117 
118     	assertEquals( "wrong # of v2 incident edges in the resulting graph after resolver", 1, res.getIncidentEdges(v2).size() );
119     	assertEquals( "wrong edge v1-v2 in the resulting graph after resolver", "1.2", res.getIncidentEdges(v2).get(0).getVersion() );
120 
121     	assertEquals( "wrong # of edges v1-v3 in the resulting graph after resolver", 1, res.getIncidentEdges(v3).size() );
122     	assertEquals( "wrong edge v1-v3 in the resulting graph after resolver", "1.1", res.getIncidentEdges(v3).get(0).getVersion() );
123 
124     	assertEquals( "wrong # of edges v3-v4 in the resulting graph after resolver", 1, res.getIncidentEdges(v4).size() );
125     	assertEquals( "wrong edge v3-v4 in the resulting graph after resolver", "1.1", res.getIncidentEdges(v4).get(0).getVersion() );
126     }
127     //------------------------------------------------------------------------------------------
128     public void testTestResolution()
129     throws Exception
130     {
131     	MetadataGraph res;
132     	
133     	res = resolver.resolveConflicts( graph, ArtifactScopeEnum.test );
134     	
135     	assertNotNull("null graph after resolver", res );
136     	assertNotNull("no vertices in the resulting graph after resolver", res.getVertices() );
137     	assertNotNull("no edges in the resulting graph after resolver", res.getExcidentEdges(v1) );
138 
139     	assertEquals( "wrong # of vertices in the resulting graph after resolver", 4, res.getVertices().size() );
140     	assertEquals( "wrong # of excident edges in the resulting graph entry after resolver", 2, res.getExcidentEdges(v1).size() );
141 
142     	assertEquals( "wrong # of v2 incident edges in the resulting graph after resolver", 1, res.getIncidentEdges(v2).size() );
143     	assertEquals( "wrong edge v1-v2 in the resulting graph after resolver", "1.2", res.getIncidentEdges(v2).get(0).getVersion() );
144 
145     	assertEquals( "wrong # of edges v1-v3 in the resulting graph after resolver", 1, res.getIncidentEdges(v3).size() );
146     	assertEquals( "wrong edge v1-v3 in the resulting graph after resolver", "1.1", res.getIncidentEdges(v3).get(0).getVersion() );
147 
148     	assertEquals( "wrong # of edges v3-v4 in the resulting graph after resolver", 1, res.getIncidentEdges(v4).size() );
149     	assertEquals( "wrong edge v3-v4 in the resulting graph after resolver", "1.2", res.getIncidentEdges(v4).get(0).getVersion() );
150     }
151     //------------------------------------------------------------------------------------------
152     //------------------------------------------------------------------------------------------
153 }