blob: 6b1fbcd07b840d829f12221591a2a2776085ba7e [file] [log] [blame]
Index: lucene/test-framework/src/java/org/apache/lucene/index/MockRandomMergePolicy.java
===================================================================
--- lucene/test-framework/src/java/org/apache/lucene/index/MockRandomMergePolicy.java (revision 1592642)
+++ lucene/test-framework/src/java/org/apache/lucene/index/MockRandomMergePolicy.java (working copy)
@@ -64,7 +64,7 @@
// TODO: sometimes make more than 1 merge?
mergeSpec = new MergeSpecification();
final int segsToMerge = TestUtil.nextInt(random, 1, numSegments);
- mergeSpec.add(new OneMerge(segments.subList(0, segsToMerge)));
+ mergeSpec.add(new MockRandomOneMerge(segments.subList(0, segsToMerge),random.nextLong()));
}
return mergeSpec;
@@ -93,7 +93,7 @@
while(upto < eligibleSegments.size()) {
int max = Math.min(10, eligibleSegments.size()-upto);
int inc = max <= 2 ? max : TestUtil.nextInt(random, 2, max);
- mergeSpec.add(new OneMerge(eligibleSegments.subList(upto, upto+inc)));
+ mergeSpec.add(new MockRandomOneMerge(eligibleSegments.subList(upto, upto+inc), random.nextLong()));
upto += inc;
}
}
@@ -122,4 +122,28 @@
// 80% of the time we create CFS:
return random.nextInt(5) != 1;
}
+
+ static class MockRandomOneMerge extends OneMerge {
+ final Random r;
+ ArrayList<AtomicReader> readers;
+
+ MockRandomOneMerge(List<SegmentCommitInfo> segments, long seed) {
+ super(segments);
+ r = new Random(seed);
+ }
+
+ @Override
+ public List<AtomicReader> getMergeReaders() throws IOException {
+ if (readers == null) {
+ readers = new ArrayList<AtomicReader>(super.getMergeReaders());
+ for (int i = 0; i < readers.size(); i++) {
+ // wrap it (e.g. prevent bulk merge etc)
+ if (r.nextInt(4) == 0) {
+ readers.set(i, new FilterAtomicReader(readers.get(i)));
+ }
+ }
+ }
+ return readers;
+ }
+ }
}