You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by us...@apache.org on 2012/02/21 14:29:23 UTC
svn commit: r1291772 -
/lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java
Author: uschindler
Date: Tue Feb 21 13:29:23 2012
New Revision: 1291772
URL: http://svn.apache.org/viewvc?rev=1291772&view=rev
Log:
Improve test coverage on IndexReaders by more fancy wrapping (completely random)
Modified:
lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java
Modified: lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java?rev=1291772&r1=1291771&r2=1291772&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java (original)
+++ lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java Tue Feb 21 13:29:23 2012
@@ -55,6 +55,8 @@ import org.apache.lucene.document.Field;
import org.apache.lucene.document.FieldType;
import org.apache.lucene.index.AtomicReader;
import org.apache.lucene.index.CompositeReader;
+import org.apache.lucene.index.FilterAtomicReader;
+import org.apache.lucene.index.Fields;
import org.apache.lucene.index.MultiReader;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
@@ -1344,6 +1346,41 @@ public abstract class LuceneTestCase ext
throw new RuntimeException(e);
}
}
+
+ /** Sometimes wrap the IndexReader as slow, parallel or filter reader (or combinations of that) */
+ public static IndexReader maybeWrapReader(IndexReader r) throws IOException {
+ if (rarely()) {
+ for (int i = 0, c = random.nextInt(6)+1; i < c; i++) {
+ switch(random.nextInt(4)) {
+ case 0:
+ r = SlowCompositeReaderWrapper.wrap(r);
+ break;
+ case 1:
+ r = (r instanceof AtomicReader) ?
+ new ParallelAtomicReader((AtomicReader) r) :
+ new ParallelCompositeReader((CompositeReader) r);
+ break;
+ case 2:
+ r = new MultiReader(r);
+ break;
+ case 3:
+ if (r instanceof AtomicReader) {
+ r = new FilterAtomicReader((AtomicReader) r) {
+ @Override
+ public Fields fields() throws IOException {
+ return new FilterFields(super.fields());
+ }
+ };
+ }
+ break;
+ default:
+ fail("should not get here");
+ }
+ }
+ }
+ //System.out.println(r);
+ return r;
+ }
/** create a new searcher over the reader.
* This searcher might randomly use threads. */
@@ -1358,18 +1395,8 @@ public abstract class LuceneTestCase ext
*/
public static IndexSearcher newSearcher(IndexReader r, boolean maybeWrap) throws IOException {
if (usually()) {
- if (maybeWrap && rarely()) {
- r = SlowCompositeReaderWrapper.wrap(r);
- }
- if (maybeWrap && rarely()) {
- // just wrap as MultiReader/ParallelXReader with one subreader
- if (random.nextBoolean()) {
- r = (r instanceof AtomicReader) ?
- new ParallelAtomicReader((AtomicReader) r) :
- new ParallelCompositeReader((CompositeReader) r);
- } else if (r instanceof CompositeReader) { // only wrap if not already atomic (some tests may fail)
- r = new MultiReader(r);
- }
+ if (maybeWrap) {
+ r = maybeWrapReader(r);
}
IndexSearcher ret = random.nextBoolean() ? new AssertingIndexSearcher(random, r) : new AssertingIndexSearcher(random, r.getTopReaderContext());
ret.setSimilarity(similarity);