LUCENE-3021: randomize skipInterval in tests

git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1091408 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Robert Muir 2011-04-12 13:36:57 +00:00
parent ad8926cc61
commit 35d1d369f5
3 changed files with 27 additions and 8 deletions

View File

@ -69,12 +69,13 @@ public final class SepPostingsWriterImpl extends PostingsWriterBase {
* smaller indexes, greater acceleration, but fewer accelerable cases, while * smaller indexes, greater acceleration, but fewer accelerable cases, while
* smaller values result in bigger indexes, less acceleration and more * smaller values result in bigger indexes, less acceleration and more
* accelerable cases. More detailed experiments would be useful here. */ * accelerable cases. More detailed experiments would be useful here. */
final int skipInterval = 16; final int skipInterval;
static final int DEFAULT_SKIP_INTERVAL = 16;
/** /**
* Expert: minimum docFreq to write any skip data at all * Expert: minimum docFreq to write any skip data at all
*/ */
final int skipMinimum = skipInterval; final int skipMinimum;
/** Expert: The maximum number of skip levels. Smaller values result in /** Expert: The maximum number of skip levels. Smaller values result in
* slightly smaller indexes, but slower skipping in big posting lists. * slightly smaller indexes, but slower skipping in big posting lists.
@ -102,8 +103,13 @@ public final class SepPostingsWriterImpl extends PostingsWriterBase {
private final RAMOutputStream indexBytesWriter = new RAMOutputStream(); private final RAMOutputStream indexBytesWriter = new RAMOutputStream();
public SepPostingsWriterImpl(SegmentWriteState state, IntStreamFactory factory) throws IOException { public SepPostingsWriterImpl(SegmentWriteState state, IntStreamFactory factory) throws IOException {
super(); this(state, factory, DEFAULT_SKIP_INTERVAL);
}
public SepPostingsWriterImpl(SegmentWriteState state, IntStreamFactory factory, int skipInterval) throws IOException {
super();
this.skipInterval = skipInterval;
this.skipMinimum = skipInterval; /* set to the same for now */
final String docFileName = IndexFileNames.segmentFileName(state.segmentName, state.codecId, DOC_EXTENSION); final String docFileName = IndexFileNames.segmentFileName(state.segmentName, state.codecId, DOC_EXTENSION);
docOut = factory.createOutput(state.directory, docFileName); docOut = factory.createOutput(state.directory, docFileName);
docIndex = docOut.index(); docIndex = docOut.index();

View File

@ -50,12 +50,13 @@ public final class StandardPostingsWriter extends PostingsWriterBase {
* smaller indexes, greater acceleration, but fewer accelerable cases, while * smaller indexes, greater acceleration, but fewer accelerable cases, while
* smaller values result in bigger indexes, less acceleration and more * smaller values result in bigger indexes, less acceleration and more
* accelerable cases. More detailed experiments would be useful here. */ * accelerable cases. More detailed experiments would be useful here. */
final int skipInterval = 16; static final int DEFAULT_SKIP_INTERVAL = 16;
final int skipInterval;
/** /**
* Expert: minimum docFreq to write any skip data at all * Expert: minimum docFreq to write any skip data at all
*/ */
final int skipMinimum = skipInterval; final int skipMinimum;
/** Expert: The maximum number of skip levels. Smaller values result in /** Expert: The maximum number of skip levels. Smaller values result in
* slightly smaller indexes, but slower skipping in big posting lists. * slightly smaller indexes, but slower skipping in big posting lists.
@ -82,7 +83,12 @@ public final class StandardPostingsWriter extends PostingsWriterBase {
private RAMOutputStream bytesWriter = new RAMOutputStream(); private RAMOutputStream bytesWriter = new RAMOutputStream();
public StandardPostingsWriter(SegmentWriteState state) throws IOException { public StandardPostingsWriter(SegmentWriteState state) throws IOException {
this(state, DEFAULT_SKIP_INTERVAL);
}
public StandardPostingsWriter(SegmentWriteState state, int skipInterval) throws IOException {
super(); super();
this.skipInterval = skipInterval;
this.skipMinimum = skipInterval; /* set to the same for now */
//this.segment = state.segmentName; //this.segment = state.segmentName;
String fileName = IndexFileNames.segmentFileName(state.segmentName, state.codecId, StandardCodec.FREQ_EXTENSION); String fileName = IndexFileNames.segmentFileName(state.segmentName, state.codecId, StandardCodec.FREQ_EXTENSION);
freqOut = state.directory.createOutput(fileName); freqOut = state.directory.createOutput(fileName);

View File

@ -120,7 +120,14 @@ public class MockRandomCodec extends Codec {
@Override @Override
public FieldsConsumer fieldsConsumer(SegmentWriteState state) throws IOException { public FieldsConsumer fieldsConsumer(SegmentWriteState state) throws IOException {
// we pull this before the seed intentionally: because its not consumed at runtime
// (the skipInterval is written into postings header)
int skipInterval = _TestUtil.nextInt(seedRandom, 2, 64);
if (LuceneTestCase.VERBOSE) {
System.out.println("MockRandomCodec: skipInterval=" + skipInterval);
}
final long seed = seedRandom.nextLong(); final long seed = seedRandom.nextLong();
if (LuceneTestCase.VERBOSE) { if (LuceneTestCase.VERBOSE) {
@ -136,12 +143,12 @@ public class MockRandomCodec extends Codec {
PostingsWriterBase postingsWriter; PostingsWriterBase postingsWriter;
if (random.nextBoolean()) { if (random.nextBoolean()) {
postingsWriter = new SepPostingsWriterImpl(state, new MockIntStreamFactory(random)); postingsWriter = new SepPostingsWriterImpl(state, new MockIntStreamFactory(random), skipInterval);
} else { } else {
if (LuceneTestCase.VERBOSE) { if (LuceneTestCase.VERBOSE) {
System.out.println("MockRandomCodec: writing Standard postings"); System.out.println("MockRandomCodec: writing Standard postings");
} }
postingsWriter = new StandardPostingsWriter(state); postingsWriter = new StandardPostingsWriter(state, skipInterval);
} }
if (random.nextBoolean()) { if (random.nextBoolean()) {