fix index optimize default index location

optimize io in search rest service unit test

git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1171043 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Olivier Lamy 2011-09-15 10:44:52 +00:00
parent 7c1ab2042a
commit 92f181109d
4 changed files with 39 additions and 47 deletions

View File

@ -24,9 +24,9 @@ import org.apache.archiva.admin.model.managed.ManagedRepository;
import org.apache.archiva.common.plexusbridge.MavenIndexerUtils;
import org.apache.archiva.common.plexusbridge.PlexusSisuBridge;
import org.apache.archiva.common.plexusbridge.PlexusSisuBridgeException;
import org.apache.commons.lang.StringUtils;
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.BooleanQuery;
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
import org.apache.maven.index.ArtifactContext;
import org.apache.maven.index.ArtifactContextProducer;
import org.apache.maven.index.DefaultArtifactContextProducer;
@ -58,7 +58,6 @@ import java.util.List;
* ArchivaIndexingTaskExecutor Executes all indexing tasks. Adding, updating and removing artifacts from the index are
* all performed by this executor. Add and update artifact in index tasks are added in the indexing task queue by the
* NexusIndexerConsumer while remove artifact from index tasks are added by the LuceneCleanupRemoveIndexedConsumer.
*
*/
@Service( "taskExecutor#indexing" )
public class ArchivaIndexingTaskExecutor
@ -239,9 +238,11 @@ public class ArchivaIndexingTaskExecutor
context.optimize();
File managedRepository = new File( repository.getLocation() );
final File indexLocation = new File( managedRepository, ".index" );
String indexDirectory = repository.getIndexDirectory();
final File indexLocation = StringUtils.isBlank( indexDirectory )
? new File( managedRepository, ".indexer" )
: new File( indexDirectory );
IndexPackingRequest request = new IndexPackingRequest( context, indexLocation );
indexPacker.packIndex( request );

View File

