[MRM-749]

o added more tests
o remove indexing contexts after search


git-svn-id: https://svn.apache.org/repos/asf/archiva/branches/archiva-nexus-indexer@738801 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Maria Odea B. Ching 2009-01-29 08:47:52 +00:00
parent 64340c8930
commit 5d406d71dc
2 changed files with 51 additions and 11 deletions

View File

@ -86,11 +86,11 @@ public class NexusRepositorySearch
FlatSearchRequest request = new FlatSearchRequest( q );
FlatSearchResponse response = indexer.searchFlat( request );
if( response == null )
if( response == null || response.getTotalHits() == 0 )
{
return new SearchResults();
}
return convertToSearchResults( response, limits );
}
catch ( IndexContextInInconsistentStateException e )
@ -101,6 +101,24 @@ public class NexusRepositorySearch
{
throw new RepositorySearchException( e );
}
finally
{
Map<String, IndexingContext> indexingContexts = indexer.getIndexingContexts();
Set<String> keys = indexingContexts.keySet();
for( String key : keys )
{
try
{
indexer.removeIndexingContext( indexingContexts.get( key ), false );
log.debug( "Indexing context '" + key + "' removed from search." );
}
catch ( IOException e )
{
log.warn( "IOException occurred while removing indexing content '" + key + "'." );
continue;
}
}
}
}
public SearchResults search( String principal, SearchFields searchFields, SearchResultLimits limits )
@ -143,14 +161,12 @@ public class NexusRepositorySearch
}
}
catch ( UnsupportedExistingLuceneIndexException e )
{
// skip repository
{
log.warn( "Error accessing index of repository '" + repo + "' : " + e.getMessage() );
continue;
}
catch ( IOException e )
{
// skip repository
{
log.warn( "IO error occured while accessing index of repository '" + repo + "' : " + e.getMessage() );
continue;
}

View File

@ -137,12 +137,14 @@ public class NexusRepositorySearchTest
}
indexerEngine.endIndexing( context );
indexer.removeIndexingContext( context, false );
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_1 );
@ -182,7 +184,7 @@ public class NexusRepositorySearchTest
public void testQuickSearchWithPagination()
throws Exception
{
{
List<String> selectedRepos = new ArrayList<String>();
selectedRepos.add( TEST_REPO_1 );
@ -258,32 +260,54 @@ public class NexusRepositorySearchTest
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
{
List<String> selectedRepos = new ArrayList<String>();
selectedRepos.add( TEST_REPO_1 );
archivaConfigControl.expectAndReturn( archivaConfig.getConfiguration(), config );
archivaConfigControl.replay();
SearchResults results = search.search( "user", selectedRepos, "dfghdfkweriuasndsaie", null );
archivaConfigControl.verify();
assertNotNull( results );
assertEquals( 0, results.getTotalHits() );
}
public void testNoIndexFound()
throws Exception
{
List<String> selectedRepos = new ArrayList<String>();
selectedRepos.add( "non-existing-repo" );
archivaConfigControl.expectAndReturn( archivaConfig.getConfiguration(), config );
archivaConfigControl.replay();
SearchResults results = search.search( "user", selectedRepos, "org.apache.archiva", null );
assertNotNull( results );
assertEquals( 0, results.getTotalHits() );
archivaConfigControl.verify();
}
public void testSearchWithinSearchResults()
throws Exception
{
}
public void testAdvancedSearch()
throws Exception
{
}
}