Author: oching
Date: Thu Jan 29 08:06:44 2009
New Revision: 738791

URL: http://svn.apache.org/viewvc?rev=738791&view=rev
Log:
[MRM-749]
o added test case if searched artifact resides in multiple repos
o refactored parts of NexusRepositorySearchTest

Added:
    
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo-2/
    
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo-2/org/
    
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo-2/org/apache/
    
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo-2/org/apache/archiva/
    
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo-2/org/apache/archiva/archiva-search/
    
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo-2/org/apache/archiva/archiva-search/1.0/
    
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo-2/org/apache/archiva/archiva-search/1.0/archiva-search-1.0.jar
   (with props)
    
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo-2/org/apache/archiva/archiva-search/1.0/archiva-search-1.0.pom
    
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo-2/org/apache/archiva/archiva-search/1.1/
    
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo-2/org/apache/archiva/archiva-search/1.1/archiva-search-1.1.jar
   (with props)
    
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo-2/org/apache/archiva/archiva-search/1.1/archiva-search-1.1.pom
Modified:
    
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/NexusRepositorySearch.java
    
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/java/org/apache/archiva/indexer/search/NexusRepositorySearchTest.java

Modified: 
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/NexusRepositorySearch.java
URL: 
http://svn.apache.org/viewvc/archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/NexusRepositorySearch.java?rev=738791&r1=738790&r2=738791&view=diff
==============================================================================
--- 
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/NexusRepositorySearch.java
 (original)
+++ 
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/NexusRepositorySearch.java
 Thu Jan 29 08:06:44 2009
@@ -26,7 +26,6 @@
 import java.util.Set;
 
 import org.apache.archiva.indexer.util.SearchUtil;
-import org.apache.lucene.document.Document;
 import org.apache.lucene.search.BooleanQuery;
 import org.apache.lucene.search.BooleanClause.Occur;
 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
@@ -178,7 +177,8 @@
                 hit = new SearchResultHit();
                 hit.setArtifactId( artifactInfo.artifactId );
                 hit.setGroupId( artifactInfo.groupId );
