]> source.dussan.org Git - archiva.git/blob
9179c5df796509a65a0756bfcd7e4eb6f5f8ca35
[archiva.git] /
1 package org.apache.maven.repository.indexing;
2
3 /*
4  * Copyright 2001-2005 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  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19
20 import java.io.File;
21 import java.util.Iterator;
22 import java.util.List;
23
24 import org.apache.maven.artifact.Artifact;
25 import org.apache.maven.artifact.factory.ArtifactFactory;
26 import org.apache.maven.artifact.repository.ArtifactRepository;
27
28 import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
29 import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
30
31 import org.codehaus.plexus.PlexusTestCase;
32
33 /**
34  *
35  */
36 public class ArtifactRepositoryIndexingTest
37     extends PlexusTestCase
38 {
39     protected ArtifactRepositoryIndexer indexer;
40     protected ArtifactFactory artifactFactory;
41     protected ArtifactRepository repository;
42     protected String indexPath;
43     private RepositoryIndexSearcher repoSearcher;
44     private static final String GROUPID = "groupId";
45     private static final String ARTIFACTID = "artifactId";
46         private static final String VERSION = "version";
47         private static final String SHA1 = "sha1";
48     private static final String MD5 = "md5";
49     private static final String CLASSES = "classes";
50     private static final String PACKAGES = "packages";
51     private static final String FILES = "files";
52
53     protected void setUp()
54         throws Exception
55     {
56         super.setUp();
57
58         File repositoryDirectory = getTestFile( "src/test/repository" );
59         String repoDir = repositoryDirectory.toURL().toString();
60
61         ArtifactRepositoryLayout layout = (ArtifactRepositoryLayout) lookup( ArtifactRepositoryLayout.ROLE, "default" );
62         ArtifactRepositoryFactory repoFactory = (ArtifactRepositoryFactory) lookup( ArtifactRepositoryFactory.ROLE );
63         RepositoryIndexerFactory factory = (RepositoryIndexerFactory) lookup( RepositoryIndexerFactory.ROLE );
64
65         String indexPath = "target/index";
66         repository = repoFactory.createArtifactRepository( "test", repoDir, layout, null, null );
67         indexer = (ArtifactRepositoryIndexer) factory.getArtifactRepositoryIndexer( indexPath, repository );
68         artifactFactory = (ArtifactFactory) lookup( ArtifactFactory.ROLE );
69         
70         repoSearcher = new ArtifactRepositoryIndexSearcher(indexPath, repository);
71     }
72     
73     public void testIndex()
74         throws Exception
75     {
76         Artifact artifact = getArtifact( "org.apache.maven", "maven-artifact", "2.0.1" );
77         artifact.setFile( new File( repository.getBasedir(), repository.pathOf( artifact ) ) );
78         indexer.addArtifactIndex( artifact );
79         
80         artifact = getArtifact( "org.apache.maven", "maven-model", "2.0" );
81         artifact.setFile( new File( repository.getBasedir(), repository.pathOf( artifact ) ) );
82         indexer.addArtifactIndex( artifact );
83         
84         indexer.optimize();
85         indexer.close();
86
87         indexer.open();
88         artifact = getArtifact( "test", "test-artifactId", "1.0" );
89         artifact.setFile( new File( repository.getBasedir(), repository.pathOf( artifact ) ) );
90         indexer.addObjectIndex( artifact );
91         indexer.close();
92     }
93   
94     public void testSearch() throws Exception{
95         
96         //test the search GROUPID
97         List artifacts = repoSearcher.searchArtifact("test", GROUPID);
98         assertEquals( 1, artifacts.size() );
99                         
100         artifacts = repoSearcher.searchArtifact("test", ARTIFACTID);
101         assertEquals( 1, artifacts.size() );
102                 
103         artifacts = repoSearcher.searchArtifact("1.0", VERSION);
104         assertEquals( 1, artifacts.size() );
105         
106         artifacts = repoSearcher.searchArtifact("App", CLASSES);
107         assertEquals( 1, artifacts.size() );
108         
109         artifacts = repoSearcher.searchArtifact("groupId", PACKAGES);
110         assertEquals( 1, artifacts.size() );
111         
112         artifacts = repoSearcher.searchArtifact("pom.xml", FILES);
113         assertEquals( 3, artifacts.size() );
114
115         for( Iterator iter = artifacts.iterator(); iter.hasNext(); )
116         {
117                 Artifact artifact = (Artifact) iter.next();
118                 File f = artifact.getFile();
119             assertNotNull( f );
120                 assertTrue( f.exists() );
121         }
122         
123         //search org.apache.maven jars
124         artifacts = repoSearcher.searchArtifact("org.apache.maven", GROUPID);
125         assertEquals( 2, artifacts.size() );
126         
127         artifacts = repoSearcher.searchArtifact("maven-artifact", ARTIFACTID);
128         assertEquals( 1, artifacts.size() );
129                 
130         artifacts = repoSearcher.searchArtifact("2", VERSION);
131         assertEquals( 2, artifacts.size() );
132    
133     }
134
135     public void testIndexerExceptions()
136         throws Exception
137     {
138         indexer.close();
139         Artifact artifact = getArtifact( "test", "test-artifactId", "1.0" );
140         artifact.setFile( new File( repository.getBasedir(), repository.pathOf( artifact ) ) );
141
142         try
143         {
144             indexer.addArtifactIndex( artifact );
145             fail( "Must throw exception on add index with closed index." );
146         }
147         catch( RepositoryIndexerException e )
148         {
149             //expected
150         }
151         
152         try
153         {
154             indexer.optimize();
155             fail( "Must throw exception on optimize index with closed index." );
156         }
157         catch( RepositoryIndexerException e )
158         {
159             //expected
160         }
161         
162         indexer.open();
163         
164         try
165         {
166             indexer.addObjectIndex( "should fail" );
167             fail( "Must throw exception on add non-Artifact object." );
168         }
169         catch( RepositoryIndexerException e )
170         {
171             //expected
172         }
173     }
174     
175     protected Artifact getArtifact( String groupId, String artifactId, String version )
176     {
177         return artifactFactory.createBuildArtifact( groupId, artifactId, version, "jar" );
178     }
179 }