You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2014/05/08 21:09:32 UTC
svn commit: r1593383 - in
/lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene:
index/RandomIndexWriter.java util/LuceneTestCase.java
Author: rmuir
Date: Thu May 8 19:09:32 2014
New Revision: 1593383
URL: http://svn.apache.org/r1593383
Log:
live setters will be tested or die
Modified:
lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/index/RandomIndexWriter.java
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/index/RandomIndexWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/index/RandomIndexWriter.java?rev=1593383&r1=1593382&r2=1593383&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/index/RandomIndexWriter.java (original)
+++ lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/index/RandomIndexWriter.java Thu May 8 19:09:32 2014
@@ -105,10 +105,12 @@ public class RandomIndexWriter implement
* @see IndexWriter#addDocument(org.apache.lucene.index.IndexDocument)
*/
public <T extends IndexableField> void addDocument(final IndexDocument doc) throws IOException {
+ LuceneTestCase.maybeChangeLiveIndexWriterConfig(r, w.getConfig());
addDocument(doc, w.getAnalyzer());
}
public <T extends IndexableField> void addDocument(final IndexDocument doc, Analyzer a) throws IOException {
+ LuceneTestCase.maybeChangeLiveIndexWriterConfig(r, w.getConfig());
if (r.nextInt(5) == 3) {
// TODO: maybe, we should simply buffer up added docs
// (but we need to clone them), and only when
@@ -150,6 +152,7 @@ public class RandomIndexWriter implement
}
private void maybeCommit() throws IOException {
+ LuceneTestCase.maybeChangeLiveIndexWriterConfig(r, w.getConfig());
if (docCount++ == flushAt) {
if (LuceneTestCase.VERBOSE) {
System.out.println("RIW.add/updateDocument: now doing a commit at docCount=" + docCount);
@@ -164,11 +167,13 @@ public class RandomIndexWriter implement
}
public void addDocuments(Iterable<? extends IndexDocument> docs) throws IOException {
+ LuceneTestCase.maybeChangeLiveIndexWriterConfig(r, w.getConfig());
w.addDocuments(docs);
maybeCommit();
}
public void updateDocuments(Term delTerm, Iterable<? extends IndexDocument> docs) throws IOException {
+ LuceneTestCase.maybeChangeLiveIndexWriterConfig(r, w.getConfig());
w.updateDocuments(delTerm, docs);
maybeCommit();
}
@@ -178,6 +183,7 @@ public class RandomIndexWriter implement
* @see IndexWriter#updateDocument(Term, org.apache.lucene.index.IndexDocument)
*/
public <T extends IndexableField> void updateDocument(Term t, final IndexDocument doc) throws IOException {
+ LuceneTestCase.maybeChangeLiveIndexWriterConfig(r, w.getConfig());
if (r.nextInt(5) == 3) {
w.updateDocuments(t, new Iterable<IndexDocument>() {
@@ -214,30 +220,37 @@ public class RandomIndexWriter implement
}
public void addIndexes(Directory... dirs) throws IOException {
+ LuceneTestCase.maybeChangeLiveIndexWriterConfig(r, w.getConfig());
w.addIndexes(dirs);
}
public void addIndexes(IndexReader... readers) throws IOException {
+ LuceneTestCase.maybeChangeLiveIndexWriterConfig(r, w.getConfig());
w.addIndexes(readers);
}
public void updateNumericDocValue(Term term, String field, Long value) throws IOException {
+ LuceneTestCase.maybeChangeLiveIndexWriterConfig(r, w.getConfig());
w.updateNumericDocValue(term, field, value);
}
public void updateBinaryDocValue(Term term, String field, BytesRef value) throws IOException {
+ LuceneTestCase.maybeChangeLiveIndexWriterConfig(r, w.getConfig());
w.updateBinaryDocValue(term, field, value);
}
public void deleteDocuments(Term term) throws IOException {
+ LuceneTestCase.maybeChangeLiveIndexWriterConfig(r, w.getConfig());
w.deleteDocuments(term);
}
public void deleteDocuments(Query q) throws IOException {
+ LuceneTestCase.maybeChangeLiveIndexWriterConfig(r, w.getConfig());
w.deleteDocuments(q);
}
public void commit() throws IOException {
+ LuceneTestCase.maybeChangeLiveIndexWriterConfig(r, w.getConfig());
w.commit();
}
@@ -254,6 +267,7 @@ public class RandomIndexWriter implement
}
public DirectoryReader getReader() throws IOException {
+ LuceneTestCase.maybeChangeLiveIndexWriterConfig(r, w.getConfig());
return getReader(true);
}
@@ -261,10 +275,12 @@ public class RandomIndexWriter implement
private boolean doRandomForceMergeAssert = true;
public void forceMergeDeletes(boolean doWait) throws IOException {
+ LuceneTestCase.maybeChangeLiveIndexWriterConfig(r, w.getConfig());
w.forceMergeDeletes(doWait);
}
public void forceMergeDeletes() throws IOException {
+ LuceneTestCase.maybeChangeLiveIndexWriterConfig(r, w.getConfig());
w.forceMergeDeletes();
}
@@ -298,6 +314,7 @@ public class RandomIndexWriter implement
}
public DirectoryReader getReader(boolean applyDeletions) throws IOException {
+ LuceneTestCase.maybeChangeLiveIndexWriterConfig(r, w.getConfig());
getReaderCalled = true;
if (r.nextInt(20) == 2) {
doRandomForceMerge();
@@ -329,6 +346,7 @@ public class RandomIndexWriter implement
*/
@Override
public void close() throws IOException {
+ LuceneTestCase.maybeChangeLiveIndexWriterConfig(r, w.getConfig());
// if someone isn't using getReader() API, we want to be sure to
// forceMerge since presumably they might open a reader on the dir.
if (getReaderCalled == false && r.nextInt(8) == 2) {
@@ -342,6 +360,7 @@ public class RandomIndexWriter implement
* @see IndexWriter#shutdown()
*/
public void shutdown() throws IOException {
+ LuceneTestCase.maybeChangeLiveIndexWriterConfig(r, w.getConfig());
// if someone isn't using getReader() API, we want to be sure to
// forceMerge since presumably they might open a reader on the dir.
if (getReaderCalled == false && r.nextInt(8) == 2) {
@@ -358,6 +377,7 @@ public class RandomIndexWriter implement
* @see IndexWriter#forceMerge(int)
*/
public void forceMerge(int maxSegmentCount) throws IOException {
+ LuceneTestCase.maybeChangeLiveIndexWriterConfig(r, w.getConfig());
w.forceMerge(maxSegmentCount);
}
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=1593383&r1=1593382&r2=1593383&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 Thu May 8 19:09:32 2014
@@ -79,6 +79,7 @@ import org.apache.lucene.index.Fields;
import org.apache.lucene.index.IndexReader.ReaderClosedListener;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriterConfig;
+import org.apache.lucene.index.LiveIndexWriterConfig;
import org.apache.lucene.index.LogByteSizeMergePolicy;
import org.apache.lucene.index.LogDocMergePolicy;
import org.apache.lucene.index.LogMergePolicy;
@@ -1030,6 +1031,60 @@ public abstract class LuceneTestCase ext
logmp.setMergeFactor(mergeFactor);
return logmp;
}
+
+ // if you want it in LiveIndexWriterConfig: it must and will be tested here.
+ public static void maybeChangeLiveIndexWriterConfig(Random r, LiveIndexWriterConfig c) {
+ if (rarely(r)) {
+ // change flush parameters:
+ // this is complicated because the api requires you "invoke setters in a magical order!"
+ boolean flushByRam = r.nextBoolean();
+ if (flushByRam) {
+ c.setRAMBufferSizeMB(TestUtil.nextInt(r, 1, 10));
+ c.setMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH);
+ } else {
+ if (rarely(r)) {
+ // crazy value
+ c.setMaxBufferedDocs(TestUtil.nextInt(r, 2, 15));
+ } else {
+ // reasonable value
+ c.setMaxBufferedDocs(TestUtil.nextInt(r, 16, 1000));
+ }
+ c.setRAMBufferSizeMB(IndexWriterConfig.DISABLE_AUTO_FLUSH);
+ }
+ }
+
+ if (rarely(r)) {
+ // change buffered deletes parameters
+ boolean limitBufferedDeletes = r.nextBoolean();
+ if (limitBufferedDeletes) {
+ c.setMaxBufferedDeleteTerms(TestUtil.nextInt(r, 1, 1000));
+ } else {
+ c.setMaxBufferedDeleteTerms(IndexWriterConfig.DISABLE_AUTO_FLUSH);
+ }
+ }
+
+ if (rarely(r)) {
+ // change warmer parameters
+ if (r.nextBoolean()) {
+ c.setMergedSegmentWarmer(new SimpleMergedSegmentWarmer(c.getInfoStream()));
+ } else {
+ c.setMergedSegmentWarmer(null);
+ }
+ }
+
+ if (rarely(r)) {
+ // change CFS flush parameters
+ c.setUseCompoundFile(r.nextBoolean());
+ }
+
+ if (rarely(r)) {
+ // change merge integrity check parameters
+ c.setCheckIntegrityAtMerge(r.nextBoolean());
+ }
+
+ // TODO: mergepolicy, mergescheduler, etc have mutable state on indexwriter
+ // every setter must be tested
+ }
/**
* Returns a new Directory instance. Use this when the test does not