-                hit.setRepositoryId( artifactInfo.repository );
+                // do we still need to set the repository id even though we're 
merging everything?
+                //hit.setRepositoryId( artifactInfo.repository );
                 hit.setUrl( artifactInfo.repository + "/" + artifactInfo.fname 
);
                 if( !hit.getVersions().contains( artifactInfo.version ) )
                 {

Modified: 
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/java/org/apache/archiva/indexer/search/NexusRepositorySearchTest.java
URL: 
http://svn.apache.org/viewvc/archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/java/org/apache/archiva/indexer/search/NexusRepositorySearchTest.java?rev=738791&r1=738790&r2=738791&view=diff
==============================================================================
--- 
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/java/org/apache/archiva/indexer/search/NexusRepositorySearchTest.java
 (original)
+++ 
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/java/org/apache/archiva/indexer/search/NexusRepositorySearchTest.java
 Thu Jan 29 08:06:44 2009
@@ -44,213 +44,246 @@
     extends PlexusInSpringTestCase
 {
     private RepositorySearch search;
-    
+
     private ArchivaConfiguration archivaConfig;
-    
+
     private NexusIndexer indexer;
-    
+
     private IndexingContext context;
-    
+
     private IndexerEngine indexerEngine;
-    
+
     private ArtifactContextProducer artifactContextProducer;
-    
+
     private MockControl archivaConfigControl;
-    
+
     private Configuration config;
-    
-    private final static String TEST_REPO = "nexus-search-test-repo"; 
-    
+
+    private final static String TEST_REPO_1 = "nexus-search-test-repo";
+
+    private final static String TEST_REPO_2 = "nexus-search-test-repo-2";
+
     @Override
     protected void setUp()
         throws Exception
     {
         super.setUp();
-        
-        indexer = ( NexusIndexer ) lookup( NexusIndexer.class );
-        
+
+        indexer = (NexusIndexer) lookup( NexusIndexer.class );
+
         archivaConfigControl = MockControl.createControl( 
ArchivaConfiguration.class );
-        
-        archivaConfig = ( ArchivaConfiguration ) 
archivaConfigControl.getMock();
-                
+
+        archivaConfig = (ArchivaConfiguration) archivaConfigControl.getMock();
+
         search = new NexusRepositorySearch( indexer, archivaConfig );
-        
-        indexerEngine = ( IndexerEngine ) lookup( IndexerEngine.class );
-        
-        artifactContextProducer = ( ArtifactContextProducer ) lookup( 
ArtifactContextProducer.class );
-        
+
+        indexerEngine = (IndexerEngine) lookup( IndexerEngine.class );
+
+        artifactContextProducer = (ArtifactContextProducer) lookup( 
ArtifactContextProducer.class );
+
         config = new Configuration();
-        
+        config.addManagedRepository( createRepositoryConfig( TEST_REPO_1 ) );
+
+        List<File> files = new ArrayList<File>();
+        files.add( new File( getBasedir(), "/target/test-classes/" + 
TEST_REPO_1 +
+            "/org/apache/archiva/archiva-search/1.0/archiva-search-1.0.jar" ) 
);
+        files.add( new File( getBasedir(), "/target/test-classes/" + 
TEST_REPO_1 +
+            "/org/apache/archiva/archiva-test/1.0/archiva-test-1.0.jar" ) );
+        files.add( new File( getBasedir(), "/target/test-classes/" + 
TEST_REPO_1 +
+            "/org/apache/archiva/archiva-test/2.0/archiva-test-2.0.jar" ) );
+
+        createIndex( TEST_REPO_1, files );
+    }
+
+    private ManagedRepositoryConfiguration createRepositoryConfig( String 
repository )
+    {
         ManagedRepositoryConfiguration repositoryConfig = new 
ManagedRepositoryConfiguration();
-        repositoryConfig.setId( TEST_REPO );
-        repositoryConfig.setLocation( getBasedir() + "/target/test-classes/" + 
TEST_REPO );
+        repositoryConfig.setId( repository );
+        repositoryConfig.setLocation( getBasedir() + "/target/test-classes/" + 
repository );
         repositoryConfig.setLayout( "default" );
-        repositoryConfig.setName( "Nexus Search Test Repository" );
+        repositoryConfig.setName( repository );
         repositoryConfig.setScanned( true );
         repositoryConfig.setSnapshots( false );
         repositoryConfig.setReleases( true );
-        
-        config.addManagedRepository( repositoryConfig );
-        
-        createIndex();
+
+        return repositoryConfig;
     }
-    
+
     @Override
     protected void tearDown()
         throws Exception
     {
-        FileUtils.deleteDirectory( new File( getBasedir(), 
"/target/test-classes/"+ TEST_REPO + "/.indexer" ) );
-        assertFalse( new File( getBasedir(), "/target/test-classes/"+ 
TEST_REPO + "/.indexer" ).exists() );
-        
+        FileUtils.deleteDirectory( new File( getBasedir(), 
"/target/test-classes/" + TEST_REPO_1 + "/.indexer" ) );
+        assertFalse( new File( getBasedir(), "/target/test-classes/" + 
TEST_REPO_1 + "/.indexer" ).exists() );
+
         super.tearDown();
     }
-    
-    private void createIndex()
+
+    private void createIndex( String repository, List<File> filesToBeIndexed )
         throws IOException, UnsupportedExistingLuceneIndexException
     {
         context =
-            indexer.addIndexingContext( TEST_REPO, TEST_REPO, new File( 
getBasedir(), "/target/test-classes/" + TEST_REPO ),
-                                    new File( getBasedir(), 
"/target/test-classes/" + TEST_REPO + "/.indexer"), null, null, 
NexusIndexer.FULL_INDEX );
+            indexer.addIndexingContext( repository, repository, new File( 
getBasedir(), "/target/test-classes/" +
+                repository ), new File( getBasedir(), "/target/test-classes/" 
+ repository + "/.indexer" ), null, null,
+                                        NexusIndexer.FULL_INDEX );
         context.setSearchable( true );
-        
+
         indexerEngine.beginIndexing( context );
-        
-        File artifactFile =
-            new File( getBasedir(),
-                      "/target/test-classes/" + TEST_REPO + 
"/org/apache/archiva/archiva-search/1.0/archiva-search-1.0.jar" );
-        ArtifactContext ac = artifactContextProducer.getArtifactContext( 
context, artifactFile );
-        indexerEngine.index( context, ac );
-        
-        artifactFile =
-            new File( getBasedir(),
-                      "/target/test-classes/" + TEST_REPO + 
"/org/apache/archiva/archiva-test/1.0/archiva-test-1.0.jar" );
-        ac = artifactContextProducer.getArtifactContext( context, artifactFile 
);
-        indexerEngine.index( context, ac );
-        
-        artifactFile =
-            new File( getBasedir(),
-                      "/target/test-classes/" + TEST_REPO + 
"/org/apache/archiva/archiva-test/2.0/archiva-test-2.0.jar" );
-        ac = artifactContextProducer.getArtifactContext( context, artifactFile 
);
-        indexerEngine.index( context, ac );
-        
-        indexerEngine.endIndexing( context );     
-        
-        assertTrue( new File( getBasedir(), "/target/test-classes/"+ TEST_REPO 
+ "/.indexer" ).exists() );
+
+        for ( File artifactFile : filesToBeIndexed )
+        {
+            ArtifactContext ac = artifactContextProducer.getArtifactContext( 
context, artifactFile );
+            indexerEngine.index( context, ac );
+        }
+
+        indexerEngine.endIndexing( context );
+        assertTrue( new File( getBasedir(), "/target/test-classes/" + 
repository + "/.indexer" ).exists() );
     }
-    
+
     public void testQuickSearch()
         throws Exception
     {
         List<String> selectedRepos = new ArrayList<String>();
-        selectedRepos.add( TEST_REPO );
-        
+        selectedRepos.add( TEST_REPO_1 );
+
+        // search artifactId
         archivaConfigControl.expectAndReturn( 
archivaConfig.getConfiguration(), config );
-        
+
         archivaConfigControl.replay();
-        
+
         SearchResults results = search.search( "user", selectedRepos, 
"archiva-search", null );
-        
+
         archivaConfigControl.verify();
-        
+
         assertNotNull( results );
         assertEquals( 1, results.getTotalHits() );
-        
+
         SearchResultHit hit = results.getHits().get( 0 );
         assertEquals( "org.apache.archiva", hit.getGroupId() );
         assertEquals( "archiva-search", hit.getArtifactId() );
         assertEquals( "1.0", hit.getVersions().get( 0 ) );
-        assertEquals( "nexus-search-test-repo", hit.getRepositoryId() );
-        
+
         archivaConfigControl.reset();
-        
+
+        // search groupId
         archivaConfigControl.expectAndReturn( 
archivaConfig.getConfiguration(), config );
-        
+
         archivaConfigControl.replay();
-        
+
         results = search.search( "user", selectedRepos, "org.apache.archiva", 
null );
-        
+
         archivaConfigControl.verify();
-        
+
         assertNotNull( results );
         assertEquals( 2, results.getTotalHits() );
-        
+
         //TODO: search for class & package names
     }
-    
+
     public void testQuickSearchWithPagination()
         throws Exception
     {
         List<String> selectedRepos = new ArrayList<String>();
-        selectedRepos.add( TEST_REPO );
-        
+        selectedRepos.add( TEST_REPO_1 );
+
         // page 1
         SearchResultLimits limits = new SearchResultLimits( 1 );
-        limits.setPageSize( 1 );        
-        
+        limits.setPageSize( 1 );
+
         archivaConfigControl.expectAndReturn( 
archivaConfig.getConfiguration(), config );
-        
+
         archivaConfigControl.replay();
-        
+
         SearchResults results = search.search( "user", selectedRepos, "org", 
limits );
-        
+
         archivaConfigControl.verify();
-        
+
         assertNotNull( results );
         assertEquals( 1, results.getTotalHits() );
-        
+
         archivaConfigControl.reset();
-        
+
         // page 2
         limits = new SearchResultLimits( 2 );
-        limits.setPageSize( 1 );   
-        
+        limits.setPageSize( 1 );
+
         archivaConfigControl.expectAndReturn( 
archivaConfig.getConfiguration(), config );
-        
+
         archivaConfigControl.replay();
-        
+
         results = search.search( "user", selectedRepos, "org", limits );
-        
+
         archivaConfigControl.verify();
-        
+
         assertNotNull( results );
         assertEquals( 1, results.getTotalHits() );
     }
-    
+
     public void testArtifactFoundInMultipleRepositories()
         throws Exception
     {
+        List<File> files = new ArrayList<File>();
+        files.add( new File( getBasedir(), "/target/test-classes/" + 
TEST_REPO_2 +
+            "/org/apache/archiva/archiva-search/1.0/archiva-search-1.0.jar" ) 
);
+        files.add( new File( getBasedir(), "/target/test-classes/" + 
TEST_REPO_2 +
+            "/org/apache/archiva/archiva-search/1.1/archiva-search-1.1.jar" ) 
);
+        createIndex( TEST_REPO_2, files );
+
+        List<String> selectedRepos = new ArrayList<String>();
+        selectedRepos.add( TEST_REPO_1 );
+        selectedRepos.add( TEST_REPO_2 );
+
+        config.addManagedRepository( createRepositoryConfig( TEST_REPO_2 ) );
+
+        archivaConfigControl.expectAndReturn( 
archivaConfig.getConfiguration(), config, 2 );
+
+        archivaConfigControl.replay();
+
+        SearchResults results = search.search( "user", selectedRepos, 
"archiva-search", null );
+
+        archivaConfigControl.verify();
+
+        assertNotNull( results );
+        assertEquals( 1, results.getTotalHits() );
+
+        SearchResultHit hit = results.getHits().get( 0 );
+        assertEquals( "org.apache.archiva", hit.getGroupId() );
+        assertEquals( "archiva-search", hit.getArtifactId() );
+        assertEquals( 2, hit.getVersions().size() );
+        assertTrue( hit.getVersions().contains( "1.0" ) );
+        assertTrue( hit.getVersions().contains( "1.1" ) );
+
+        archivaConfigControl.reset();
+
+        FileUtils.deleteDirectory( new File( getBasedir(), 
"/target/test-classes/" + TEST_REPO_2 + "/.indexer" ) );
+        assertFalse( new File( getBasedir(), "/target/test-classes/" + 
TEST_REPO_2 + "/.indexer" ).exists() );
+
         // there should be no duplicates in the search result hit
         // TODO: [BROWSE] in artifact info from browse, display all the 
repositories where the artifact is found
     }
-    
+
     public void testNoMatchFound()
-        throws Exception 
+        throws Exception
     {
-    
+
     }
-    
+
     public void testNoIndexFound()
         throws Exception
     {
-    
+
     }
-    
+
     public void testSearchWithinSearchResults()
         throws Exception
     {
-    
+
     }
-    
+
     public void testAdvancedSearch()
         throws Exception
     {
-    
-    }
-    
-    public void testPagination()
-        throws Exception
-    {
-    
+
     }
-    
+
 }

Added: 
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo-2/org/apache/archiva/archiva-search/1.0/archiva-search-1.0.jar
URL: 
http://svn.apache.org/viewvc/archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo-2/org/apache/archiva/archiva-search/1.0/archiva-search-1.0.jar?rev=738791&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo-2/org/apache/archiva/archiva-search/1.0/archiva-search-1.0.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: 
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo-2/org/apache/archiva/archiva-search/1.0/archiva-search-1.0.pom
URL: 
http://svn.apache.org/viewvc/archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo-2/org/apache/archiva/archiva-search/1.0/archiva-search-1.0.pom?rev=738791&view=auto
==============================================================================
--- 
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo-2/org/apache/archiva/archiva-search/1.0/archiva-search-1.0.pom
 (added)
+++ 
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo-2/org/apache/archiva/archiva-search/1.0/archiva-search-1.0.pom
 Thu Jan 29 08:06:44 2009
@@ -0,0 +1,28 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.archiva</groupId>
+  <artifactId>archiva-search</artifactId>
+  <packaging>jar</packaging>
+  <version>1.0</version>
+  <name>Archiva Search</name>
+  <url>http://archiva.apache.org</url>
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.1</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>commons-lang</groupId>
+      <artifactId>commons-lang</artifactId>
+      <version>2.3</version>
+    </dependency>
+    <dependency>
+      <groupId>log4j</groupId>
+      <artifactId>log4j</artifactId>
+      <version>1.2.8</version>
+    </dependency>
+  </dependencies>
+</project>

Added: 
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo-2/org/apache/archiva/archiva-search/1.1/archiva-search-1.1.jar
URL: 
http://svn.apache.org/viewvc/archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo-2/org/apache/archiva/archiva-search/1.1/archiva-search-1.1.jar?rev=738791&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo-2/org/apache/archiva/archiva-search/1.1/archiva-search-1.1.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: 
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo-2/org/apache/archiva/archiva-search/1.1/archiva-search-1.1.pom
URL: 
http://svn.apache.org/viewvc/archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo-2/org/apache/archiva/archiva-search/1.1/archiva-search-1.1.pom?rev=738791&view=auto
==============================================================================
--- 
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo-2/org/apache/archiva/archiva-search/1.1/archiva-search-1.1.pom
 (added)
+++ 
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo-2/org/apache/archiva/archiva-search/1.1/archiva-search-1.1.pom
 Thu Jan 29 08:06:44 2009
@@ -0,0 +1,28 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.archiva</groupId>
+  <artifactId>archiva-search</artifactId>
+  <packaging>jar</packaging>
+  <version>1.1</version>
+  <name>Archiva Search</name>
+  <url>http://archiva.apache.org</url>
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.1</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>commons-lang</groupId>
+      <artifactId>commons-lang</artifactId>
+      <version>2.3</version>
+    </dependency>
+    <dependency>
+      <groupId>log4j</groupId>
+      <artifactId>log4j</artifactId>
+      <version>1.2.8</version>
+    </dependency>
+  </dependencies>
+</project>


Reply via email to