You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2010/11/29 22:01:19 UTC
svn commit: r1040290 - in
/lucene/dev/trunk/lucene/src/test/org/apache/lucene:
index/RandomIndexWriter.java search/BaseTestRangeFilter.java
store/MockDirectoryWrapper.java
Author: mikemccand
Date: Mon Nov 29 21:01:19 2010
New Revision: 1040290
URL: http://svn.apache.org/viewvc?rev=1040290&view=rev
Log:
fix false random test failure; make private random instance for RandomIndexWriter and MockDirWrapper so tests are reproducible from seeds when using eg CMS
Modified:
lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/RandomIndexWriter.java
lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/BaseTestRangeFilter.java
lucene/dev/trunk/lucene/src/test/org/apache/lucene/store/MockDirectoryWrapper.java
Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/RandomIndexWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/RandomIndexWriter.java?rev=1040290&r1=1040289&r2=1040290&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/RandomIndexWriter.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/RandomIndexWriter.java Mon Nov 29 21:01:19 2010
@@ -50,7 +50,10 @@ public class RandomIndexWriter implement
public MockIndexWriter(Random r,Directory dir, IndexWriterConfig conf) throws IOException {
super(dir, conf);
- this.r = r;
+ // must make a private random since our methods are
+ // called from different threads; else test failures may
+ // not be reproducible from the original seed
+ this.r = new Random(r.nextInt());
}
@Override
Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/BaseTestRangeFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/BaseTestRangeFilter.java?rev=1040290&r1=1040289&r2=1040290&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/BaseTestRangeFilter.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/BaseTestRangeFilter.java Mon Nov 29 21:01:19 2010
@@ -127,20 +127,43 @@ public class BaseTestRangeFilter extends
doc.add(idField);
doc.add(randField);
doc.add(bodyField);
-
- for (int d = minId; d <= maxId; d++) {
- idField.setValue(pad(d));
- int r = index.allowNegativeRandomInts ? random.nextInt() : random
+
+ int minCount = 0;
+ int maxCount = 0;
+
+ while(true) {
+
+ for (int d = minId; d <= maxId; d++) {
+ idField.setValue(pad(d));
+ int r = index.allowNegativeRandomInts ? random.nextInt() : random
.nextInt(Integer.MAX_VALUE);
- if (index.maxR < r) {
- index.maxR = r;
+ if (index.maxR < r) {
+ index.maxR = r;
+ maxCount = 1;
+ } else if (index.maxR == r) {
+ maxCount++;
+ }
+
+ if (r < index.minR) {
+ index.minR = r;
+ minCount = 1;
+ } else if (r == index.minR) {
+ minCount++;
+ }
+ randField.setValue(pad(r));
+ bodyField.setValue("body");
+ writer.addDocument(doc);
}
- if (r < index.minR) {
- index.minR = r;
+
+ if (minCount == 1 && maxCount == 1) {
+ // our subclasses rely on only 1 doc having the min or
+ // max, so, we loop until we satisfy that. it should be
+ // exceedingly rare (Yonik calculates 1 in ~429,000)
+ // times) that this loop requires more than one try:
+ break;
}
- randField.setValue(pad(r));
- bodyField.setValue("body");
- writer.addDocument(doc);
+
+ // try again
}
IndexReader ir = writer.getReader();
Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/store/MockDirectoryWrapper.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/store/MockDirectoryWrapper.java?rev=1040290&r1=1040289&r2=1040290&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/store/MockDirectoryWrapper.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/store/MockDirectoryWrapper.java Mon Nov 29 21:01:19 2010
@@ -80,7 +80,10 @@ public class MockDirectoryWrapper extend
public MockDirectoryWrapper(Random random, Directory delegate) {
this.delegate = delegate;
- this.randomState = random;
+ // must make a private random since our methods are
+ // called from different threads; else test failures may
+ // not be reproducible from the original seed
+ this.randomState = new Random(random.nextInt());
init();
}