Author: cstamas
Date: Wed Jun 8 15:34:03 2011
New Revision: 1133434
URL: http://svn.apache.org/viewvc?rev=1133434&view=rev
Log:
Made UT extensible for various concurrent test cases.
Modified:
maven/indexer/trunk/indexer-core/src/test/java/org/apache/maven/index/ConcurrentUseTest.java
Modified:
maven/indexer/trunk/indexer-core/src/test/java/org/apache/maven/index/ConcurrentUseTest.java
URL:
http://svn.apache.org/viewvc/maven/indexer/trunk/indexer-core/src/test/java/org/apache/maven/index/ConcurrentUseTest.java?rev=1133434&r1=1133433&r2=1133434&view=diff
==============================================================================
---
maven/indexer/trunk/indexer-core/src/test/java/org/apache/maven/index/ConcurrentUseTest.java
(original)
+++
maven/indexer/trunk/indexer-core/src/test/java/org/apache/maven/index/ConcurrentUseTest.java
Wed Jun 8 15:34:03 2011
@@ -20,6 +20,7 @@ package org.apache.maven.index;
*/
import java.io.File;
+import java.io.IOException;
import java.util.concurrent.atomic.AtomicInteger;
import junit.framework.Assert;
@@ -27,6 +28,7 @@ import junit.framework.Assert;
import org.apache.lucene.search.Query;
import org.apache.maven.index.context.DefaultIndexingContext;
import org.apache.maven.index.context.IndexingContext;
+import org.apache.maven.index.expr.UserInputSearchExpression;
public class ConcurrentUseTest
extends AbstractNexusIndexerTest
@@ -52,6 +54,12 @@ public class ConcurrentUseTest
assertNotNull( context.getTimestamp() );
}
+ protected IndexUserThread createThread( final ArtifactInfo ai )
+ {
+ // we search and modify same context concurrently
+ return new IndexUserThread( this, nexusIndexer, context, context, ai );
+ }
+
public void testConcurrency()
throws Exception
{
@@ -62,7 +70,7 @@ public class ConcurrentUseTest
for ( int i = 0; i < THREAD_COUNT; i++ )
{
- threads[i] = new IndexUserThread( nexusIndexer, context, ai );
+ threads[i] = createThread( ai );
threads[i].start();
}
@@ -94,11 +102,51 @@ public class ConcurrentUseTest
//
- Query q = nexusIndexer.constructQuery( MAVEN.GROUP_ID, ai.groupId,
SearchType.SCORED );
+ Query q = nexusIndexer.constructQuery( MAVEN.GROUP_ID, new
UserInputSearchExpression( ai.groupId ) );
+
+ FlatSearchResponse result = nexusIndexer.searchFlat( new
FlatSearchRequest( q, context ) );
+
+ Assert.assertEquals( "All added should be found after final commit!",
totalAdded, result.getTotalHitsCount() );
+ }
+
+ // ==
+
+ private static final AtomicInteger versionSource = new AtomicInteger( 1 );
+
+ protected void addToIndex( final NexusIndexer nexusIndexer, final
IndexingContext indexingContext )
+ throws IOException
+ {
+ final ArtifactInfo artifactInfo =
+ new ArtifactInfo( "test-default", "org.apache.maven.indexer",
"index-concurrent-artifact", "1."
+ + String.valueOf( versionSource.getAndIncrement() ), null );
+
+ final ArtifactContext ac = new ArtifactContext( null, null, null,
artifactInfo, artifactInfo.calculateGav() );
+
+ nexusIndexer.addArtifactToIndex( ac, indexingContext );
+ }
+
+ protected void deleteFromIndex( final NexusIndexer nexusIndexer, final
IndexingContext indexingContext )
+ throws IOException
+ {
+ // TODO: delete some of those already added
+ // artifactInfo.version = "1." + String.valueOf(
versionSource.getAndIncrement() );
+ //
+ // ac = new ArtifactContext( null, null, null, artifactInfo,
artifactInfo.calculateGav() );
+ //
+ // nexusIndexer.deleteArtifactFromIndex( ac, indexingContext );
+ //
+ // deleted++;
+ }
+
+ protected int readIndex( final NexusIndexer nexusIndexer, final
IndexingContext indexingContext )
+ throws IOException
+ {
+ final Query q =
+ nexusIndexer.constructQuery( MAVEN.GROUP_ID, new
UserInputSearchExpression( "org.apache.maven.indexer" ) );
- FlatSearchResponse result = nexusIndexer.searchFlat( new
FlatSearchRequest( q ) );
+ FlatSearchResponse result = nexusIndexer.searchFlat( new
FlatSearchRequest( q, indexingContext ) );
- Assert.assertEquals( "All added should be found after final commit!",
totalAdded, result.getTotalHits() );
+ return result.getReturnedHitsCount();
}
// ==
@@ -106,11 +154,13 @@ public class ConcurrentUseTest
public static class IndexUserThread
extends Thread
{
- private static final AtomicInteger versionSource = new AtomicInteger(
1 );
+ private final ConcurrentUseTest test;
private final NexusIndexer nexusIndexer;
- private final IndexingContext indexingContext;
+ private final IndexingContext searchIndexingContext;
+
+ private final IndexingContext modifyIndexingContext;
private boolean stopped = false;
@@ -122,11 +172,17 @@ public class ConcurrentUseTest
private Throwable t;
- public IndexUserThread( NexusIndexer nexusIndexer, IndexingContext
indexingContext, ArtifactInfo artifactInfo )
+ public IndexUserThread( final ConcurrentUseTest test, final
NexusIndexer nexusIndexer,
+ final IndexingContext searchIndexingContext,
+ final IndexingContext modifyIndexingContext,
ArtifactInfo artifactInfo )
{
+ this.test = test;
+
this.nexusIndexer = nexusIndexer;
- this.indexingContext = indexingContext;
+ this.searchIndexingContext = searchIndexingContext;
+
+ this.modifyIndexingContext = modifyIndexingContext;
}
public int getAdded()
@@ -150,31 +206,22 @@ public class ConcurrentUseTest
}
public void stopThread()
+ throws IOException
{
+ this.modifyIndexingContext.commit();
+
this.stopped = true;
}
public void run()
{
- ArtifactInfo artifactInfo;
-
- ArtifactContext ac;
-
- Query q;
-
while ( !stopped )
{
if ( System.currentTimeMillis() % 5 == 0 )
{
try
{
- artifactInfo =
- new ArtifactInfo( "test-default",
"org.apache.maven.indexer", "index-concurrent-artifact",
- "1." + String.valueOf(
versionSource.getAndIncrement() ), null );
-
- ac = new ArtifactContext( null, null, null,
artifactInfo, artifactInfo.calculateGav() );
-
- nexusIndexer.addArtifactToIndex( ac, indexingContext );
+ test.addToIndex( nexusIndexer, modifyIndexingContext );
added++;
}
@@ -188,23 +235,22 @@ public class ConcurrentUseTest
if ( System.currentTimeMillis() % 11 == 0 )
{
- // TODO: delete some of those already added
- // artifactInfo.version = "1." + String.valueOf(
versionSource.getAndIncrement() );
- //
- // ac = new ArtifactContext( null, null, null,
artifactInfo, artifactInfo.calculateGav() );
- //
- // nexusIndexer.deleteArtifactFromIndex( ac,
indexingContext );
- //
- // deleted++;
+ try
+ {
+ // test.deleteFromIndex( nexusIndexer,
modifyIndexingContext );
+ // deleted++;
+ }
+ catch ( Throwable e )
+ {
+ t = e;
+
+ throw new IllegalStateException( "error", e );
+ }
}
try
{
- q = nexusIndexer.constructQuery( MAVEN.GROUP_ID,
"org.apache.maven.indexer", SearchType.SCORED );
-
- FlatSearchResponse result = nexusIndexer.searchFlat( new
FlatSearchRequest( q ) );
-
- lastSearchHitCount = result.getTotalHits();
+ lastSearchHitCount = test.readIndex( nexusIndexer,
searchIndexingContext );
}
catch ( Throwable e )
{