]> source.dussan.org Git - archiva.git/blob
742545a9452810e647f32d7d443edf2a5abb49fc
[archiva.git] /
1 package org.apache.maven.repository.indexing;
2
3 /*
4  * Copyright 2005-2006 The Apache Software Foundation.
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a 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
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18
19 import org.apache.maven.artifact.Artifact;
20 import org.apache.maven.artifact.factory.ArtifactFactory;
21 import org.apache.maven.artifact.repository.ArtifactRepository;
22 import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
23 import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
24 import org.codehaus.plexus.PlexusTestCase;
25 import org.codehaus.plexus.util.FileUtils;
26
27 import java.io.File;
28 import java.util.Iterator;
29 import java.util.List;
30
31 /**
32  *
33  */
34 public class ArtifactRepositoryIndexingTest
35     extends PlexusTestCase
36 {
37     private static final String GROUPID = "groupId";
38
39     private static final String ARTIFACTID = "artifactId";
40
41     private static final String VERSION = "version";
42
43     private static final String SHA1 = "sha1";
44
45     private static final String MD5 = "md5";
46
47     private static final String CLASSES = "classes";
48
49     private static final String PACKAGES = "packages";
50
51     private static final String FILES = "files";
52
53     protected ArtifactRepositoryIndex indexer;
54
55     protected ArtifactFactory artifactFactory;
56
57     protected ArtifactRepository repository;
58
59     protected String indexPath;
60
61     private RepositoryIndexSearcher repoSearcher;
62
63     protected void setUp()
64         throws Exception
65     {
66         super.setUp();
67
68         File repositoryDirectory = getTestFile( "src/test/repository" );
69         String repoDir = repositoryDirectory.toURL().toString();
70         ArtifactRepositoryLayout layout = (ArtifactRepositoryLayout) lookup( ArtifactRepositoryLayout.ROLE, "default" );
71         ArtifactRepositoryFactory repoFactory = (ArtifactRepositoryFactory) lookup( ArtifactRepositoryFactory.ROLE );
72         repository = repoFactory.createArtifactRepository( "test", repoDir, layout, null, null );
73
74         indexPath = "target/index";
75
76         FileUtils.deleteDirectory( indexPath );
77     }
78
79     public void testIndexerExceptions()
80         throws Exception
81     {
82         try
83         {
84             String notIndexDir = new File( "pom.xml" ).getAbsolutePath();
85             indexer = (ArtifactRepositoryIndex) lookup( RepositoryIndex.ROLE, "artifact" );
86             indexer.open( notIndexDir );
87             fail( "Must throw exception on non-directory index directory" );
88         }
89         catch ( RepositoryIndexException e )
90         {
91             //expected
92         }
93
94         try
95         {
96             String notIndexDir = new File( "" ).getAbsolutePath();
97             indexer = (ArtifactRepositoryIndex) lookup( RepositoryIndex.ROLE, "artifact" );
98             indexer.open( notIndexDir );
99             fail( "Must throw an exception on a non-index directory" );
100         }
101         catch ( RepositoryIndexException e )
102         {
103             //expected
104         }
105
106         //indexer = (ArtifactRepositoryIndex) factory.getArtifactRepositoryIndexer( indexPath, repository );
107         //indexer.close();
108         indexer = (ArtifactRepositoryIndex) lookup( RepositoryIndex.ROLE, "artifact" );
109         Artifact artifact = getArtifact( "test", "test-artifactId", "1.0" );
110         artifact.setFile( new File( repository.getBasedir(), repository.pathOf( artifact ) ) );
111
112         try
113         {
114             indexer.indexArtifact( artifact );
115             fail( "Must throw exception on add index with closed index." );
116         }
117         catch ( RepositoryIndexException e )
118         {
119             //expected
120         }
121
122         try
123         {
124             indexer.optimize();
125             fail( "Must throw exception on optimize index with closed index." );
126         }
127         catch ( RepositoryIndexException e )
128         {
129             //expected
130         }
131
132         indexer.open( indexPath );
133
134         try
135         {
136             indexer.index( "should fail" );
137             fail( "Must throw exception on add non-Artifact object." );
138         }
139         catch ( RepositoryIndexException e )
140         {
141             //expected
142         }
143
144         indexer.close();
145     }
146
147     public void testIndex()
148         throws Exception
149     {
150         //indexer = (ArtifactRepositoryIndex) factory.getArtifactRepositoryIndexer( indexPath, repository );
151         indexer = (ArtifactRepositoryIndex) lookup( RepositoryIndex.ROLE, "artifact" );
152         indexer.open( indexPath );
153
154         Artifact artifact = getArtifact( "org.apache.maven", "maven-artifact", "2.0.1" );
155         artifact.setFile( new File( repository.getBasedir(), repository.pathOf( artifact ) ) );
156         indexer.indexArtifact( artifact );
157
158         artifact = getArtifact( "org.apache.maven", "maven-model", "2.0" );
159         artifact.setFile( new File( repository.getBasedir(), repository.pathOf( artifact ) ) );
160         indexer.indexArtifact( artifact );
161
162         indexer.optimize();
163         indexer.close();
164
165         indexer.open( indexPath );
166         artifact = getArtifact( "test", "test-artifactId", "1.0" );
167         artifact.setFile( new File( repository.getBasedir(), repository.pathOf( artifact ) ) );
168         indexer.index( artifact );
169         indexer.close();
170     }
171
172     public void testSearch()
173         throws Exception
174     {
175         indexer = (ArtifactRepositoryIndex) lookup( RepositoryIndex.ROLE, "artifact" );
176         indexer.open( getTestPath( "src/test/index" ) );
177
178         //repoSearcher = new ArtifactRepositoryIndexSearcher( indexer, indexPath, repository );
179         repoSearcher = (RepositoryIndexSearcher) lookup( RepositoryIndexSearcher.ROLE, "artifact" );
180
181         List artifacts = repoSearcher.search( indexer, "test", GROUPID );
182         assertEquals( 1, artifacts.size() );
183
184         artifacts = repoSearcher.search( indexer, "test", ARTIFACTID );
185         assertEquals( 1, artifacts.size() );
186
187         artifacts = repoSearcher.search( indexer, "1.0", VERSION );
188         assertEquals( 1, artifacts.size() );
189
190         artifacts = repoSearcher.search( indexer, "App", CLASSES );
191         assertEquals( 1, artifacts.size() );
192
193         artifacts = repoSearcher.search( indexer, "groupId", PACKAGES );
194         assertEquals( 1, artifacts.size() );
195
196         artifacts = repoSearcher.search( indexer, "pom.xml", FILES );
197         assertEquals( 3, artifacts.size() );
198
199         for ( Iterator iter = artifacts.iterator(); iter.hasNext(); )
200         {
201             Artifact artifact = (Artifact) iter.next();
202             File f = artifact.getFile();
203             //assertNotNull( f );
204             //assertTrue( f.exists() );
205         }
206
207         artifacts = repoSearcher.search( indexer, "org.apache.maven", GROUPID );
208         assertEquals( 2, artifacts.size() );
209
210         artifacts = repoSearcher.search( indexer, "maven-artifact", ARTIFACTID );
211         assertEquals( 1, artifacts.size() );
212
213         artifacts = repoSearcher.search( indexer, "2", VERSION );
214         assertEquals( 2, artifacts.size() );
215     }
216
217     protected Artifact getArtifact( String groupId, String artifactId, String version )
218         throws Exception
219     {
220         if ( artifactFactory == null )
221         {
222             artifactFactory = (ArtifactFactory) lookup( ArtifactFactory.ROLE );
223         }
224
225         return artifactFactory.createBuildArtifact( groupId, artifactId, version, "jar" );
226     }
227 }