@ -253,7 +253,7 @@ public class ArchivaIndexingTaskExecutorTest
Occur.SHOULD );
assertTrue( new File( repositoryConfig.getLocation(), ".indexer" ).exists() );
assertTrue( new File( repositoryConfig.getLocation(), ".index" ).exists() );
assertFalse( new File( repositoryConfig.getLocation(), ".index" ).exists() );
flatSearchRequest = new FlatSearchRequest( q, getIndexingContext() );
@ -286,11 +286,10 @@ public class ArchivaIndexingTaskExecutorTest
indexingExecutor.executeTask( task );
assertTrue( new File( repositoryConfig.getLocation(), ".indexer" ).exists() );
assertTrue( new File( repositoryConfig.getLocation(), ".index" ).exists() );
// unpack .zip index
File destDir = new File( repositoryConfig.getLocation(), ".index/tmp" );
unzipIndex( new File( repositoryConfig.getLocation(), ".index" ).getPath(), destDir.getPath() );
File destDir = new File( repositoryConfig.getLocation(), ".indexer/tmp" );
unzipIndex( new File( repositoryConfig.getLocation(), ".indexer" ).getPath(), destDir.getPath() );
BooleanQuery q = new BooleanQuery();
q.add( indexer.constructQuery( MAVEN.GROUP_ID, new StringSearchExpression( "org.apache.archiva" ) ),

View File

@ -248,7 +248,6 @@
<systemPropertyVariables>
<plexus.home>${project.build.outputDirectory}</plexus.home>
<appserver.base>${basedir}/target/appserver-base</appserver.base>
<targetDir>${basedir}/target/</targetDir>
</systemPropertyVariables>
</configuration>
</plugin>

View File

@ -23,7 +23,6 @@ import org.apache.archiva.rest.api.model.ManagedRepository;
import org.apache.archiva.rest.api.model.SearchRequest;
import org.apache.archiva.rest.api.services.ManagedRepositoriesService;
import org.apache.archiva.rest.api.services.SearchService;
import org.apache.commons.io.FileUtils;
import org.junit.Test;
import java.io.File;
@ -146,7 +145,6 @@ public class SearchServiceTest
assertTrue(
" not 1 results for Bundle Symbolic Name org.apache.karaf.features.command but " + artifacts.size() + ":"
+ artifacts, artifacts.size() == 1 );
log.info( "artifacts for commons-logging size {} search {}", artifacts.size(), artifacts );
deleteTestRepo( testRepoId, targetRepo );
}
@ -176,7 +174,34 @@ public class SearchServiceTest
assertTrue(
" not 2 results for Bundle Symbolic Name org.apache.karaf.features.core but " + artifacts.size() + ":"
+ artifacts, artifacts.size() == 2 );
log.info( "artifacts for commons-logging size {} search {}", artifacts.size(), artifacts );
deleteTestRepo( testRepoId, targetRepo );
}
@Test
public void searchWithSearchRequestExportPackageOneVersion()
throws Exception
{
String testRepoId = "test-repo";
// force guest user creation if not exists
if ( getUserService( authorizationHeader ).getGuestUser() == null )
{
assertNotNull( getUserService( authorizationHeader ).createGuestUser() );
}
File targetRepo = createAndIndexRepo( testRepoId );
SearchService searchService = getSearchService( authorizationHeader );
SearchRequest searchRequest = new SearchRequest();
searchRequest.setBundleExportPackage( "org.apache.karaf.features.command.completers" );
List<Artifact> artifacts = searchService.searchArtifacts( searchRequest );
assertNotNull( artifacts );
assertTrue( " not 1 results for Bundle ExportPackage org.apache.karaf.features.command.completers but "
+ artifacts.size() + ":" + artifacts, artifacts.size() == 1 );
deleteTestRepo( testRepoId, targetRepo );
}
@ -188,19 +213,14 @@ public class SearchServiceTest
{
getManagedRepositoriesService( authorizationHeader ).deleteManagedRepository( testRepoId, true );
}
File targetRepo = new File( System.getProperty( "targetDir", "./target" ), "test-repo" );
cleanupFiles( targetRepo );
File sourceRepo = new File( "src/test/repo-with-osgi" );
FileUtils.copyDirectory( sourceRepo, targetRepo );
File targetRepo = new File( "src/test/repo-with-osgi" );
ManagedRepository managedRepository = new ManagedRepository();
managedRepository.setId( testRepoId );
managedRepository.setName( "test repo" );
managedRepository.setLocation( targetRepo.getPath() );
managedRepository.setIndexDirectory( targetRepo.getPath() + "/index-" + Long.toString( new Date().getTime() ) );
managedRepository.setIndexDirectory( "target/.index-" + Long.toString( new Date().getTime() ) );
ManagedRepositoriesService service = getManagedRepositoriesService( authorizationHeader );
service.addManagedRepository( managedRepository );
@ -215,39 +235,12 @@ public class SearchServiceTest
{
if ( getManagedRepositoriesService( authorizationHeader ).getManagedRepository( id ) != null )
{
getManagedRepositoriesService( authorizationHeader ).deleteManagedRepository( id, true );
}
cleanupFiles( targetRepo );
}
private void cleanupFiles( File targetRepo )
throws Exception
{
File indexerDir = new File( targetRepo, ".indexer" );
if ( targetRepo.exists() )
{
FileUtils.deleteDirectory( targetRepo );
}
if ( indexerDir.exists() )
{
FileUtils.deleteDirectory( indexerDir );
}
File lockFile = new File( indexerDir, "write.lock" );
if ( lockFile.exists() )
{
FileUtils.forceDelete( lockFile );
}
assertFalse( targetRepo.exists() );
assertFalse( indexerDir.exists() );
assertFalse( lockFile.exists() );
getManagedRepositoriesService( authorizationHeader ).deleteManagedRepository( id, false );
}
}
}