ソースを参照

[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
archiva-nexus-indexer
Maria Odea B. Ching 15年前
コミット
5d406d71dc

+ 22
- 6
archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/NexusRepositorySearch.java ファイルの表示

@@ -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;
}

+ 29
- 5
archiva-modules/archiva-base/archiva-indexer/src/test/java/org/apache/archiva/indexer/search/NexusRepositorySearchTest.java ファイルの表示

@@ -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
{
}

}

読み込み中…
キャンセル
保存