blob: 11f671a62872da42f32a4f4c268c02f81d9f4057 [file] [log] [blame]
package org.apache.maven.index.updater;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.maven.index.AbstractIndexCreatorHelper;
import org.apache.maven.index.ArtifactContext;
import org.apache.maven.index.ArtifactInfo;
import org.apache.maven.index.IteratorSearchRequest;
import org.apache.maven.index.IteratorSearchResponse;
import org.apache.maven.index.MAVEN;
import org.apache.maven.index.NexusIndexer;
import org.apache.maven.index.SearchType;
import org.apache.maven.index.artifact.Gav;
import org.apache.maven.index.context.IndexingContext;
import org.apache.maven.index.packer.IndexPacker;
import org.apache.maven.index.packer.IndexPackingRequest;
import org.codehaus.plexus.util.FileUtils;
public abstract class AbstractIndexUpdaterTest
extends AbstractIndexCreatorHelper
{
File testBasedir;
File repoDir;
File indexDir;
String repositoryId = "test";
String repositoryUrl = "http://repo1.maven.org/maven2/";
NexusIndexer indexer;
IndexUpdater updater;
IndexPacker packer;
IndexingContext context;
@Override
protected void setUp()
throws Exception
{
super.setUp();
testBasedir = new File( getBasedir(), "/target/indexUpdater" );
testBasedir.mkdirs();
repoDir = new File( getBasedir(), "/target/indexUpdaterRepoDir" );
repoDir.mkdirs();
indexDir = super.getDirectory( "indexerUpdater" );
indexDir.mkdirs();
indexer = lookup( NexusIndexer.class );
updater = lookup( IndexUpdater.class );
packer = lookup( IndexPacker.class );
context =
indexer.addIndexingContext( repositoryId, repositoryId, repoDir, indexDir, repositoryUrl, null,
MIN_CREATORS );
}
@Override
protected void tearDown()
throws Exception
{
super.tearDown();
// this one closes it too
indexer.removeIndexingContext( context, true );
FileUtils.forceDelete( testBasedir );
FileUtils.forceDelete( repoDir );
FileUtils.forceDelete( indexDir );
}
protected ArtifactContext createArtifactContext( String repositoryId, String groupId, String artifactId,
String version, String classifier )
{
String path = createPath( groupId, artifactId, version, classifier );
File pomFile = new File( path + ".pom" );
File artifact = new File( path + ".jar" );
File metadata = null;
ArtifactInfo artifactInfo = new ArtifactInfo( repositoryId, groupId, artifactId, version, classifier, "jar");
Gav gav =
new Gav( groupId, artifactId, version, classifier, "jar", null, null, artifact.getName(), false,
null, false, null );
return new ArtifactContext( pomFile, artifact, metadata, artifactInfo, gav );
}
protected String createPath( String groupId, String artifactId, String version, String classifier )
{
return "/" + groupId + "/" + artifactId + "/" + version + "/" + artifactId + "-" + version
+ ( classifier == null ? "" : "-" + classifier );
}
protected void packIndex( File targetDir, IndexingContext context )
throws IllegalArgumentException, IOException
{
final IndexSearcher indexSearcher = context.acquireIndexSearcher();
try
{
IndexPackingRequest request = new IndexPackingRequest( context, indexSearcher.getIndexReader(), targetDir );
request.setUseTargetProperties( true );
packer.packIndex( request );
} finally
{
context.releaseIndexSearcher( indexSearcher );
}
}
protected void searchFor( String groupId, int expected, IndexingContext context )
throws IOException, Exception
{
Query q = indexer.constructQuery( MAVEN.GROUP_ID, groupId, SearchType.EXACT );
IteratorSearchRequest req;
if ( context != null )
{
req = new IteratorSearchRequest( q, context );
}
else
{
req = new IteratorSearchRequest( q );
}
IteratorSearchResponse response = indexer.searchIterator( req );
ArrayList<ArtifactInfo> ais = new ArrayList<>( response.getTotalHits() );
for ( ArtifactInfo ai : response )
{
ais.add( ai );
}
assertEquals( ais.toString(), expected, ais.size() );
}
}