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 2020/01/31 14:27:12 UTC
[lucene-solr] branch branch_8x updated: LUCENE-9195: more slow
tests fixes
This is an automated email from the ASF dual-hosted git repository.
rmuir pushed a commit to branch branch_8x
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git
The following commit(s) were added to refs/heads/branch_8x by this push:
new 30b2cc0 LUCENE-9195: more slow tests fixes
30b2cc0 is described below
commit 30b2cc016355c09cd4435838e7c87236dcbde916
Author: Robert Muir <rm...@apache.org>
AuthorDate: Fri Jan 31 07:57:34 2020 -0500
LUCENE-9195: more slow tests fixes
---
.../lucene80/TestLucene80DocValuesFormat.java | 4 +-
.../org/apache/lucene/index/TestAddIndexes.java | 19 +--
.../org/apache/lucene/index/TestAtomicUpdate.java | 126 ++++++++--------
.../lucene/index/TestBinaryDocValuesUpdates.java | 7 +-
.../lucene/index/TestConcurrentMergeScheduler.java | 3 +-
.../apache/lucene/index/TestDeletionPolicy.java | 2 +
.../index/TestDocumentsWriterStallControl.java | 4 +-
.../lucene/index/TestIndexWriterNRTIsCurrent.java | 4 +-
.../apache/lucene/index/TestIndexWriterReader.java | 6 +-
.../lucene/index/TestIndexWriterUnicode.java | 2 +-
.../lucene/index/TestIndexWriterWithThreads.java | 3 +-
.../lucene/index/TestMixedDocValuesUpdates.java | 3 +-
.../lucene/index/TestNRTReaderWithThreads.java | 52 +++----
.../test/org/apache/lucene/index/TestNorms.java | 12 +-
.../lucene/index/TestNumericDocValuesUpdates.java | 4 +-
.../org/apache/lucene/index/TestStressAdvance.java | 3 +-
.../apache/lucene/index/TestTieredMergePolicy.java | 3 +-
.../apache/lucene/search/TestAutomatonQuery.java | 2 +-
.../lucene/search/TestDisjunctionMaxQuery.java | 2 +-
.../lucene/search/TestDoubleValuesSource.java | 28 ++--
.../lucene/search/TestMultiThreadTermVectors.java | 159 +++++++--------------
.../org/apache/lucene/search/TestPrefixQuery.java | 2 +-
.../lucene/search/TestSameScoresWithThreads.java | 2 +-
.../lucene/search/TestSearchWithThreads.java | 35 ++---
.../apache/lucene/search/TestSearcherManager.java | 16 +--
.../org/apache/lucene/store/TestMultiMMap.java | 9 +-
.../test/org/apache/lucene/util/TestBitUtil.java | 6 +-
.../org/apache/lucene/util/TestNumericUtils.java | 4 +-
.../org/apache/lucene/util/TestSloppyMath.java | 3 +-
.../apache/lucene/util/TestWeakIdentityMap.java | 3 +-
.../apache/lucene/util/automaton/TestMinimize.java | 2 +-
.../apache/lucene/index/RandomPostingsTester.java | 2 +-
.../ThreadedIndexingAndSearchingTestCase.java | 2 +-
.../java/org/apache/lucene/search/CheckHits.java | 1 +
.../similarities/BaseSimilarityTestCase.java | 17 ++-
35 files changed, 239 insertions(+), 313 deletions(-)
diff --git a/lucene/core/src/test/org/apache/lucene/codecs/lucene80/TestLucene80DocValuesFormat.java b/lucene/core/src/test/org/apache/lucene/codecs/lucene80/TestLucene80DocValuesFormat.java
index 18b5419..626f063 100644
--- a/lucene/core/src/test/org/apache/lucene/codecs/lucene80/TestLucene80DocValuesFormat.java
+++ b/lucene/core/src/test/org/apache/lucene/codecs/lucene80/TestLucene80DocValuesFormat.java
@@ -84,11 +84,11 @@ public class TestLucene80DocValuesFormat extends BaseCompressingDocValuesFormatT
// TODO: these big methods can easily blow up some of the other ram-hungry codecs...
// for now just keep them here, as we want to test this for this format.
- @Slow
public void testSortedSetVariableLengthBigVsStoredFields() throws Exception {
int numIterations = atLeast(1);
for (int i = 0; i < numIterations; i++) {
- doTestSortedSetVsStoredFields(atLeast(100), 1, 32766, 16, 100);
+ int numDocs = TEST_NIGHTLY ? atLeast(100) : atLeast(10);
+ doTestSortedSetVsStoredFields(numDocs, 1, 32766, 16, 100);
}
}
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestAddIndexes.java b/lucene/core/src/test/org/apache/lucene/index/TestAddIndexes.java
index 7e5f008..f9b481d 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestAddIndexes.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestAddIndexes.java
@@ -664,8 +664,7 @@ public class TestAddIndexes extends LuceneTestCase {
volatile boolean didClose;
final DirectoryReader[] readers;
final int NUM_COPY;
- final static int NUM_THREADS = 5;
- final Thread[] threads = new Thread[NUM_THREADS];
+ final Thread[] threads;
public RunAddIndexesThreads(int numCopy) throws Throwable {
NUM_COPY = numCopy;
@@ -684,11 +683,13 @@ public class TestAddIndexes extends LuceneTestCase {
readers = new DirectoryReader[NUM_COPY];
for(int i=0;i<NUM_COPY;i++)
readers[i] = DirectoryReader.open(dir);
+ int numThreads = TEST_NIGHTLY ? 5 : 2;
+ threads = new Thread[numThreads];
}
void launchThreads(final int numIter) {
- for(int i=0;i<NUM_THREADS;i++) {
+ for(int i=0;i<threads.length;i++) {
threads[i] = new Thread() {
@Override
public void run() {
@@ -713,13 +714,15 @@ public class TestAddIndexes extends LuceneTestCase {
};
}
- for(int i=0;i<NUM_THREADS;i++)
- threads[i].start();
+ for (Thread thread : threads) {
+ thread.start();
+ }
}
void joinThreads() throws Exception {
- for(int i=0;i<NUM_THREADS;i++)
- threads[i].join();
+ for (Thread thread : threads) {
+ thread.join();
+ }
}
void close(boolean doWait) throws Throwable {
@@ -814,7 +817,7 @@ public class TestAddIndexes extends LuceneTestCase {
c.joinThreads();
- int expectedNumDocs = 100+NUM_COPY*(4*NUM_ITER/5)*RunAddIndexesThreads.NUM_THREADS*RunAddIndexesThreads.NUM_INIT_DOCS;
+ int expectedNumDocs = 100+NUM_COPY*(4*NUM_ITER/5)*c.threads.length*RunAddIndexesThreads.NUM_INIT_DOCS;
assertEquals("expected num docs don't match - failures: " + c.failures, expectedNumDocs, c.writer2.getDocStats().numDocs);
c.close(true);
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestAtomicUpdate.java b/lucene/core/src/test/org/apache/lucene/index/TestAtomicUpdate.java
index 930daee..c228f42 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestAtomicUpdate.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestAtomicUpdate.java
@@ -16,69 +16,64 @@
*/
package org.apache.lucene.index;
+import java.io.IOException;
import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.List;
import org.apache.lucene.analysis.MockAnalyzer;
-import org.apache.lucene.document.*;
-import org.apache.lucene.store.*;
-import org.apache.lucene.util.*;
+import org.apache.lucene.document.Document;
+import org.apache.lucene.document.Field;
+import org.apache.lucene.document.IntPoint;
+import org.apache.lucene.document.StringField;
+import org.apache.lucene.document.TextField;
+import org.apache.lucene.store.ByteBuffersDirectory;
+import org.apache.lucene.store.Directory;
+import org.apache.lucene.store.MockDirectoryWrapper;
+import org.apache.lucene.store.RAMDirectory;
+import org.apache.lucene.util.English;
+import org.apache.lucene.util.LuceneTestCase;
public class TestAtomicUpdate extends LuceneTestCase {
-
private static abstract class TimedThread extends Thread {
- volatile boolean failed;
- int count;
- private static float RUN_TIME_MSEC = atLeast(500);
- private TimedThread[] allThreads;
+ int numIterations;
+ volatile Throwable failure;
- abstract public void doWork() throws Throwable;
+ abstract public void doWork(int currentIteration) throws IOException;
- TimedThread(TimedThread[] threads) {
- this.allThreads = threads;
+ TimedThread(int numIterations) {
+ this.numIterations = numIterations;
}
@Override
public void run() {
- final long stopTime = System.currentTimeMillis() + (long) RUN_TIME_MSEC;
-
- count = 0;
-
try {
- do {
- if (anyErrors()) break;
- doWork();
- count++;
- } while(System.currentTimeMillis() < stopTime);
+ for (int count = 0; count < numIterations; count++) {
+ doWork(count);
+ }
} catch (Throwable e) {
- System.out.println(Thread.currentThread().getName() + ": exc");
+ failure = e;
e.printStackTrace(System.out);
- failed = true;
+ throw new RuntimeException(e);
}
}
-
- private boolean anyErrors() {
- for(int i=0;i<allThreads.length;i++)
- if (allThreads[i] != null && allThreads[i].failed)
- return true;
- return false;
- }
}
private static class IndexerThread extends TimedThread {
IndexWriter writer;
- public IndexerThread(IndexWriter writer, TimedThread[] threads) {
- super(threads);
+ public IndexerThread(IndexWriter writer, int numIterations) {
+ super(numIterations);
this.writer = writer;
}
@Override
- public void doWork() throws Exception {
+ public void doWork(int currentIteration) throws IOException {
// Update all 100 docs...
for(int i=0; i<100; i++) {
Document d = new Document();
d.add(new StringField("id", Integer.toString(i), Field.Store.YES));
- d.add(new TextField("contents", English.intToEnglish(i+10*count), Field.Store.NO));
+ d.add(new TextField("contents", English.intToEnglish(i+10*currentIteration), Field.Store.NO));
d.add(new IntPoint("doc", i));
d.add(new IntPoint("doc2d", i, i));
writer.updateDocument(new Term("id", Integer.toString(i)), d);
@@ -89,13 +84,13 @@ public class TestAtomicUpdate extends LuceneTestCase {
private static class SearcherThread extends TimedThread {
private Directory directory;
- public SearcherThread(Directory directory, TimedThread[] threads) {
- super(threads);
+ public SearcherThread(Directory directory, int numIterations) {
+ super(numIterations);
this.directory = directory;
}
@Override
- public void doWork() throws Throwable {
+ public void doWork(int currentIteration) throws IOException {
IndexReader r = DirectoryReader.open(directory);
assertEquals(100, r.numDocs());
r.close();
@@ -103,12 +98,14 @@ public class TestAtomicUpdate extends LuceneTestCase {
}
/*
- Run one indexer and 2 searchers against single index as
- stress test.
- */
+ * Run N indexer and N searchers against single index as
+ * stress test.
+ */
public void runTest(Directory directory) throws Exception {
-
- TimedThread[] threads = new TimedThread[4];
+ int indexThreads = TEST_NIGHTLY ? 2 : 1;
+ int searchThreads = TEST_NIGHTLY ? 2 : 1;
+ int indexIterations = TEST_NIGHTLY ? 10 : 1;
+ int searchIterations = TEST_NIGHTLY ? 10 : 1;
IndexWriterConfig conf = new IndexWriterConfig(new MockAnalyzer(random()))
.setMaxBufferedDocs(7);
@@ -131,36 +128,27 @@ public class TestAtomicUpdate extends LuceneTestCase {
assertEquals(100, r.numDocs());
r.close();
- IndexerThread indexerThread = new IndexerThread(writer, threads);
- threads[0] = indexerThread;
- indexerThread.start();
-
- IndexerThread indexerThread2 = new IndexerThread(writer, threads);
- threads[1] = indexerThread2;
- indexerThread2.start();
-
- SearcherThread searcherThread1 = new SearcherThread(directory, threads);
- threads[2] = searcherThread1;
- searcherThread1.start();
-
- SearcherThread searcherThread2 = new SearcherThread(directory, threads);
- threads[3] = searcherThread2;
- searcherThread2.start();
-
- indexerThread.join();
- indexerThread2.join();
- searcherThread1.join();
- searcherThread2.join();
+ List<TimedThread> threads = new ArrayList<>();
+ for (int i = 0; i < indexThreads; i++) {
+ threads.add(new IndexerThread(writer, indexIterations));
+ }
+ for (int i = 0; i < searchThreads; i++) {
+ threads.add(new SearcherThread(directory, searchIterations));
+ }
+ for (TimedThread thread : threads) {
+ thread.start();
+ }
+ for (TimedThread thread : threads) {
+ thread.join();
+ }
writer.close();
-
- assertTrue("hit unexpected exception in indexer", !indexerThread.failed);
- assertTrue("hit unexpected exception in indexer2", !indexerThread2.failed);
- assertTrue("hit unexpected exception in search1", !searcherThread1.failed);
- assertTrue("hit unexpected exception in search2", !searcherThread2.failed);
- //System.out.println(" Writer: " + indexerThread.count + " iterations");
- //System.out.println("Searcher 1: " + searcherThread1.count + " searchers created");
- //System.out.println("Searcher 2: " + searcherThread2.count + " searchers created");
+
+ for (TimedThread thread : threads) {
+ if (thread.failure != null) {
+ throw new RuntimeException("hit exception from " + thread, thread.failure);
+ }
+ }
}
/*
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestBinaryDocValuesUpdates.java b/lucene/core/src/test/org/apache/lucene/index/TestBinaryDocValuesUpdates.java
index 1a63863..bd88099 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestBinaryDocValuesUpdates.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestBinaryDocValuesUpdates.java
@@ -666,13 +666,12 @@ public class TestBinaryDocValuesUpdates extends LuceneTestCase {
int refreshChance = TestUtil.nextInt(random(), 5, 200);
int deleteChance = TestUtil.nextInt(random(), 2, 100);
- int idUpto = 0;
int deletedCount = 0;
List<OneSortDoc> docs = new ArrayList<>();
DirectoryReader r = w.getReader();
- int numIters = atLeast(1000);
+ int numIters = TEST_NIGHTLY ? atLeast(1000) : atLeast(100);
for(int iter=0;iter<numIters;iter++) {
BytesRef value = toBytes((long) random().nextInt(valueRange));
if (docs.isEmpty() || random().nextInt(3) == 1) {
@@ -977,7 +976,7 @@ public class TestBinaryDocValuesUpdates extends LuceneTestCase {
// create index
final int numFields = TestUtil.nextInt(random(), 1, 4);
- final int numDocs = atLeast(2000);
+ final int numDocs = TEST_NIGHTLY ? atLeast(2000) : atLeast(200);
for (int i = 0; i < numDocs; i++) {
Document doc = new Document();
doc.add(new StringField("id", "doc" + i, Store.NO));
@@ -996,7 +995,7 @@ public class TestBinaryDocValuesUpdates extends LuceneTestCase {
writer.addDocument(doc);
}
- final int numThreads = TestUtil.nextInt(random(), 3, 6);
+ final int numThreads = TEST_NIGHTLY ? TestUtil.nextInt(random(), 3, 6) : 2;
final CountDownLatch done = new CountDownLatch(numThreads);
final AtomicInteger numUpdates = new AtomicInteger(atLeast(100));
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestConcurrentMergeScheduler.java b/lucene/core/src/test/org/apache/lucene/index/TestConcurrentMergeScheduler.java
index 2383ccd..f820fa9 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestConcurrentMergeScheduler.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestConcurrentMergeScheduler.java
@@ -627,7 +627,8 @@ public class TestConcurrentMergeScheduler extends LuceneTestCase {
iwc.setMergePolicy(NoMergePolicy.INSTANCE);
iwc.setMaxBufferedDocs(2);
IndexWriter w = new IndexWriter(dir, iwc);
- for(int i=0;i<1000;i++) {
+ int numDocs = TEST_NIGHTLY ? 1000 : 100;
+ for(int i=0;i<numDocs;i++) {
Document doc = new Document();
doc.add(newStringField("field", ""+i, Field.Store.YES));
w.addDocument(doc);
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestDeletionPolicy.java b/lucene/core/src/test/org/apache/lucene/index/TestDeletionPolicy.java
index 5999624..644d4f8 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestDeletionPolicy.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestDeletionPolicy.java
@@ -216,6 +216,8 @@ public class TestDeletionPolicy extends LuceneTestCase {
/*
* Test "by time expiration" deletion policy:
*/
+ // TODO: this wall-clock-dependent test doesn't seem to actually test any deletionpolicy logic?
+ @Nightly
public void testExpirationTimeDeletionPolicy() throws IOException, InterruptedException {
final double SECONDS = 2.0;
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestDocumentsWriterStallControl.java b/lucene/core/src/test/org/apache/lucene/index/TestDocumentsWriterStallControl.java
index d5e643a..b6c3cb4 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestDocumentsWriterStallControl.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestDocumentsWriterStallControl.java
@@ -94,7 +94,7 @@ public class TestDocumentsWriterStallControl extends LuceneTestCase {
}
- public void testAccquireReleaseRace() throws InterruptedException {
+ public void testAcquireReleaseRace() throws InterruptedException {
final DocumentsWriterStallControl ctrl = new DocumentsWriterStallControl();
ctrl.updateStalled(false);
final AtomicBoolean stop = new AtomicBoolean(false);
@@ -120,7 +120,7 @@ public class TestDocumentsWriterStallControl extends LuceneTestCase {
}
start(threads);
- int iters = atLeast(10000);
+ int iters = TEST_NIGHTLY ? atLeast(10000) : atLeast(1000);
final float checkPointProbability = TEST_NIGHTLY ? 0.5f : 0.1f;
for (int i = 0; i < iters; i++) {
if (checkPoint.get()) {
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterNRTIsCurrent.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterNRTIsCurrent.java
index ee7a236..62e732f 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterNRTIsCurrent.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterNRTIsCurrent.java
@@ -27,6 +27,7 @@ import org.apache.lucene.document.TextField;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.LuceneTestCase;
+import org.apache.lucene.util.TestUtil;
public class TestIndexWriterNRTIsCurrent extends LuceneTestCase {
@@ -41,7 +42,8 @@ public class TestIndexWriterNRTIsCurrent extends LuceneTestCase {
IndexWriterConfig conf = newIndexWriterConfig(new MockAnalyzer(random()));
IndexWriter writer = new IndexWriter(dir, conf);
ReaderHolder holder = new ReaderHolder();
- ReaderThread[] threads = new ReaderThread[atLeast(3)];
+ int numReaderThreads = TEST_NIGHTLY ? TestUtil.nextInt(random(), 2, 5) : 2;
+ ReaderThread[] threads = new ReaderThread[numReaderThreads];
final CountDownLatch latch = new CountDownLatch(1);
WriterThread writerThread = new WriterThread(holder, writer,
atLeast(500), random(), latch);
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterReader.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterReader.java
index c584b16..686e1d1 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterReader.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterReader.java
@@ -49,7 +49,7 @@ import org.junit.Test;
@SuppressCodecs("SimpleText") // too slow here
public class TestIndexWriterReader extends LuceneTestCase {
- private final int numThreads = TEST_NIGHTLY ? 5 : 3;
+ private final int numThreads = TEST_NIGHTLY ? 5 : 2;
public static int count(Term t, IndexReader r) throws IOException {
int count = 0;
@@ -371,8 +371,8 @@ public class TestIndexWriterReader extends LuceneTestCase {
@Slow
public void testAddIndexesAndDoDeletesThreads() throws Throwable {
- final int numIter = 2;
- int numDirs = 3;
+ final int numIter = TEST_NIGHTLY ? 2 : 1;
+ int numDirs = TEST_NIGHTLY ? 3 : 2;
Directory mainDir = getAssertNoDeletesDirectory(newDirectory());
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterUnicode.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterUnicode.java
index 1069aab..6a8d878 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterUnicode.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterUnicode.java
@@ -177,7 +177,7 @@ public class TestIndexWriterUnicode extends LuceneTestCase {
CharsRefBuilder utf16 = new CharsRefBuilder();
- int num = atLeast(100000);
+ int num = atLeast(10000);
for (int iter = 0; iter < num; iter++) {
boolean hasIllegal = fillUnicode(buffer, expected, 0, 20);
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterWithThreads.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterWithThreads.java
index 2f36228..c71c509 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterWithThreads.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterWithThreads.java
@@ -648,7 +648,8 @@ public class TestIndexWriterWithThreads extends LuceneTestCase {
try (Directory dir = newDirectory();
RandomIndexWriter writer = new RandomIndexWriter(random(), dir,
newIndexWriterConfig().setMaxBufferedDocs(-1).setRAMBufferSizeMB(0.00001), useSoftDeletes)) {
- Thread[] threads = new Thread[3 + random().nextInt(3)];
+ int numThreads = TEST_NIGHTLY ? 3 + random().nextInt(3) : 3;
+ Thread[] threads = new Thread[numThreads];
AtomicInteger done = new AtomicInteger(0);
CyclicBarrier barrier = new CyclicBarrier(threads.length + 1);
Document doc = new Document();
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestMixedDocValuesUpdates.java b/lucene/core/src/test/org/apache/lucene/index/TestMixedDocValuesUpdates.java
index 9e5393d..727c565 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestMixedDocValuesUpdates.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestMixedDocValuesUpdates.java
@@ -470,7 +470,8 @@ public class TestMixedDocValuesUpdates extends LuceneTestCase {
writer.addDocument(doc);
}
- Thread[] threads = new Thread[2 + random().nextInt(3)];
+ int numThreads = TEST_NIGHTLY ? 2 + random().nextInt(3) : 2;
+ Thread[] threads = new Thread[numThreads];
CyclicBarrier barrier = new CyclicBarrier(threads.length + 1);
for (int i = 0; i < threads.length; i++) {
threads[i] = new Thread(() -> {
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestNRTReaderWithThreads.java b/lucene/core/src/test/org/apache/lucene/index/TestNRTReaderWithThreads.java
index d7d6262..45ceb5a 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestNRTReaderWithThreads.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestNRTReaderWithThreads.java
@@ -42,55 +42,49 @@ public class TestNRTReaderWithThreads extends LuceneTestCase {
);
IndexReader reader = writer.getReader(); // start pooling readers
reader.close();
- RunThread[] indexThreads = new RunThread[4];
+ int numThreads = TEST_NIGHTLY ? 4 : 2;
+ int numIterations = TEST_NIGHTLY ? 2000 : 50;
+ RunThread[] indexThreads = new RunThread[numThreads];
for (int x=0; x < indexThreads.length; x++) {
- indexThreads[x] = new RunThread(x % 2, writer);
+ indexThreads[x] = new RunThread(x % 2, writer, numIterations);
indexThreads[x].setName("Thread " + x);
indexThreads[x].start();
}
- long startTime = System.currentTimeMillis();
- long duration = 1000;
- while ((System.currentTimeMillis() - startTime) < duration) {
- Thread.sleep(100);
+
+ for (RunThread thread : indexThreads) {
+ thread.join();
}
- for (int x=0; x < indexThreads.length; x++) {
- indexThreads[x].run = false;
- assertNull("Exception thrown: "+indexThreads[x].ex, indexThreads[x].ex);
- }
- int delCount = 0;
- int addCount = 0;
- for (int x=0; x < indexThreads.length; x++) {
- indexThreads[x].join();
- addCount += indexThreads[x].addCount;
- delCount += indexThreads[x].delCount;
- }
- for (int x=0; x < indexThreads.length; x++) {
- assertNull("Exception thrown: "+indexThreads[x].ex, indexThreads[x].ex);
- }
- //System.out.println("addCount:"+addCount);
- //System.out.println("delCount:"+delCount);
+
writer.close();
mainDir.close();
+
+ for (RunThread thread : indexThreads) {
+ if (thread.failure != null) {
+ throw new RuntimeException("hit exception from " + thread, thread.failure);
+ }
+ }
}
public class RunThread extends Thread {
+ int type;
IndexWriter writer;
- volatile boolean run = true;
- volatile Throwable ex;
+ int numIterations;
+
+ volatile Throwable failure;
int delCount = 0;
int addCount = 0;
- int type;
final Random r = new Random(random().nextLong());
- public RunThread(int type, IndexWriter writer) {
+ public RunThread(int type, IndexWriter writer, int numIterations) {
this.type = type;
this.writer = writer;
+ this.numIterations = numIterations;
}
@Override
public void run() {
try {
- while (run) {
+ for (int iter = 0; iter < numIterations; iter++) {
//int n = random.nextInt(2);
if (type == 0) {
int i = seq.addAndGet(1);
@@ -111,8 +105,8 @@ public class TestNRTReaderWithThreads extends LuceneTestCase {
}
} catch (Throwable ex) {
ex.printStackTrace(System.out);
- this.ex = ex;
- run = false;
+ this.failure = failure;
+ throw new RuntimeException(ex);
}
}
}
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestNorms.java b/lucene/core/src/test/org/apache/lucene/index/TestNorms.java
index 82ac27d..a8db06f 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestNorms.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestNorms.java
@@ -33,18 +33,13 @@ import org.apache.lucene.search.similarities.ClassicSimilarity;
import org.apache.lucene.search.similarities.PerFieldSimilarityWrapper;
import org.apache.lucene.search.similarities.Similarity;
import org.apache.lucene.store.Directory;
-import org.apache.lucene.util.LineFileDocs;
import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.util.LuceneTestCase.Slow;
-import org.apache.lucene.util.LuceneTestCase.SuppressCodecs;
import org.apache.lucene.util.TestUtil;
/**
* Test that norms info is preserved during index life - including
* separate norms, addDocument, addIndexes, forceMerge.
*/
-@SuppressCodecs({ "Direct", "SimpleText" })
-@Slow
public class TestNorms extends LuceneTestCase {
static final String BYTE_TEST_FIELD = "normsTestByte";
@@ -75,23 +70,18 @@ public class TestNorms extends LuceneTestCase {
Similarity provider = new MySimProvider();
config.setSimilarity(provider);
RandomIndexWriter writer = new RandomIndexWriter(random, dir, config);
- final LineFileDocs docs = new LineFileDocs(random);
int num = atLeast(100);
for (int i = 0; i < num; i++) {
- Document doc = docs.nextDoc();
+ Document doc = new Document();
int boost = TestUtil.nextInt(random, 1, 255);
String value = IntStream.range(0, boost).mapToObj(k -> Integer.toString(boost)).collect(Collectors.joining(" "));
Field f = new TextField(BYTE_TEST_FIELD, value, Field.Store.YES);
doc.add(f);
writer.addDocument(doc);
doc.removeField(BYTE_TEST_FIELD);
- if (rarely()) {
- writer.commit();
- }
}
writer.commit();
writer.close();
- docs.close();
}
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestNumericDocValuesUpdates.java b/lucene/core/src/test/org/apache/lucene/index/TestNumericDocValuesUpdates.java
index 7aab242..643daa2 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestNumericDocValuesUpdates.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestNumericDocValuesUpdates.java
@@ -1221,7 +1221,7 @@ public class TestNumericDocValuesUpdates extends LuceneTestCase {
// create index
final int numFields = TestUtil.nextInt(random(), 1, 4);
- final int numDocs = atLeast(2000);
+ final int numDocs = TEST_NIGHTLY ? atLeast(2000) : atLeast(200);
for (int i = 0; i < numDocs; i++) {
Document doc = new Document();
doc.add(new StringField("id", "doc" + i, Store.NO));
@@ -1240,7 +1240,7 @@ public class TestNumericDocValuesUpdates extends LuceneTestCase {
writer.addDocument(doc);
}
- final int numThreads = TestUtil.nextInt(random(), 3, 6);
+ final int numThreads = TEST_NIGHTLY ? TestUtil.nextInt(random(), 3, 6) : 2;
final CountDownLatch done = new CountDownLatch(numThreads);
final AtomicInteger numUpdates = new AtomicInteger(atLeast(100));
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestStressAdvance.java b/lucene/core/src/test/org/apache/lucene/index/TestStressAdvance.java
index b984314..73c490d 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestStressAdvance.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestStressAdvance.java
@@ -32,7 +32,8 @@ import org.apache.lucene.util.TestUtil;
public class TestStressAdvance extends LuceneTestCase {
public void testStressAdvance() throws Exception {
- for(int iter=0;iter<3;iter++) {
+ int numIters = TEST_NIGHTLY ? 3 : 1;
+ for(int iter=0;iter<numIters;iter++) {
if (VERBOSE) {
System.out.println("\nTEST: iter=" + iter);
}
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestTieredMergePolicy.java b/lucene/core/src/test/org/apache/lucene/index/TestTieredMergePolicy.java
index f90d497..0285f65 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestTieredMergePolicy.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestTieredMergePolicy.java
@@ -710,7 +710,8 @@ public class TestTieredMergePolicy extends BaseMergePolicyTestCase {
doTestSimulateAppendOnly(mergePolicy, 100_000_000, 10_000);
}
- @Override @Slow
+ @Override @Nightly
+ // TODO: this test has bugs that prevent you from lowering the number of docs in the test!
public void testSimulateUpdates() throws IOException {
TieredMergePolicy mergePolicy = mergePolicy();
// Avoid low values of the max merged segment size which prevent this merge policy from scaling well
diff --git a/lucene/core/src/test/org/apache/lucene/search/TestAutomatonQuery.java b/lucene/core/src/test/org/apache/lucene/search/TestAutomatonQuery.java
index 317d41c..8fb8c65 100644
--- a/lucene/core/src/test/org/apache/lucene/search/TestAutomatonQuery.java
+++ b/lucene/core/src/test/org/apache/lucene/search/TestAutomatonQuery.java
@@ -210,7 +210,7 @@ public class TestAutomatonQuery extends LuceneTestCase {
}
public void testHashCodeWithThreads() throws Exception {
- final AutomatonQuery queries[] = new AutomatonQuery[1000];
+ final AutomatonQuery queries[] = new AutomatonQuery[atLeast(100)];
for (int i = 0; i < queries.length; i++) {
queries[i] = new AutomatonQuery(new Term("bogus", "bogus"), AutomatonTestUtil.randomAutomaton(random()), Integer.MAX_VALUE);
}
diff --git a/lucene/core/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java b/lucene/core/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java
index 86e1eb0..7d23d5c 100644
--- a/lucene/core/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java
+++ b/lucene/core/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java
@@ -542,7 +542,7 @@ public class TestDisjunctionMaxQuery extends LuceneTestCase {
IndexWriterConfig config = new IndexWriterConfig(new StandardAnalyzer());
IndexWriter w = new IndexWriter(dir, config);
- int numDocs = atLeast(1000); // make sure some terms have skip data
+ int numDocs = TEST_NIGHTLY ? atLeast(1000) : atLeast(100); // at night, make sure some terms have skip data
for (int i = 0; i < numDocs; i++) {
Document doc = new Document();
for (int j = 0; j < numFields; j++) {
diff --git a/lucene/core/src/test/org/apache/lucene/search/TestDoubleValuesSource.java b/lucene/core/src/test/org/apache/lucene/search/TestDoubleValuesSource.java
index a463941..ec917b1 100644
--- a/lucene/core/src/test/org/apache/lucene/search/TestDoubleValuesSource.java
+++ b/lucene/core/src/test/org/apache/lucene/search/TestDoubleValuesSource.java
@@ -35,22 +35,28 @@ import org.apache.lucene.util.ArrayUtil;
import org.apache.lucene.util.English;
import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.util.TestUtil;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
@LuceneTestCase.SuppressCodecs("SimpleText")
public class TestDoubleValuesSource extends LuceneTestCase {
private static final double LEAST_DOUBLE_VALUE = 45.72;
- private Directory dir;
- private IndexReader reader;
- private IndexSearcher searcher;
+ private static Directory dir;
+ private static IndexReader reader;
+ private static IndexSearcher searcher;
- @Override
- public void setUp() throws Exception {
- super.setUp();
+ @BeforeClass
+ public static void beforeClass() throws Exception {
dir = newDirectory();
RandomIndexWriter iw = new RandomIndexWriter(random(), dir);
- int numDocs = TestUtil.nextInt(random(), 2049, 4000);
+ final int numDocs;
+ if (TEST_NIGHTLY) {
+ numDocs = TestUtil.nextInt(random(), 2049, 4000);
+ } else {
+ numDocs = atLeast(545);
+ }
for (int i = 0; i < numDocs; i++) {
Document document = new Document();
document.add(newTextField("english", English.intToEnglish(i), Field.Store.NO));
@@ -68,11 +74,13 @@ public class TestDoubleValuesSource extends LuceneTestCase {
searcher = newSearcher(reader);
}
- @Override
- public void tearDown() throws Exception {
+ @AfterClass
+ public static void afterClass() throws Exception {
reader.close();
dir.close();
- super.tearDown();
+ searcher = null;
+ reader = null;
+ dir = null;
}
public void testSortMissingZeroDefault() throws Exception {
diff --git a/lucene/core/src/test/org/apache/lucene/search/TestMultiThreadTermVectors.java b/lucene/core/src/test/org/apache/lucene/search/TestMultiThreadTermVectors.java
index d143bf7..3b7f2e9 100644
--- a/lucene/core/src/test/org/apache/lucene/search/TestMultiThreadTermVectors.java
+++ b/lucene/core/src/test/org/apache/lucene/search/TestMultiThreadTermVectors.java
@@ -33,16 +33,18 @@ import org.apache.lucene.util.LuceneTestCase;
public class TestMultiThreadTermVectors extends LuceneTestCase {
private Directory directory;
- public int numDocs = 100;
- public int numThreads = 3;
+ private int numDocs;
+ private int numThreads;
+ private int numIterations;
@Override
public void setUp() throws Exception {
super.setUp();
+ numDocs = TEST_NIGHTLY ? 1000 : 50;
+ numThreads = TEST_NIGHTLY ? 3 : 2;
+ numIterations = TEST_NIGHTLY ? 100 : 50;
directory = newDirectory();
IndexWriter writer = new IndexWriter(directory, newIndexWriterConfig(new MockAnalyzer(random())).setMergePolicy(newLogMergePolicy()));
- //writer.setNoCFSRatio(0.0);
- //writer.infoStream = System.out;
FieldType customType = new FieldType(TextField.TYPE_STORED);
customType.setTokenized(false);
customType.setStoreTermVectors(true);
@@ -53,7 +55,6 @@ public class TestMultiThreadTermVectors extends LuceneTestCase {
writer.addDocument(doc);
}
writer.close();
-
}
@Override
@@ -62,29 +63,9 @@ public class TestMultiThreadTermVectors extends LuceneTestCase {
super.tearDown();
}
- public void test() throws Exception {
-
- IndexReader reader = null;
-
- try {
- reader = DirectoryReader.open(directory);
- for(int i = 1; i <= numThreads; i++)
- testTermPositionVectors(reader, i);
-
-
- }
- catch (IOException ioe) {
- fail(ioe.getMessage());
- }
- finally {
- if (reader != null) {
- try {
- /** close the opened reader */
- reader.close();
- } catch (IOException ioe) {
- ioe.printStackTrace();
- }
- }
+ public void test() throws Exception {
+ try (IndexReader reader = DirectoryReader.open(directory)) {
+ testTermPositionVectors(reader, numThreads);
}
}
@@ -94,91 +75,17 @@ public class TestMultiThreadTermVectors extends LuceneTestCase {
mtr[i] = new MultiThreadTermVectorsReader();
mtr[i].init(reader);
}
-
-
- /** run until all threads finished */
- int threadsAlive = mtr.length;
- while (threadsAlive > 0) {
- //System.out.println("Threads alive");
- Thread.sleep(10);
- threadsAlive = mtr.length;
- for (int i = 0; i < mtr.length; i++) {
- if (mtr[i].isAlive() == true) {
- break;
- }
-
- threadsAlive--;
- }
- }
-
- long totalTime = 0L;
- for (int i = 0; i < mtr.length; i++) {
- totalTime += mtr[i].timeElapsed;
- mtr[i] = null;
+
+ for (MultiThreadTermVectorsReader vectorReader : mtr) {
+ vectorReader.start();
}
-
- //System.out.println("threadcount: " + mtr.length + " average term vector time: " + totalTime/mtr.length);
-
- }
-
-}
-class MultiThreadTermVectorsReader implements Runnable {
-
- private IndexReader reader = null;
- private Thread t = null;
-
- private final int runsToDo = 100;
- long timeElapsed = 0;
-
-
- public void init(IndexReader reader) {
- this.reader = reader;
- timeElapsed = 0;
- t=new Thread(this);
- t.start();
- }
-
- public boolean isAlive() {
- if (t == null) return false;
-
- return t.isAlive();
- }
-
- @Override
- public void run() {
- try {
- // run the test 100 times
- for (int i = 0; i < runsToDo; i++)
- testTermVectors();
- }
- catch (Exception e) {
- e.printStackTrace();
- }
- return;
- }
-
- private void testTermVectors() throws Exception {
- // check:
- int numDocs = reader.numDocs();
- long start = 0L;
- for (int docId = 0; docId < numDocs; docId++) {
- start = System.currentTimeMillis();
- Fields vectors = reader.getTermVectors(docId);
- timeElapsed += System.currentTimeMillis()-start;
-
- // verify vectors result
- verifyVectors(vectors, docId);
-
- start = System.currentTimeMillis();
- Terms vector = reader.getTermVectors(docId).terms("field");
- timeElapsed += System.currentTimeMillis()-start;
-
- verifyVector(vector.iterator(), docId);
+ for (MultiThreadTermVectorsReader vectorReader : mtr) {
+ vectorReader.join();
}
}
- private void verifyVectors(Fields vectors, int num) throws IOException {
+ static void verifyVectors(Fields vectors, int num) throws IOException {
for (String field : vectors) {
Terms terms = vectors.terms(field);
assert terms != null;
@@ -186,12 +93,42 @@ class MultiThreadTermVectorsReader implements Runnable {
}
}
- private void verifyVector(TermsEnum vector, int num) throws IOException {
+ static void verifyVector(TermsEnum vector, int num) throws IOException {
StringBuilder temp = new StringBuilder();
while(vector.next() != null) {
temp.append(vector.term().utf8ToString());
}
- if (!English.intToEnglish(num).trim().equals(temp.toString().trim()))
- System.out.println("wrong term result");
+ assertEquals(English.intToEnglish(num).trim(), temp.toString().trim());
+ }
+
+ class MultiThreadTermVectorsReader extends Thread {
+ private IndexReader reader = null;
+
+ public void init(IndexReader reader) {
+ this.reader = reader;
+ }
+
+ @Override
+ public void run() {
+ try {
+ for (int i = 0; i < numIterations; i++) {
+ testTermVectors();
+ }
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ private void testTermVectors() throws Exception {
+ // check:
+ int numDocs = reader.numDocs();
+ for (int docId = 0; docId < numDocs; docId++) {
+ Fields vectors = reader.getTermVectors(docId);
+ // verify vectors result
+ verifyVectors(vectors, docId);
+ Terms vector = reader.getTermVectors(docId).terms("field");
+ verifyVector(vector.iterator(), docId);
+ }
+ }
}
}
diff --git a/lucene/core/src/test/org/apache/lucene/search/TestPrefixQuery.java b/lucene/core/src/test/org/apache/lucene/search/TestPrefixQuery.java
index 2395d0b..5983ba1 100644
--- a/lucene/core/src/test/org/apache/lucene/search/TestPrefixQuery.java
+++ b/lucene/core/src/test/org/apache/lucene/search/TestPrefixQuery.java
@@ -93,7 +93,7 @@ public class TestPrefixQuery extends LuceneTestCase {
Directory dir = newDirectory();
RandomIndexWriter w = new RandomIndexWriter(random(), dir);
- int numTerms = atLeast(10000);
+ int numTerms = atLeast(1000);
Set<BytesRef> terms = new HashSet<>();
while (terms.size() < numTerms) {
byte[] bytes = new byte[TestUtil.nextInt(random(), 1, 10)];
diff --git a/lucene/core/src/test/org/apache/lucene/search/TestSameScoresWithThreads.java b/lucene/core/src/test/org/apache/lucene/search/TestSameScoresWithThreads.java
index 38baa7a..a615a6a 100644
--- a/lucene/core/src/test/org/apache/lucene/search/TestSameScoresWithThreads.java
+++ b/lucene/core/src/test/org/apache/lucene/search/TestSameScoresWithThreads.java
@@ -83,7 +83,7 @@ public class TestSameScoresWithThreads extends LuceneTestCase {
if (!answers.isEmpty()) {
final CountDownLatch startingGun = new CountDownLatch(1);
- int numThreads = TestUtil.nextInt(random(), 2, 5);
+ int numThreads = TEST_NIGHTLY ? TestUtil.nextInt(random(), 2, 5) : 2;
Thread[] threads = new Thread[numThreads];
for(int threadID=0;threadID<numThreads;threadID++) {
Thread thread = new Thread() {
diff --git a/lucene/core/src/test/org/apache/lucene/search/TestSearchWithThreads.java b/lucene/core/src/test/org/apache/lucene/search/TestSearchWithThreads.java
index ec73368..8180495 100644
--- a/lucene/core/src/test/org/apache/lucene/search/TestSearchWithThreads.java
+++ b/lucene/core/src/test/org/apache/lucene/search/TestSearchWithThreads.java
@@ -27,34 +27,22 @@ import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.index.Term;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.util.LuceneTestCase.SuppressCodecs;
-@SuppressCodecs({ "SimpleText", "Direct" })
public class TestSearchWithThreads extends LuceneTestCase {
- int NUM_DOCS;
- static final int NUM_SEARCH_THREADS = 5;
- int RUN_TIME_MSEC;
-
- @Override
- public void setUp() throws Exception {
- super.setUp();
- NUM_DOCS = atLeast(10000);
- RUN_TIME_MSEC = atLeast(1000);
- }
public void test() throws Exception {
+ final int numThreads = TEST_NIGHTLY ? 5 : 2;
+ final int numSearches = TEST_NIGHTLY ? atLeast(2000) : atLeast(500);
+ final int numDocs = TEST_NIGHTLY ? atLeast(10000) : atLeast(200);
+
final Directory dir = newDirectory();
final RandomIndexWriter w = new RandomIndexWriter(random(), dir);
- final long startTime = System.currentTimeMillis();
-
- // TODO: replace w/ the @nightly test data; make this
- // into an optional @nightly stress test
final Document doc = new Document();
final Field body = newTextField("body", "", Field.Store.NO);
doc.add(body);
final StringBuilder sb = new StringBuilder();
- for(int docCount=0;docCount<NUM_DOCS;docCount++) {
+ for(int docCount=0;docCount<numDocs;docCount++) {
final int numTerms = random().nextInt(10);
for(int termCount=0;termCount<numTerms;termCount++) {
sb.append(random().nextBoolean() ? "aaa" : "bbb");
@@ -67,16 +55,13 @@ public class TestSearchWithThreads extends LuceneTestCase {
final IndexReader r = w.getReader();
w.close();
- final long endTime = System.currentTimeMillis();
- if (VERBOSE) System.out.println("BUILD took " + (endTime-startTime));
-
final IndexSearcher s = newSearcher(r);
final AtomicBoolean failed = new AtomicBoolean();
final AtomicLong netSearch = new AtomicLong();
- Thread[] threads = new Thread[NUM_SEARCH_THREADS];
- for (int threadID = 0; threadID < NUM_SEARCH_THREADS; threadID++) {
+ Thread[] threads = new Thread[numThreads];
+ for (int threadID = 0; threadID < numThreads; threadID++) {
threads[threadID] = new Thread() {
TotalHitCountCollector col = new TotalHitCountCollector();
@Override
@@ -84,13 +69,11 @@ public class TestSearchWithThreads extends LuceneTestCase {
try {
long totHits = 0;
long totSearch = 0;
- long stopAt = System.currentTimeMillis() + RUN_TIME_MSEC;
- while(System.currentTimeMillis() < stopAt && !failed.get()) {
+ for (; totSearch < numSearches & !failed.get(); totSearch++) {
s.search(new TermQuery(new Term("body", "aaa")), col);
totHits += col.getTotalHits();
s.search(new TermQuery(new Term("body", "bbb")), col);
totHits += col.getTotalHits();
- totSearch++;
}
assertTrue(totSearch > 0 && totHits > 0);
netSearch.addAndGet(totSearch);
@@ -111,7 +94,7 @@ public class TestSearchWithThreads extends LuceneTestCase {
t.join();
}
- if (VERBOSE) System.out.println(NUM_SEARCH_THREADS + " threads did " + netSearch.get() + " searches");
+ if (VERBOSE) System.out.println(numThreads + " threads did " + netSearch.get() + " searches");
r.close();
dir.close();
diff --git a/lucene/core/src/test/org/apache/lucene/search/TestSearcherManager.java b/lucene/core/src/test/org/apache/lucene/search/TestSearcherManager.java
index 717b960..3d3ec96 100644
--- a/lucene/core/src/test/org/apache/lucene/search/TestSearcherManager.java
+++ b/lucene/core/src/test/org/apache/lucene/search/TestSearcherManager.java
@@ -30,6 +30,7 @@ import java.util.concurrent.atomic.AtomicReference;
import org.apache.lucene.analysis.MockAnalyzer;
import org.apache.lucene.document.Document;
+import org.apache.lucene.document.Field;
import org.apache.lucene.index.ConcurrentMergeScheduler;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.FilterDirectoryReader;
@@ -44,7 +45,6 @@ import org.apache.lucene.index.Term;
import org.apache.lucene.index.ThreadedIndexingAndSearchingTestCase;
import org.apache.lucene.store.AlreadyClosedException;
import org.apache.lucene.store.Directory;
-import org.apache.lucene.util.LineFileDocs;
import org.apache.lucene.util.LuceneTestCase.SuppressCodecs;
import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.util.NamedThreadFactory;
@@ -551,7 +551,6 @@ public class TestSearcherManager extends ThreadedIndexingAndSearchingTestCase {
dir.close();
}
- @Slow
public void testConcurrentIndexCloseSearchAndRefresh() throws Exception {
final Directory dir = newFSDirectory(createTempDir());
AtomicReference<IndexWriter> writerRef = new AtomicReference<>();
@@ -567,12 +566,14 @@ public class TestSearcherManager extends ThreadedIndexingAndSearchingTestCase {
@Override
public void run() {
try {
- LineFileDocs docs = new LineFileDocs(random());
- long runTimeSec = TEST_NIGHTLY ? atLeast(10) : 1;
- long endTime = System.nanoTime() + runTimeSec * 1000000000;
- while (System.nanoTime() < endTime) {
+ int numDocs = TEST_NIGHTLY ? atLeast(20000) : atLeast(200);
+ for (int i = 0; i < numDocs; i++) {
IndexWriter w = writerRef.get();
- w.addDocument(docs.nextDoc());
+ Document doc = new Document();
+ doc.add(newTextField("field",
+ TestUtil.randomAnalysisString(random(), 256, false),
+ Field.Store.YES));
+ w.addDocument(doc);
if (random().nextInt(1000) == 17) {
if (random().nextBoolean()) {
w.close();
@@ -582,7 +583,6 @@ public class TestSearcherManager extends ThreadedIndexingAndSearchingTestCase {
writerRef.set(new IndexWriter(dir, newIndexWriterConfig(analyzer)));
}
}
- docs.close();
if (VERBOSE) {
System.out.println("TEST: index count=" + writerRef.get().getDocStats().maxDoc);
}
diff --git a/lucene/core/src/test/org/apache/lucene/store/TestMultiMMap.java b/lucene/core/src/test/org/apache/lucene/store/TestMultiMMap.java
index 25728d8..54e9b8e 100644
--- a/lucene/core/src/test/org/apache/lucene/store/TestMultiMMap.java
+++ b/lucene/core/src/test/org/apache/lucene/store/TestMultiMMap.java
@@ -152,7 +152,8 @@ public class TestMultiMMap extends BaseDirectoryTestCase {
}
public void testSeekZero() throws Exception {
- for (int i = 0; i < 31; i++) {
+ int upto = TEST_NIGHTLY ? 31 : 3;
+ for (int i = 0; i < upto; i++) {
MMapDirectory mmapDir = new MMapDirectory(createTempDir("testSeekZero"), 1<<i);
IndexOutput io = mmapDir.createOutput("zeroBytes", newIOContext(random()));
io.close();
@@ -164,7 +165,8 @@ public class TestMultiMMap extends BaseDirectoryTestCase {
}
public void testSeekSliceZero() throws Exception {
- for (int i = 0; i < 31; i++) {
+ int upto = TEST_NIGHTLY ? 31 : 3;
+ for (int i = 0; i < 3; i++) {
MMapDirectory mmapDir = new MMapDirectory(createTempDir("testSeekSliceZero"), 1<<i);
IndexOutput io = mmapDir.createOutput("zeroBytes", newIOContext(random()));
io.close();
@@ -269,7 +271,8 @@ public class TestMultiMMap extends BaseDirectoryTestCase {
}
public void testSliceOfSlice() throws Exception {
- for (int i = 0; i < 10; i++) {
+ int upto = TEST_NIGHTLY ? 10 : 8;
+ for (int i = 0; i < upto; i++) {
MMapDirectory mmapDir = new MMapDirectory(createTempDir("testSliceOfSlice"), 1<<i);
IndexOutput io = mmapDir.createOutput("bytes", newIOContext(random()));
byte bytes[] = new byte[1<<(i+1)]; // make sure we switch buffers
diff --git a/lucene/core/src/test/org/apache/lucene/util/TestBitUtil.java b/lucene/core/src/test/org/apache/lucene/util/TestBitUtil.java
index 84a7b75..b31a6fc 100644
--- a/lucene/core/src/test/org/apache/lucene/util/TestBitUtil.java
+++ b/lucene/core/src/test/org/apache/lucene/util/TestBitUtil.java
@@ -20,7 +20,8 @@ package org.apache.lucene.util;
public class TestBitUtil extends LuceneTestCase {
public void testNextBitSet() {
- for (int i = 0; i < 10000; i++) {
+ int numIterations = atLeast(1000);
+ for (int i = 0; i < numIterations; i++) {
long[] bits = buildRandomBits();
int numLong = bits.length - 1;
@@ -46,7 +47,8 @@ public class TestBitUtil extends LuceneTestCase {
}
public void testPreviousBitSet() {
- for (int i = 0; i < 10000; i++) {
+ int numIterations = atLeast(1000);
+ for (int i = 0; i < numIterations; i++) {
long[] bits = buildRandomBits();
int numLong = bits.length - 1;
diff --git a/lucene/core/src/test/org/apache/lucene/util/TestNumericUtils.java b/lucene/core/src/test/org/apache/lucene/util/TestNumericUtils.java
index c56dd1f..7dbbfd2 100644
--- a/lucene/core/src/test/org/apache/lucene/util/TestNumericUtils.java
+++ b/lucene/core/src/test/org/apache/lucene/util/TestNumericUtils.java
@@ -265,7 +265,7 @@ public class TestNumericUtils extends LuceneTestCase {
}
public void testAdd() throws Exception {
- int iters = atLeast(10000);
+ int iters = atLeast(1000);
int numBytes = TestUtil.nextInt(random(), 1, 100);
for(int iter=0;iter<iters;iter++) {
BigInteger v1 = new BigInteger(8*numBytes-1, random());
@@ -301,7 +301,7 @@ public class TestNumericUtils extends LuceneTestCase {
}
public void testSubtract() throws Exception {
- int iters = atLeast(10000);
+ int iters = atLeast(1000);
int numBytes = TestUtil.nextInt(random(), 1, 100);
for(int iter=0;iter<iters;iter++) {
BigInteger v1 = new BigInteger(8*numBytes-1, random());
diff --git a/lucene/core/src/test/org/apache/lucene/util/TestSloppyMath.java b/lucene/core/src/test/org/apache/lucene/util/TestSloppyMath.java
index 488f00e..446833b 100644
--- a/lucene/core/src/test/org/apache/lucene/util/TestSloppyMath.java
+++ b/lucene/core/src/test/org/apache/lucene/util/TestSloppyMath.java
@@ -130,7 +130,8 @@ public class TestSloppyMath extends LuceneTestCase {
/** Test this method sorts the same way as real haversin */
public void testHaversinSortKey() {
- for (int i = 0; i < 100000; i++) {
+ int iters = atLeast(10000);
+ for (int i = 0; i < iters; i++) {
double centerLat = GeoTestUtil.nextLatitude();
double centerLon = GeoTestUtil.nextLongitude();
diff --git a/lucene/core/src/test/org/apache/lucene/util/TestWeakIdentityMap.java b/lucene/core/src/test/org/apache/lucene/util/TestWeakIdentityMap.java
index 76e42ab..c1a868d 100644
--- a/lucene/core/src/test/org/apache/lucene/util/TestWeakIdentityMap.java
+++ b/lucene/core/src/test/org/apache/lucene/util/TestWeakIdentityMap.java
@@ -158,7 +158,8 @@ public class TestWeakIdentityMap extends LuceneTestCase {
public void testConcurrentHashMap() throws Exception {
// don't make threadCount and keyCount random, otherwise easily OOMs or fails otherwise:
- final int threadCount = 8, keyCount = 1024;
+ final int threadCount = TEST_NIGHTLY ? 8 : 2;
+ final int keyCount = 1024;
final ExecutorService exec = Executors.newFixedThreadPool(threadCount, new NamedThreadFactory("testConcurrentHashMap"));
final WeakIdentityMap<Object,Integer> map =
WeakIdentityMap.newConcurrentHashMap(random().nextBoolean());
diff --git a/lucene/core/src/test/org/apache/lucene/util/automaton/TestMinimize.java b/lucene/core/src/test/org/apache/lucene/util/automaton/TestMinimize.java
index 9c023bd..3e26d9f 100644
--- a/lucene/core/src/test/org/apache/lucene/util/automaton/TestMinimize.java
+++ b/lucene/core/src/test/org/apache/lucene/util/automaton/TestMinimize.java
@@ -64,7 +64,7 @@ public class TestMinimize extends LuceneTestCase {
}
/** n^2 space usage in Hopcroft minimization? */
- @Slow
+ @Nightly
public void testMinimizeHuge() {
new RegExp("+-*(A|.....|BC)*]", RegExp.NONE).toAutomaton(1000000);
}
diff --git a/lucene/test-framework/src/java/org/apache/lucene/index/RandomPostingsTester.java b/lucene/test-framework/src/java/org/apache/lucene/index/RandomPostingsTester.java
index 410635b..9d70fa1 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/index/RandomPostingsTester.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/index/RandomPostingsTester.java
@@ -1241,7 +1241,7 @@ public class RandomPostingsTester {
final boolean alwaysTestMax) throws Exception {
if (options.contains(Option.THREADS)) {
- int numThreads = TestUtil.nextInt(random, 2, 5);
+ int numThreads = LuceneTestCase.TEST_NIGHTLY ? TestUtil.nextInt(random, 2, 5) : 2;
Thread[] threads = new Thread[numThreads];
for(int threadUpto=0;threadUpto<numThreads;threadUpto++) {
threads[threadUpto] = new TestThread(new Random(random.nextLong()), this, fieldsSource, options, maxTestOptions, maxIndexOptions, alwaysTestMax);
diff --git a/lucene/test-framework/src/java/org/apache/lucene/index/ThreadedIndexingAndSearchingTestCase.java b/lucene/test-framework/src/java/org/apache/lucene/index/ThreadedIndexingAndSearchingTestCase.java
index a11c9e8..079f215 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/index/ThreadedIndexingAndSearchingTestCase.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/index/ThreadedIndexingAndSearchingTestCase.java
@@ -321,7 +321,7 @@ public abstract class ThreadedIndexingAndSearchingTestCase extends LuceneTestCas
}
protected void runSearchThreads(final long stopTimeMS) throws Exception {
- final int numThreads = TestUtil.nextInt(random(), 1, 5);
+ final int numThreads = TEST_NIGHTLY ? TestUtil.nextInt(random(), 1, 5) : 2;
final Thread[] searchThreads = new Thread[numThreads];
final AtomicLong totHits = new AtomicLong();
diff --git a/lucene/test-framework/src/java/org/apache/lucene/search/CheckHits.java b/lucene/test-framework/src/java/org/apache/lucene/search/CheckHits.java
index 36a77fb..3cb7f0a 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/search/CheckHits.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/search/CheckHits.java
@@ -326,6 +326,7 @@ public class CheckHits {
* @param deep indicates whether a deep comparison of sub-Explanation details should be executed
* @param expl The Explanation to match against score
*/
+ // TODO: speed up this method to not be so slow
public static void verifyExplanation(String q,
int doc,
float score,
diff --git a/lucene/test-framework/src/java/org/apache/lucene/search/similarities/BaseSimilarityTestCase.java b/lucene/test-framework/src/java/org/apache/lucene/search/similarities/BaseSimilarityTestCase.java
index 15d2c6a..94cc04c 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/search/similarities/BaseSimilarityTestCase.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/search/similarities/BaseSimilarityTestCase.java
@@ -359,7 +359,9 @@ public abstract class BaseSimilarityTestCase extends LuceneTestCase {
if (score != explanation.getValue().doubleValue()) {
fail("expected: " + score + ", got: " + explanation);
}
- CheckHits.verifyExplanation("<test query>", 0, score, true, explanation);
+ if (rarely()) {
+ CheckHits.verifyExplanation("<test query>", 0, score, true, explanation);
+ }
// check score(freq-1), given the same norm it should be <= score(freq) [scores non-decreasing for more term occurrences]
final float prevFreq;
@@ -380,7 +382,9 @@ public abstract class BaseSimilarityTestCase extends LuceneTestCase {
if (prevScore != prevExplanation.getValue().doubleValue()) {
fail("expected: " + prevScore + ", got: " + prevExplanation);
}
- CheckHits.verifyExplanation("test query (prevFreq)", 0, prevScore, true, prevExplanation);
+ if (rarely()) {
+ CheckHits.verifyExplanation("test query (prevFreq)", 0, prevScore, true, prevExplanation);
+ }
if (prevScore > score) {
System.out.println(prevExplanation);
@@ -399,8 +403,9 @@ public abstract class BaseSimilarityTestCase extends LuceneTestCase {
if (prevNormScore != prevNormExplanation.getValue().doubleValue()) {
fail("expected: " + prevNormScore + ", got: " + prevNormExplanation);
}
- CheckHits.verifyExplanation("test query (prevNorm)", 0, prevNormScore, true, prevNormExplanation);
-
+ if (rarely()) {
+ CheckHits.verifyExplanation("test query (prevNorm)", 0, prevNormScore, true, prevNormExplanation);
+ }
if (prevNormScore < score) {
System.out.println(prevNormExplanation);
System.out.println(explanation);
@@ -421,7 +426,9 @@ public abstract class BaseSimilarityTestCase extends LuceneTestCase {
if (prevTermScore != prevTermExplanation.getValue().doubleValue()) {
fail("expected: " + prevTermScore + ", got: " + prevTermExplanation);
}
- CheckHits.verifyExplanation("test query (prevTerm)", 0, prevTermScore, true, prevTermExplanation);
+ if (rarely()) {
+ CheckHits.verifyExplanation("test query (prevTerm)", 0, prevTermScore, true, prevTermExplanation);
+ }
if (prevTermScore < score) {
System.out.println(prevTermExplanation);