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 2016/02/03 10:23:16 UTC
[3/5] lucene-solr git commit: migrate current patch from svn
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/84f44589/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java
index baa2484..3b45036 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java
@@ -22,7 +22,11 @@ import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintStream;
import java.io.StringReader;
+import java.net.URI;
+import java.nio.file.FileSystem;
+import java.nio.file.Files;
import java.nio.file.NoSuchFileException;
+import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -58,6 +62,8 @@ import org.apache.lucene.document.StoredField;
import org.apache.lucene.document.StringField;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
+import org.apache.lucene.mockfile.FilterPath;
+import org.apache.lucene.mockfile.WindowsFS;
import org.apache.lucene.search.DocIdSetIterator;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.MatchAllDocsQuery;
@@ -67,10 +73,12 @@ import org.apache.lucene.search.TermQuery;
import org.apache.lucene.store.AlreadyClosedException;
import org.apache.lucene.store.BaseDirectoryWrapper;
import org.apache.lucene.store.Directory;
+import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.store.IOContext;
import org.apache.lucene.store.IndexOutput;
import org.apache.lucene.store.LockObtainFailedException;
import org.apache.lucene.store.MockDirectoryWrapper;
+import org.apache.lucene.store.NIOFSDirectory;
import org.apache.lucene.store.NoLockFactory;
import org.apache.lucene.store.RAMDirectory;
import org.apache.lucene.store.SimpleFSLockFactory;
@@ -90,494 +98,467 @@ import org.junit.Test;
public class TestIndexWriter extends LuceneTestCase {
- private static final FieldType storedTextType = new FieldType(TextField.TYPE_NOT_STORED);
- public void testDocCount() throws IOException {
- Directory dir = newDirectory();
-
- IndexWriter writer = null;
- IndexReader reader = null;
- int i;
+ private static final FieldType storedTextType = new FieldType(TextField.TYPE_NOT_STORED);
+ public void testDocCount() throws IOException {
+ Directory dir = newDirectory();
- writer = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random())));
+ IndexWriter writer = null;
+ IndexReader reader = null;
+ int i;
- // add 100 documents
- for (i = 0; i < 100; i++) {
- addDocWithIndex(writer,i);
- }
- assertEquals(100, writer.maxDoc());
- writer.close();
+ writer = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random())));
- // delete 40 documents
- writer = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random()))
- .setMergePolicy(NoMergePolicy.INSTANCE));
- for (i = 0; i < 40; i++) {
- writer.deleteDocuments(new Term("id", ""+i));
- }
- writer.close();
+ // add 100 documents
+ for (i = 0; i < 100; i++) {
+ addDocWithIndex(writer,i);
+ }
+ assertEquals(100, writer.maxDoc());
+ writer.close();
- reader = DirectoryReader.open(dir);
- assertEquals(60, reader.numDocs());
- reader.close();
+ // delete 40 documents
+ writer = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random()))
+ .setMergePolicy(NoMergePolicy.INSTANCE));
+ for (i = 0; i < 40; i++) {
+ writer.deleteDocuments(new Term("id", ""+i));
+ }
+ writer.close();
- // merge the index down and check that the new doc count is correct
- writer = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random())));
- assertEquals(60, writer.numDocs());
- writer.forceMerge(1);
- assertEquals(60, writer.maxDoc());
- assertEquals(60, writer.numDocs());
- writer.close();
+ reader = DirectoryReader.open(dir);
+ assertEquals(60, reader.numDocs());
+ reader.close();
- // check that the index reader gives the same numbers.
- reader = DirectoryReader.open(dir);
- assertEquals(60, reader.maxDoc());
- assertEquals(60, reader.numDocs());
- reader.close();
-
- // make sure opening a new index for create over
- // this existing one works correctly:
- writer = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random()))
- .setOpenMode(OpenMode.CREATE));
- assertEquals(0, writer.maxDoc());
- assertEquals(0, writer.numDocs());
- writer.close();
- dir.close();
- }
+ // merge the index down and check that the new doc count is correct
+ writer = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random())));
+ assertEquals(60, writer.numDocs());
+ writer.forceMerge(1);
+ assertEquals(60, writer.maxDoc());
+ assertEquals(60, writer.numDocs());
+ writer.close();
- static void addDoc(IndexWriter writer) throws IOException
- {
- Document doc = new Document();
- doc.add(newTextField("content", "aaa", Field.Store.NO));
- writer.addDocument(doc);
- }
+ // check that the index reader gives the same numbers.
+ reader = DirectoryReader.open(dir);
+ assertEquals(60, reader.maxDoc());
+ assertEquals(60, reader.numDocs());
+ reader.close();
- static void addDocWithIndex(IndexWriter writer, int index) throws IOException
- {
- Document doc = new Document();
- doc.add(newField("content", "aaa " + index, storedTextType));
- doc.add(newField("id", "" + index, storedTextType));
- writer.addDocument(doc);
- }
+ // make sure opening a new index for create over
+ // this existing one works correctly:
+ writer = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random()))
+ .setOpenMode(OpenMode.CREATE));
+ assertEquals(0, writer.maxDoc());
+ assertEquals(0, writer.numDocs());
+ writer.close();
+ dir.close();
+ }
+ static void addDoc(IndexWriter writer) throws IOException
+ {
+ Document doc = new Document();
+ doc.add(newTextField("content", "aaa", Field.Store.NO));
+ writer.addDocument(doc);
+ }
+ static void addDocWithIndex(IndexWriter writer, int index) throws IOException
+ {
+ Document doc = new Document();
+ doc.add(newField("content", "aaa " + index, storedTextType));
+ doc.add(newField("id", "" + index, storedTextType));
+ writer.addDocument(doc);
+ }
- // TODO: we have the logic in MDW to do this check, and it's better, because it knows about files it tried
- // to delete but couldn't: we should replace this!!!!
- public static void assertNoUnreferencedFiles(Directory dir, String message) throws IOException {
- if (dir instanceof MockDirectoryWrapper) {
- assertFalse("test is broken: should disable virus scanner", ((MockDirectoryWrapper)dir).getEnableVirusScanner());
- }
- String[] startFiles = dir.listAll();
- new IndexWriter(dir, new IndexWriterConfig(new MockAnalyzer(random()))).rollback();
- String[] endFiles = dir.listAll();
+ // TODO: we have the logic in MDW to do this check, and it's better, because it knows about files it tried
+ // to delete but couldn't: we should replace this!!!!
+ public static void assertNoUnreferencedFiles(Directory dir, String message) throws IOException {
+ String[] startFiles = dir.listAll();
+ new IndexWriter(dir, new IndexWriterConfig(new MockAnalyzer(random()))).rollback();
+ String[] endFiles = dir.listAll();
- Arrays.sort(startFiles);
- Arrays.sort(endFiles);
+ Arrays.sort(startFiles);
+ Arrays.sort(endFiles);
- if (!Arrays.equals(startFiles, endFiles)) {
- fail(message + ": before delete:\n " + arrayToString(startFiles) + "\n after delete:\n " + arrayToString(endFiles));
- }
+ if (!Arrays.equals(startFiles, endFiles)) {
+ fail(message + ": before delete:\n " + arrayToString(startFiles) + "\n after delete:\n " + arrayToString(endFiles));
}
+ }
- static String arrayToString(String[] l) {
- String s = "";
- for(int i=0;i<l.length;i++) {
- if (i > 0) {
- s += "\n ";
- }
- s += l[i];
+ static String arrayToString(String[] l) {
+ String s = "";
+ for(int i=0;i<l.length;i++) {
+ if (i > 0) {
+ s += "\n ";
}
- return s;
+ s += l[i];
}
+ return s;
+ }
- // Make sure we can open an index for create even when a
- // reader holds it open (this fails pre lock-less
- // commits on windows):
- public void testCreateWithReader() throws IOException {
- Directory dir = newDirectory();
+ // Make sure we can open an index for create even when a
+ // reader holds it open (this fails pre lock-less
+ // commits on windows):
+ public void testCreateWithReader() throws IOException {
+ Directory dir = newDirectory();
- // add one document & close writer
- IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random())));
- addDoc(writer);
- writer.close();
+ // add one document & close writer
+ IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random())));
+ addDoc(writer);
+ writer.close();
- // now open reader:
- IndexReader reader = DirectoryReader.open(dir);
- assertEquals("should be one document", reader.numDocs(), 1);
+ // now open reader:
+ IndexReader reader = DirectoryReader.open(dir);
+ assertEquals("should be one document", reader.numDocs(), 1);
- // now open index for create:
- writer = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random()))
- .setOpenMode(OpenMode.CREATE));
- assertEquals("should be zero documents", writer.maxDoc(), 0);
- addDoc(writer);
- writer.close();
+ // now open index for create:
+ writer = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random()))
+ .setOpenMode(OpenMode.CREATE));
+ assertEquals("should be zero documents", writer.maxDoc(), 0);
+ addDoc(writer);
+ writer.close();
- assertEquals("should be one document", reader.numDocs(), 1);
- IndexReader reader2 = DirectoryReader.open(dir);
- assertEquals("should be one document", reader2.numDocs(), 1);
- reader.close();
- reader2.close();
+ assertEquals("should be one document", reader.numDocs(), 1);
+ IndexReader reader2 = DirectoryReader.open(dir);
+ assertEquals("should be one document", reader2.numDocs(), 1);
+ reader.close();
+ reader2.close();
- dir.close();
- }
+ dir.close();
+ }
- public void testChangesAfterClose() throws IOException {
- Directory dir = newDirectory();
+ public void testChangesAfterClose() throws IOException {
+ Directory dir = newDirectory();
- IndexWriter writer = null;
+ IndexWriter writer = null;
- writer = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random())));
- addDoc(writer);
+ writer = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random())));
+ addDoc(writer);
- // close
- writer.close();
- try {
- addDoc(writer);
- fail("did not hit AlreadyClosedException");
- } catch (AlreadyClosedException e) {
- // expected
- }
- dir.close();
+ // close
+ writer.close();
+ try {
+ addDoc(writer);
+ fail("did not hit AlreadyClosedException");
+ } catch (AlreadyClosedException e) {
+ // expected
}
+ dir.close();
+ }
- public void testIndexNoDocuments() throws IOException {
- Directory dir = newDirectory();
- IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random())));
- writer.commit();
- writer.close();
+ public void testIndexNoDocuments() throws IOException {
+ Directory dir = newDirectory();
+ IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random())));
+ writer.commit();
+ writer.close();
- IndexReader reader = DirectoryReader.open(dir);
- assertEquals(0, reader.maxDoc());
- assertEquals(0, reader.numDocs());
- reader.close();
+ IndexReader reader = DirectoryReader.open(dir);
+ assertEquals(0, reader.maxDoc());
+ assertEquals(0, reader.numDocs());
+ reader.close();
- writer = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random()))
- .setOpenMode(OpenMode.APPEND));
- writer.commit();
- writer.close();
+ writer = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random()))
+ .setOpenMode(OpenMode.APPEND));
+ writer.commit();
+ writer.close();
- reader = DirectoryReader.open(dir);
- assertEquals(0, reader.maxDoc());
- assertEquals(0, reader.numDocs());
- reader.close();
- dir.close();
+ reader = DirectoryReader.open(dir);
+ assertEquals(0, reader.maxDoc());
+ assertEquals(0, reader.numDocs());
+ reader.close();
+ dir.close();
+ }
+
+ public void testSmallRAMBuffer() throws IOException {
+ Directory dir = newDirectory();
+ IndexWriter writer = new IndexWriter(
+ dir,
+ newIndexWriterConfig(new MockAnalyzer(random()))
+ .setRAMBufferSizeMB(0.000001)
+ .setMergePolicy(newLogMergePolicy(10))
+ );
+ int lastNumSegments = getSegmentCount(dir);
+ for(int j=0;j<9;j++) {
+ Document doc = new Document();
+ doc.add(newField("field", "aaa" + j, storedTextType));
+ writer.addDocument(doc);
+ // Verify that with a tiny RAM buffer we see new
+ // segment after every doc
+ int numSegments = getSegmentCount(dir);
+ assertTrue(numSegments > lastNumSegments);
+ lastNumSegments = numSegments;
}
+ writer.close();
+ dir.close();
+ }
- public void testSmallRAMBuffer() throws IOException {
- Directory dir = newDirectory();
- IndexWriter writer = new IndexWriter(
- dir,
- newIndexWriterConfig(new MockAnalyzer(random()))
- .setRAMBufferSizeMB(0.000001)
- .setMergePolicy(newLogMergePolicy(10))
- );
- int lastNumSegments = getSegmentCount(dir);
- for(int j=0;j<9;j++) {
- Document doc = new Document();
- doc.add(newField("field", "aaa" + j, storedTextType));
- writer.addDocument(doc);
- // Verify that with a tiny RAM buffer we see new
- // segment after every doc
- int numSegments = getSegmentCount(dir);
- assertTrue(numSegments > lastNumSegments);
- lastNumSegments = numSegments;
- }
- writer.close();
- dir.close();
+ /** Returns how many unique segment names are in the directory. */
+ private static int getSegmentCount(Directory dir) throws IOException {
+ Set<String> segments = new HashSet<>();
+ for(String file : dir.listAll()) {
+ segments.add(IndexFileNames.parseSegmentName(file));
}
- /** Returns how many unique segment names are in the directory. */
- private static int getSegmentCount(Directory dir) throws IOException {
- Set<String> segments = new HashSet<>();
- for(String file : dir.listAll()) {
- segments.add(IndexFileNames.parseSegmentName(file));
- }
+ return segments.size();
+ }
- return segments.size();
- }
+ // Make sure it's OK to change RAM buffer size and
+ // maxBufferedDocs in a write session
+ public void testChangingRAMBuffer() throws IOException {
+ Directory dir = newDirectory();
+ IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random())));
+ writer.getConfig().setMaxBufferedDocs(10);
+ writer.getConfig().setRAMBufferSizeMB(IndexWriterConfig.DISABLE_AUTO_FLUSH);
- // Make sure it's OK to change RAM buffer size and
- // maxBufferedDocs in a write session
- public void testChangingRAMBuffer() throws IOException {
- Directory dir = newDirectory();
- IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random())));
- writer.getConfig().setMaxBufferedDocs(10);
- writer.getConfig().setRAMBufferSizeMB(IndexWriterConfig.DISABLE_AUTO_FLUSH);
-
- int lastFlushCount = -1;
- for(int j=1;j<52;j++) {
- Document doc = new Document();
- doc.add(new Field("field", "aaa" + j, storedTextType));
- writer.addDocument(doc);
- TestUtil.syncConcurrentMerges(writer);
- int flushCount = writer.getFlushCount();
- if (j == 1)
- lastFlushCount = flushCount;
- else if (j < 10)
- // No new files should be created
- assertEquals(flushCount, lastFlushCount);
- else if (10 == j) {
- assertTrue(flushCount > lastFlushCount);
- lastFlushCount = flushCount;
- writer.getConfig().setRAMBufferSizeMB(0.000001);
- writer.getConfig().setMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH);
- } else if (j < 20) {
- assertTrue(flushCount > lastFlushCount);
- lastFlushCount = flushCount;
- } else if (20 == j) {
- writer.getConfig().setRAMBufferSizeMB(16);
- writer.getConfig().setMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH);
- lastFlushCount = flushCount;
- } else if (j < 30) {
- assertEquals(flushCount, lastFlushCount);
- } else if (30 == j) {
- writer.getConfig().setRAMBufferSizeMB(0.000001);
- writer.getConfig().setMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH);
- } else if (j < 40) {
- assertTrue(flushCount> lastFlushCount);
- lastFlushCount = flushCount;
- } else if (40 == j) {
- writer.getConfig().setMaxBufferedDocs(10);
- writer.getConfig().setRAMBufferSizeMB(IndexWriterConfig.DISABLE_AUTO_FLUSH);
- lastFlushCount = flushCount;
- } else if (j < 50) {
- assertEquals(flushCount, lastFlushCount);
- writer.getConfig().setMaxBufferedDocs(10);
- writer.getConfig().setRAMBufferSizeMB(IndexWriterConfig.DISABLE_AUTO_FLUSH);
- } else if (50 == j) {
- assertTrue(flushCount > lastFlushCount);
- }
+ int lastFlushCount = -1;
+ for(int j=1;j<52;j++) {
+ Document doc = new Document();
+ doc.add(new Field("field", "aaa" + j, storedTextType));
+ writer.addDocument(doc);
+ TestUtil.syncConcurrentMerges(writer);
+ int flushCount = writer.getFlushCount();
+ if (j == 1)
+ lastFlushCount = flushCount;
+ else if (j < 10)
+ // No new files should be created
+ assertEquals(flushCount, lastFlushCount);
+ else if (10 == j) {
+ assertTrue(flushCount > lastFlushCount);
+ lastFlushCount = flushCount;
+ writer.getConfig().setRAMBufferSizeMB(0.000001);
+ writer.getConfig().setMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH);
+ } else if (j < 20) {
+ assertTrue(flushCount > lastFlushCount);
+ lastFlushCount = flushCount;
+ } else if (20 == j) {
+ writer.getConfig().setRAMBufferSizeMB(16);
+ writer.getConfig().setMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH);
+ lastFlushCount = flushCount;
+ } else if (j < 30) {
+ assertEquals(flushCount, lastFlushCount);
+ } else if (30 == j) {
+ writer.getConfig().setRAMBufferSizeMB(0.000001);
+ writer.getConfig().setMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH);
+ } else if (j < 40) {
+ assertTrue(flushCount> lastFlushCount);
+ lastFlushCount = flushCount;
+ } else if (40 == j) {
+ writer.getConfig().setMaxBufferedDocs(10);
+ writer.getConfig().setRAMBufferSizeMB(IndexWriterConfig.DISABLE_AUTO_FLUSH);
+ lastFlushCount = flushCount;
+ } else if (j < 50) {
+ assertEquals(flushCount, lastFlushCount);
+ writer.getConfig().setMaxBufferedDocs(10);
+ writer.getConfig().setRAMBufferSizeMB(IndexWriterConfig.DISABLE_AUTO_FLUSH);
+ } else if (50 == j) {
+ assertTrue(flushCount > lastFlushCount);
}
- writer.close();
- dir.close();
}
+ writer.close();
+ dir.close();
+ }
- public void testChangingRAMBuffer2() throws IOException {
- Directory dir = newDirectory();
- IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random())));
- writer.getConfig().setMaxBufferedDocs(10);
- writer.getConfig().setMaxBufferedDeleteTerms(10);
- writer.getConfig().setRAMBufferSizeMB(IndexWriterConfig.DISABLE_AUTO_FLUSH);
+ public void testChangingRAMBuffer2() throws IOException {
+ Directory dir = newDirectory();
+ IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random())));
+ writer.getConfig().setMaxBufferedDocs(10);
+ writer.getConfig().setMaxBufferedDeleteTerms(10);
+ writer.getConfig().setRAMBufferSizeMB(IndexWriterConfig.DISABLE_AUTO_FLUSH);
- for(int j=1;j<52;j++) {
- Document doc = new Document();
- doc.add(new Field("field", "aaa" + j, storedTextType));
- writer.addDocument(doc);
- }
+ for(int j=1;j<52;j++) {
+ Document doc = new Document();
+ doc.add(new Field("field", "aaa" + j, storedTextType));
+ writer.addDocument(doc);
+ }
- int lastFlushCount = -1;
- for(int j=1;j<52;j++) {
- writer.deleteDocuments(new Term("field", "aaa" + j));
- TestUtil.syncConcurrentMerges(writer);
- int flushCount = writer.getFlushCount();
+ int lastFlushCount = -1;
+ for(int j=1;j<52;j++) {
+ writer.deleteDocuments(new Term("field", "aaa" + j));
+ TestUtil.syncConcurrentMerges(writer);
+ int flushCount = writer.getFlushCount();
- if (j == 1)
- lastFlushCount = flushCount;
- else if (j < 10) {
- // No new files should be created
- assertEquals(flushCount, lastFlushCount);
- } else if (10 == j) {
- assertTrue("" + j, flushCount > lastFlushCount);
- lastFlushCount = flushCount;
- writer.getConfig().setRAMBufferSizeMB(0.000001);
- writer.getConfig().setMaxBufferedDeleteTerms(1);
- } else if (j < 20) {
- assertTrue(flushCount > lastFlushCount);
- lastFlushCount = flushCount;
- } else if (20 == j) {
- writer.getConfig().setRAMBufferSizeMB(16);
- writer.getConfig().setMaxBufferedDeleteTerms(IndexWriterConfig.DISABLE_AUTO_FLUSH);
- lastFlushCount = flushCount;
- } else if (j < 30) {
- assertEquals(flushCount, lastFlushCount);
- } else if (30 == j) {
- writer.getConfig().setRAMBufferSizeMB(0.000001);
- writer.getConfig().setMaxBufferedDeleteTerms(IndexWriterConfig.DISABLE_AUTO_FLUSH);
- writer.getConfig().setMaxBufferedDeleteTerms(1);
- } else if (j < 40) {
- assertTrue(flushCount> lastFlushCount);
- lastFlushCount = flushCount;
- } else if (40 == j) {
- writer.getConfig().setMaxBufferedDeleteTerms(10);
- writer.getConfig().setRAMBufferSizeMB(IndexWriterConfig.DISABLE_AUTO_FLUSH);
- lastFlushCount = flushCount;
- } else if (j < 50) {
- assertEquals(flushCount, lastFlushCount);
- writer.getConfig().setMaxBufferedDeleteTerms(10);
- writer.getConfig().setRAMBufferSizeMB(IndexWriterConfig.DISABLE_AUTO_FLUSH);
- } else if (50 == j) {
- assertTrue(flushCount > lastFlushCount);
- }
+ if (j == 1)
+ lastFlushCount = flushCount;
+ else if (j < 10) {
+ // No new files should be created
+ assertEquals(flushCount, lastFlushCount);
+ } else if (10 == j) {
+ assertTrue("" + j, flushCount > lastFlushCount);
+ lastFlushCount = flushCount;
+ writer.getConfig().setRAMBufferSizeMB(0.000001);
+ writer.getConfig().setMaxBufferedDeleteTerms(1);
+ } else if (j < 20) {
+ assertTrue(flushCount > lastFlushCount);
+ lastFlushCount = flushCount;
+ } else if (20 == j) {
+ writer.getConfig().setRAMBufferSizeMB(16);
+ writer.getConfig().setMaxBufferedDeleteTerms(IndexWriterConfig.DISABLE_AUTO_FLUSH);
+ lastFlushCount = flushCount;
+ } else if (j < 30) {
+ assertEquals(flushCount, lastFlushCount);
+ } else if (30 == j) {
+ writer.getConfig().setRAMBufferSizeMB(0.000001);
+ writer.getConfig().setMaxBufferedDeleteTerms(IndexWriterConfig.DISABLE_AUTO_FLUSH);
+ writer.getConfig().setMaxBufferedDeleteTerms(1);
+ } else if (j < 40) {
+ assertTrue(flushCount> lastFlushCount);
+ lastFlushCount = flushCount;
+ } else if (40 == j) {
+ writer.getConfig().setMaxBufferedDeleteTerms(10);
+ writer.getConfig().setRAMBufferSizeMB(IndexWriterConfig.DISABLE_AUTO_FLUSH);
+ lastFlushCount = flushCount;
+ } else if (j < 50) {
+ assertEquals(flushCount, lastFlushCount);
+ writer.getConfig().setMaxBufferedDeleteTerms(10);
+ writer.getConfig().setRAMBufferSizeMB(IndexWriterConfig.DISABLE_AUTO_FLUSH);
+ } else if (50 == j) {
+ assertTrue(flushCount > lastFlushCount);
}
- writer.close();
- dir.close();
}
+ writer.close();
+ dir.close();
+ }
- public void testEnablingNorms() throws IOException {
- Directory dir = newDirectory();
- IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random()))
- .setMaxBufferedDocs(10));
- // Enable norms for only 1 doc, pre flush
- FieldType customType = new FieldType(TextField.TYPE_STORED);
- customType.setOmitNorms(true);
- for(int j=0;j<10;j++) {
- Document doc = new Document();
- Field f = null;
- if (j != 8) {
- f = newField("field", "aaa", customType);
- }
- else {
- f = newField("field", "aaa", storedTextType);
- }
- doc.add(f);
- writer.addDocument(doc);
+ public void testEnablingNorms() throws IOException {
+ Directory dir = newDirectory();
+ IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random()))
+ .setMaxBufferedDocs(10));
+ // Enable norms for only 1 doc, pre flush
+ FieldType customType = new FieldType(TextField.TYPE_STORED);
+ customType.setOmitNorms(true);
+ for(int j=0;j<10;j++) {
+ Document doc = new Document();
+ Field f = null;
+ if (j != 8) {
+ f = newField("field", "aaa", customType);
}
- writer.close();
-
- Term searchTerm = new Term("field", "aaa");
-
- IndexReader reader = DirectoryReader.open(dir);
- IndexSearcher searcher = newSearcher(reader);
- ScoreDoc[] hits = searcher.search(new TermQuery(searchTerm), 1000).scoreDocs;
- assertEquals(10, hits.length);
- reader.close();
-
- writer = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random()))
- .setOpenMode(OpenMode.CREATE).setMaxBufferedDocs(10));
- // Enable norms for only 1 doc, post flush
- for(int j=0;j<27;j++) {
- Document doc = new Document();
- Field f = null;
- if (j != 26) {
- f = newField("field", "aaa", customType);
- }
- else {
- f = newField("field", "aaa", storedTextType);
- }
- doc.add(f);
- writer.addDocument(doc);
+ else {
+ f = newField("field", "aaa", storedTextType);
}
- writer.close();
- reader = DirectoryReader.open(dir);
- searcher = newSearcher(reader);
- hits = searcher.search(new TermQuery(searchTerm), 1000).scoreDocs;
- assertEquals(27, hits.length);
- reader.close();
-
- reader = DirectoryReader.open(dir);
- reader.close();
-
- dir.close();
+ doc.add(f);
+ writer.addDocument(doc);
}
+ writer.close();
- public void testHighFreqTerm() throws IOException {
- Directory dir = newDirectory();
- IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random()))
- .setRAMBufferSizeMB(0.01));
- // Massive doc that has 128 K a's
- StringBuilder b = new StringBuilder(1024*1024);
- for(int i=0;i<4096;i++) {
- b.append(" a a a a a a a a");
- b.append(" a a a a a a a a");
- b.append(" a a a a a a a a");
- b.append(" a a a a a a a a");
- }
- Document doc = new Document();
- FieldType customType = new FieldType(TextField.TYPE_STORED);
- customType.setStoreTermVectors(true);
- customType.setStoreTermVectorPositions(true);
- customType.setStoreTermVectorOffsets(true);
- doc.add(newField("field", b.toString(), customType));
- writer.addDocument(doc);
- writer.close();
+ Term searchTerm = new Term("field", "aaa");
- IndexReader reader = DirectoryReader.open(dir);
- assertEquals(1, reader.maxDoc());
- assertEquals(1, reader.numDocs());
- Term t = new Term("field", "a");
- assertEquals(1, reader.docFreq(t));
- PostingsEnum td = TestUtil.docs(random(), reader,
- "field",
- new BytesRef("a"),
- null,
- PostingsEnum.FREQS);
- td.nextDoc();
- assertEquals(128*1024, td.freq());
- reader.close();
- dir.close();
- }
+ IndexReader reader = DirectoryReader.open(dir);
+ IndexSearcher searcher = newSearcher(reader);
+ ScoreDoc[] hits = searcher.search(new TermQuery(searchTerm), 1000).scoreDocs;
+ assertEquals(10, hits.length);
+ reader.close();
- public void testFlushWithNoMerging() throws IOException {
- Directory dir = newDirectory();
- IndexWriter writer = new IndexWriter(
- dir,
- newIndexWriterConfig(new MockAnalyzer(random()))
- .setMaxBufferedDocs(2)
- .setMergePolicy(newLogMergePolicy(10))
- );
+ writer = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random()))
+ .setOpenMode(OpenMode.CREATE).setMaxBufferedDocs(10));
+ // Enable norms for only 1 doc, post flush
+ for(int j=0;j<27;j++) {
Document doc = new Document();
- FieldType customType = new FieldType(TextField.TYPE_STORED);
- customType.setStoreTermVectors(true);
- customType.setStoreTermVectorPositions(true);
- customType.setStoreTermVectorOffsets(true);
- doc.add(newField("field", "aaa", customType));
- for(int i=0;i<19;i++) {
- writer.addDocument(doc);
+ Field f = null;
+ if (j != 26) {
+ f = newField("field", "aaa", customType);
}
- writer.flush(false, true);
- writer.close();
- SegmentInfos sis = SegmentInfos.readLatestCommit(dir);
- // Since we flushed w/o allowing merging we should now
- // have 10 segments
- assertEquals(10, sis.size());
- dir.close();
- }
-
- public void testFlushWithNoCommit() throws IOException {
- Directory dir = newDirectory();
- IndexWriterConfig iwc = new IndexWriterConfig(new MockAnalyzer(random()));
- IndexWriter writer = new IndexWriter(dir, iwc);
- Document doc = new Document();
- writer.addDocument(doc);
- writer.commit();
-
+ else {
+ f = newField("field", "aaa", storedTextType);
+ }
+ doc.add(f);
writer.addDocument(doc);
- writer.flush();
- DirectoryReader r = DirectoryReader.open(dir);
- assertEquals(1, r.maxDoc());
- writer.commit();
- DirectoryReader r2 = DirectoryReader.openIfChanged(r);
- assertNotNull(r2);
- assertEquals(2, r2.maxDoc());
- IOUtils.close(r2, r, writer, dir);
}
+ writer.close();
+ reader = DirectoryReader.open(dir);
+ searcher = newSearcher(reader);
+ hits = searcher.search(new TermQuery(searchTerm), 1000).scoreDocs;
+ assertEquals(27, hits.length);
+ reader.close();
- // Make sure we can flush segment w/ norms, then add
- // empty doc (no norms) and flush
- public void testEmptyDocAfterFlushingRealDoc() throws IOException {
- Directory dir = newDirectory();
- IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random())));
- Document doc = new Document();
- FieldType customType = new FieldType(TextField.TYPE_STORED);
- customType.setStoreTermVectors(true);
- customType.setStoreTermVectorPositions(true);
- customType.setStoreTermVectorOffsets(true);
- doc.add(newField("field", "aaa", customType));
- writer.addDocument(doc);
- writer.commit();
- if (VERBOSE) {
- System.out.println("\nTEST: now add empty doc");
- }
- writer.addDocument(new Document());
- writer.close();
- IndexReader reader = DirectoryReader.open(dir);
- assertEquals(2, reader.numDocs());
- reader.close();
- dir.close();
+ reader = DirectoryReader.open(dir);
+ reader.close();
+
+ dir.close();
+ }
+
+ public void testHighFreqTerm() throws IOException {
+ Directory dir = newDirectory();
+ IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random()))
+ .setRAMBufferSizeMB(0.01));
+ // Massive doc that has 128 K a's
+ StringBuilder b = new StringBuilder(1024*1024);
+ for(int i=0;i<4096;i++) {
+ b.append(" a a a a a a a a");
+ b.append(" a a a a a a a a");
+ b.append(" a a a a a a a a");
+ b.append(" a a a a a a a a");
}
+ Document doc = new Document();
+ FieldType customType = new FieldType(TextField.TYPE_STORED);
+ customType.setStoreTermVectors(true);
+ customType.setStoreTermVectorPositions(true);
+ customType.setStoreTermVectorOffsets(true);
+ doc.add(newField("field", b.toString(), customType));
+ writer.addDocument(doc);
+ writer.close();
+ IndexReader reader = DirectoryReader.open(dir);
+ assertEquals(1, reader.maxDoc());
+ assertEquals(1, reader.numDocs());
+ Term t = new Term("field", "a");
+ assertEquals(1, reader.docFreq(t));
+ PostingsEnum td = TestUtil.docs(random(), reader,
+ "field",
+ new BytesRef("a"),
+ null,
+ PostingsEnum.FREQS);
+ td.nextDoc();
+ assertEquals(128*1024, td.freq());
+ reader.close();
+ dir.close();
+ }
+
+ public void testFlushWithNoMerging() throws IOException {
+ Directory dir = newDirectory();
+ IndexWriter writer = new IndexWriter(
+ dir,
+ newIndexWriterConfig(new MockAnalyzer(random()))
+ .setMaxBufferedDocs(2)
+ .setMergePolicy(newLogMergePolicy(10))
+ );
+ Document doc = new Document();
+ FieldType customType = new FieldType(TextField.TYPE_STORED);
+ customType.setStoreTermVectors(true);
+ customType.setStoreTermVectorPositions(true);
+ customType.setStoreTermVectorOffsets(true);
+ doc.add(newField("field", "aaa", customType));
+ for(int i=0;i<19;i++)
+ writer.addDocument(doc);
+ writer.flush(false, true);
+ writer.close();
+ SegmentInfos sis = SegmentInfos.readLatestCommit(dir);
+ // Since we flushed w/o allowing merging we should now
+ // have 10 segments
+ assertEquals(10, sis.size());
+ dir.close();
+ }
+ // Make sure we can flush segment w/ norms, then add
+ // empty doc (no norms) and flush
+ public void testEmptyDocAfterFlushingRealDoc() throws IOException {
+ Directory dir = newDirectory();
+ IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random())));
+ Document doc = new Document();
+ FieldType customType = new FieldType(TextField.TYPE_STORED);
+ customType.setStoreTermVectors(true);
+ customType.setStoreTermVectorPositions(true);
+ customType.setStoreTermVectorOffsets(true);
+ doc.add(newField("field", "aaa", customType));
+ writer.addDocument(doc);
+ writer.commit();
+ if (VERBOSE) {
+ System.out.println("\nTEST: now add empty doc");
+ }
+ writer.addDocument(new Document());
+ writer.close();
+ IndexReader reader = DirectoryReader.open(dir);
+ assertEquals(2, reader.numDocs());
+ reader.close();
+ dir.close();
+ }
/**
* Test that no NullPointerException will be raised,
@@ -1276,10 +1257,17 @@ public class TestIndexWriter extends LuceneTestCase {
public void testDeleteUnusedFiles() throws Exception {
+
assumeFalse("test relies on exact filenames", Codec.getDefault() instanceof SimpleTextCodec);
for(int iter=0;iter<2;iter++) {
- MockDirectoryWrapper dir = newMockDirectory(); // relies on windows semantics
- dir.setEnableVirusScanner(false); // but ensures files are actually deleted
+ // relies on windows semantics
+ Path path = createTempDir();
+ assumeFalse("test directly deletes files", TestUtil.hasVirusChecker(path));
+ FileSystem fs = new WindowsFS(path.getFileSystem()).getFileSystem(URI.create("file:///"));
+ Path indexPath = new FilterPath(path, fs);
+
+ // NOTE: cannot use MMapDir, because WindowsFS doesn't see/think it keeps file handles open?
+ FSDirectory dir = new NIOFSDirectory(indexPath);
MergePolicy mergePolicy = newLogMergePolicy(true);
@@ -1306,20 +1294,15 @@ public class TestIndexWriter extends LuceneTestCase {
r = DirectoryReader.open(dir);
}
- List<String> files = new ArrayList<>(Arrays.asList(dir.listAll()));
-
- // RAMDir won't have a write.lock, but fs dirs will:
- files.remove("write.lock");
-
- assertTrue(files.contains("_0.cfs"));
- assertTrue(files.contains("_0.cfe"));
- assertTrue(files.contains("_0.si"));
+ assertTrue(Files.exists(indexPath.resolve("_0.cfs")));
+ assertTrue(Files.exists(indexPath.resolve("_0.cfe")));
+ assertTrue(Files.exists(indexPath.resolve("_0.si")));
if (iter == 1) {
// we run a full commit so there should be a segments file etc.
- assertTrue(files.contains("segments_1"));
+ assertTrue(Files.exists(indexPath.resolve("segments_1")));
} else {
// this is an NRT reopen - no segments files yet
- assertFalse(files.contains("segments_1"));
+ assertFalse(Files.exists(indexPath.resolve("segments_1")));
}
w.addDocument(doc);
w.forceMerge(1);
@@ -1329,34 +1312,29 @@ public class TestIndexWriter extends LuceneTestCase {
IndexReader r2 = DirectoryReader.openIfChanged(r);
assertNotNull(r2);
assertTrue(r != r2);
- files = Arrays.asList(dir.listAll());
// NOTE: here we rely on "Windows" behavior, ie, even
// though IW wanted to delete _0.cfs since it was
// merged away, because we have a reader open
// against this file, it should still be here:
- assertTrue(files.contains("_0.cfs"));
+ assertTrue(Files.exists(indexPath.resolve("_0.cfs")));
// forceMerge created this
//assertTrue(files.contains("_2.cfs"));
w.deleteUnusedFiles();
- files = Arrays.asList(dir.listAll());
// r still holds this file open
- assertTrue(files.contains("_0.cfs"));
+ assertTrue(Files.exists(indexPath.resolve("_0.cfs")));
//assertTrue(files.contains("_2.cfs"));
r.close();
if (iter == 0) {
// on closing NRT reader, it calls writer.deleteUnusedFiles
- files = Arrays.asList(dir.listAll());
- assertFalse(files.contains("_0.cfs"));
+ assertFalse(Files.exists(indexPath.resolve("_0.cfs")));
} else {
- // now writer can remove it
- w.deleteUnusedFiles();
- files = Arrays.asList(dir.listAll());
- assertFalse(files.contains("_0.cfs"));
+ // now FSDir can remove it
+ dir.deletePendingFiles();
+ assertFalse(Files.exists(indexPath.resolve("_0.cfs")));
}
- //assertTrue(files.contains("_2.cfs"));
w.close();
r2.close();
@@ -1369,10 +1347,6 @@ public class TestIndexWriter extends LuceneTestCase {
// Validates that iw.deleteUnusedFiles() also deletes unused index commits
// in case a deletion policy which holds onto commits is used.
Directory dir = newDirectory();
- if (dir instanceof MockDirectoryWrapper) {
- // otherwise the delete of old commit might not actually succeed temporarily.
- ((MockDirectoryWrapper)dir).setEnableVirusScanner(false);
- }
IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random()))
.setIndexDeletionPolicy(new SnapshotDeletionPolicy(new KeepOnlyLastCommitDeletionPolicy())));
SnapshotDeletionPolicy sdp = (SnapshotDeletionPolicy) writer.getConfig().getIndexDeletionPolicy();
@@ -1425,9 +1399,6 @@ public class TestIndexWriter extends LuceneTestCase {
// indexed, flushed (but not committed) and then IW rolls back, then no
// files are left in the Directory.
Directory dir = newDirectory();
- if (dir instanceof MockDirectoryWrapper) {
- ((MockDirectoryWrapper)dir).setEnableVirusScanner(false);
- }
String[] origFiles = dir.listAll();
IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random()))
@@ -1492,10 +1463,6 @@ public class TestIndexWriter extends LuceneTestCase {
public void testNoUnwantedTVFiles() throws Exception {
Directory dir = newDirectory();
- if (dir instanceof MockDirectoryWrapper) {
- // test uses IW unref'ed check which is unaware of retries
- ((MockDirectoryWrapper)dir).setEnableVirusScanner(false);
- }
IndexWriter indexWriter = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random()))
.setRAMBufferSizeMB(0.01)
.setMergePolicy(newLogMergePolicy()));
@@ -1661,7 +1628,6 @@ public class TestIndexWriter extends LuceneTestCase {
public void testDeleteAllNRTLeftoverFiles() throws Exception {
MockDirectoryWrapper d = new MockDirectoryWrapper(random(), new RAMDirectory());
- d.setEnableVirusScanner(false); // needs for files to actually be deleted
IndexWriter w = new IndexWriter(d, new IndexWriterConfig(new MockAnalyzer(random())));
Document doc = new Document();
for(int i = 0; i < 20; i++) {
@@ -1784,10 +1750,6 @@ public class TestIndexWriter extends LuceneTestCase {
// LUCENE-3872
public void testPrepareCommitThenRollback() throws Exception {
Directory dir = newDirectory();
- if (dir instanceof MockDirectoryWrapper) {
- // indexExists might return true if virus scanner prevents deletions
- ((MockDirectoryWrapper)dir).setEnableVirusScanner(false);
- }
IndexWriter w = new IndexWriter(dir,
new IndexWriterConfig(new MockAnalyzer(random())));
@@ -2273,18 +2235,6 @@ public class TestIndexWriter extends LuceneTestCase {
dir.setCheckIndexOnClose(false);
}
- if (dir instanceof MockDirectoryWrapper) {
- MockDirectoryWrapper mdw = (MockDirectoryWrapper) dir;
- String[] files = dir.listAll();
- Arrays.sort(files);
- if ((Arrays.equals(new String[] {"segments_0"}, files) ||
- Arrays.equals(new String[] {"segments_0", "write.lock"}, files)) &&
- mdw.didTryToDelete("segments_0")) {
- // This means virus checker blocked IW deleting the corrupt first commit
- dir.setCheckIndexOnClose(false);
- }
- }
-
dir.close();
}
}
@@ -2733,7 +2683,7 @@ public class TestIndexWriter extends LuceneTestCase {
}
// LUCENE-6523
- public void testCommitImmediaatelyAfterNRTReopen() throws Exception {
+ public void testCommitImmediatelyAfterNRTReopen() throws Exception {
Directory dir = newDirectory();
IndexWriterConfig iwc = new IndexWriterConfig(new MockAnalyzer(random()));
IndexWriter w = new IndexWriter(dir, iwc);
@@ -2753,11 +2703,29 @@ public class TestIndexWriter extends LuceneTestCase {
IOUtils.close(r, r2, w, dir);
}
+ // nocommit turn test on once we have VirusCheckingFS
+ /*
+ public void testWithPendingDeletions() throws Exception {
+ try (FSDirectory dir = FSDirectory.open(createTempDir())) {
+ IndexWriterConfig iwc = new IndexWriterConfig(new MockAnalyzer(random()));
+ IndexWriter w = new IndexWriter(dir, iwc);
+ w.commit();
+ IndexInput in = dir.openInput("segments_0", IOContext.DEFAULT);
+ w.addDocument(new Document());
+ w.close();
+ assertTrue(dir.checkPendingDeletions());
+ iwc = new IndexWriterConfig(new MockAnalyzer(random()));
+ try {
+ w = new IndexWriter(dir, iwc);
+ } catch (IllegalArgumentException iae) {
+ assertEquals("Directory still has pending deleted files", iae.getMessage());
+ }
+ }
+ }
+ */
+
public void testLeftoverTempFiles() throws Exception {
Directory dir = newDirectory();
- if (dir instanceof MockDirectoryWrapper) {
- ((MockDirectoryWrapper) dir).setEnableVirusScanner(false);
- }
IndexWriterConfig iwc = new IndexWriterConfig(new MockAnalyzer(random()));
IndexWriter w = new IndexWriter(dir, iwc);
w.close();
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/84f44589/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterCommit.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterCommit.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterCommit.java
index 3804717..4ac3f44 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterCommit.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterCommit.java
@@ -94,10 +94,6 @@ public class TestIndexWriterCommit extends LuceneTestCase {
*/
public void testCommitOnCloseAbort() throws IOException {
Directory dir = newDirectory();
- if (dir instanceof MockDirectoryWrapper) {
- // test uses IW unref'ed check which is unaware of retries
- ((MockDirectoryWrapper)dir).setEnableVirusScanner(false);
- }
IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random()))
.setMaxBufferedDocs(10));
for (int i = 0; i < 14; i++) {
@@ -189,11 +185,6 @@ public class TestIndexWriterCommit extends LuceneTestCase {
final String contentFormat = TestUtil.getPostingsFormat("content");
assumeFalse("This test cannot run with Memory codec", idFormat.equals("Memory") || contentFormat.equals("Memory"));
MockDirectoryWrapper dir = newMockDirectory();
- if (dir instanceof MockDirectoryWrapper) {
- // the virus scanner can use up too much disk space :)
- // an alternative is to expose MDW.triedToDelete and discount it
- dir.setEnableVirusScanner(false);
- }
Analyzer analyzer;
if (random().nextBoolean()) {
// no payloads
@@ -279,10 +270,6 @@ public class TestIndexWriterCommit extends LuceneTestCase {
if (dir instanceof MockDirectoryWrapper) {
((MockDirectoryWrapper)dir).setPreventDoubleWrite(false);
}
- if (dir instanceof MockDirectoryWrapper) {
- // test uses IW unref'ed check which is unaware of retries
- ((MockDirectoryWrapper)dir).setEnableVirusScanner(false);
- }
IndexWriter writer = new IndexWriter(
dir,
newIndexWriterConfig(new MockAnalyzer(random()))
@@ -599,14 +586,7 @@ public class TestIndexWriterCommit extends LuceneTestCase {
IndexReader reader2 = DirectoryReader.open(dir);
assertEquals(0, reader2.numDocs());
- // We need to let IW delete the partial segments_N that was written in prepareCommit, else we get a false fail below:
- if (mockDir != null) {
- mockDir.setEnableVirusScanner(false);
- }
writer.rollback();
- if (mockDir != null) {
- mockDir.setEnableVirusScanner(true);
- }
IndexReader reader3 = DirectoryReader.openIfChanged(reader);
assertNull(reader3);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/84f44589/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterDelete.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterDelete.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterDelete.java
index 9213c25..be98ef0 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterDelete.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterDelete.java
@@ -498,10 +498,7 @@ public class TestIndexWriterDelete extends LuceneTestCase {
// First build up a starting index:
MockDirectoryWrapper startDir = newMockDirectory();
- // TODO: find the resource leak that only occurs sometimes here.
- startDir.setNoDeleteOpenFile(false);
- // test uses IW unref'ed helper which is unaware of retries
- startDir.setEnableVirusScanner(false);
+
IndexWriter writer = new IndexWriter(startDir, newIndexWriterConfig(new MockAnalyzer(random(), MockTokenizer.WHITESPACE, false)));
for (int i = 0; i < 157; i++) {
Document d = new Document();
@@ -527,8 +524,6 @@ public class TestIndexWriterDelete extends LuceneTestCase {
MockDirectoryWrapper dir = new MockDirectoryWrapper(random(), TestUtil.ramCopyOf(startDir));
dir.setPreventDoubleWrite(false);
dir.setAllowRandomFileNotFoundException(false);
- // test uses IW unref'ed helper which is unaware of retries
- dir.setEnableVirusScanner(false);
IndexWriter modifier = new IndexWriter(dir,
newIndexWriterConfig(new MockAnalyzer(random(), MockTokenizer.WHITESPACE, false))
.setMaxBufferedDocs(1000)
@@ -913,8 +908,6 @@ public class TestIndexWriterDelete extends LuceneTestCase {
String[] text = { "Amsterdam", "Venice" };
MockDirectoryWrapper dir = newMockDirectory();
- // test uses IW unref'ed helper which is unaware of retries
- dir.setEnableVirusScanner(false);
IndexWriter modifier = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random(), MockTokenizer.WHITESPACE, false)));
modifier.commit();
dir.failOn(failure.reset());
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/84f44589/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterExceptions.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterExceptions.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterExceptions.java
index 055fc5a..db2253b 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterExceptions.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterExceptions.java
@@ -916,7 +916,7 @@ public class TestIndexWriterExceptions extends LuceneTestCase {
if (SegmentInfos.class.getName().equals(trace[i].getClassName()) && stage.equals(trace[i].getMethodName())) {
isCommit = true;
}
- if (MockDirectoryWrapper.class.getName().equals(trace[i].getClassName()) && "deleteFile".equals(trace[i].getMethodName())) {
+ if (MockDirectoryWrapper.class.getName().equals(trace[i].getClassName()) && "deleteFiles".equals(trace[i].getMethodName())) {
isDelete = true;
}
if (SegmentInfos.class.getName().equals(trace[i].getClassName()) && "writeGlobalFieldMap".equals(trace[i].getMethodName())) {
@@ -950,7 +950,6 @@ public class TestIndexWriterExceptions extends LuceneTestCase {
for (FailOnlyInCommit failure : failures) {
MockDirectoryWrapper dir = newMockDirectory();
dir.setFailOnCreateOutput(false);
- dir.setEnableVirusScanner(false); // we check for specific list of files
int fileCount = dir.listAll().length;
IndexWriter w = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random())));
Document doc = new Document();
@@ -965,7 +964,7 @@ public class TestIndexWriterExceptions extends LuceneTestCase {
} catch (RuntimeException re) {
// Expected
}
- assertTrue(failure.failOnCommit && failure.failOnDeleteFile);
+ assertTrue("failOnCommit=" + failure.failOnCommit + " failOnDeleteFile=" + failure.failOnDeleteFile, failure.failOnCommit && failure.failOnDeleteFile);
w.rollback();
String files[] = dir.listAll();
assertTrue(files.length == fileCount || (files.length == fileCount+1 && Arrays.asList(files).contains(IndexWriter.WRITE_LOCK_NAME)));
@@ -1178,10 +1177,6 @@ public class TestIndexWriterExceptions extends LuceneTestCase {
public void testSimulatedCorruptIndex1() throws IOException {
BaseDirectoryWrapper dir = newDirectory();
dir.setCheckIndexOnClose(false); // we are corrupting it!
- if (dir instanceof MockDirectoryWrapper) {
- // we want to ensure our corruption always succeeds!
- ((MockDirectoryWrapper)dir).setEnableVirusScanner(false);
- }
IndexWriter writer = null;
@@ -1210,7 +1205,7 @@ public class TestIndexWriterExceptions extends LuceneTestCase {
}
in.close();
out.close();
- dir.deleteFile(fileNameIn);
+ dir.deleteFiles(Collections.singleton(fileNameIn));
IndexReader reader = null;
try {
@@ -1230,10 +1225,6 @@ public class TestIndexWriterExceptions extends LuceneTestCase {
public void testSimulatedCorruptIndex2() throws IOException {
BaseDirectoryWrapper dir = newDirectory();
dir.setCheckIndexOnClose(false); // we are corrupting it!
- if (dir instanceof MockDirectoryWrapper) {
- // we want to ensure our corruption always succeeds!
- ((MockDirectoryWrapper)dir).setEnableVirusScanner(false);
- }
IndexWriter writer = null;
writer = new IndexWriter(
@@ -1264,7 +1255,7 @@ public class TestIndexWriterExceptions extends LuceneTestCase {
assertTrue(si.info.getUseCompoundFile());
List<String> victims = new ArrayList<String>(si.info.files());
Collections.shuffle(victims, random());
- dir.deleteFile(victims.get(0));
+ dir.deleteFiles(Collections.singleton(victims.get(0)));
corrupted = true;
break;
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/84f44589/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterForceMerge.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterForceMerge.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterForceMerge.java
index 19030cc..7570163 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterForceMerge.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterForceMerge.java
@@ -126,7 +126,6 @@ public class TestIndexWriterForceMerge extends LuceneTestCase {
public void testForceMergeTempSpaceUsage() throws IOException {
final MockDirectoryWrapper dir = newMockDirectory();
- dir.setEnableVirusScanner(false);
// don't use MockAnalyzer, variable length payloads can cause merge to make things bigger,
// since things are optimized for fixed length case. this is a problem for MemoryPF's encoding.
// (it might have other problems too)
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/84f44589/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterFromReader.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterFromReader.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterFromReader.java
index baa74e1..44d938f 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterFromReader.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterFromReader.java
@@ -17,6 +17,10 @@ package org.apache.lucene.index;
* limitations under the License.
*/
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.store.AlreadyClosedException;
@@ -24,10 +28,7 @@ import org.apache.lucene.store.Directory;
import org.apache.lucene.store.MockDirectoryWrapper;
import org.apache.lucene.util.IOUtils;
import org.apache.lucene.util.LuceneTestCase;
-
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
+import org.apache.lucene.util.TestUtil;
public class TestIndexWriterFromReader extends LuceneTestCase {
@@ -111,10 +112,6 @@ public class TestIndexWriterFromReader extends LuceneTestCase {
// Pull NRT reader after writer has committed and then indexed another doc:
public void testAfterCommitThenIndex() throws Exception {
Directory dir = newDirectory();
- if (dir instanceof MockDirectoryWrapper) {
- // We only hit exc if stale segments file was deleted:
- ((MockDirectoryWrapper) dir).setEnableVirusScanner(false);
- }
IndexWriter w = new IndexWriter(dir, newIndexWriterConfig());
w.addDocument(new Document());
w.commit();
@@ -140,10 +137,6 @@ public class TestIndexWriterFromReader extends LuceneTestCase {
// NRT rollback: pull NRT reader after writer has committed and then before indexing another doc
public void testNRTRollback() throws Exception {
Directory dir = newDirectory();
- if (dir instanceof MockDirectoryWrapper) {
- // We only hit exc if stale segments file was deleted:
- ((MockDirectoryWrapper) dir).setEnableVirusScanner(false);
- }
IndexWriter w = new IndexWriter(dir, newIndexWriterConfig());
w.addDocument(new Document());
w.commit();
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/84f44589/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterOnDiskFull.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterOnDiskFull.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterOnDiskFull.java
index f75230c..e6fe6e8 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterOnDiskFull.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterOnDiskFull.java
@@ -64,7 +64,6 @@ public class TestIndexWriterOnDiskFull extends LuceneTestCase {
System.out.println("TEST: cycle: diskFree=" + diskFree);
}
MockDirectoryWrapper dir = new MockDirectoryWrapper(random(), new RAMDirectory());
- dir.setEnableVirusScanner(false); // currently uses the IW unreferenced files method, unaware of retries
dir.setMaxSizeInBytes(diskFree);
IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random())));
MergeScheduler ms = writer.getConfig().getMergeScheduler();
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/84f44589/lucene/core/src/test/org/apache/lucene/index/TestNRTReaderCleanup.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestNRTReaderCleanup.java b/lucene/core/src/test/org/apache/lucene/index/TestNRTReaderCleanup.java
index 6d9bb69..bb452bf 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestNRTReaderCleanup.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestNRTReaderCleanup.java
@@ -18,6 +18,7 @@ package org.apache.lucene.index;
*/
import java.io.IOException;
+import java.util.Arrays;
import org.apache.lucene.analysis.MockAnalyzer;
import org.apache.lucene.document.Document;
@@ -25,8 +26,9 @@ import org.apache.lucene.document.Field;
import org.apache.lucene.document.TextField;
import org.apache.lucene.store.MockDirectoryWrapper;
import org.apache.lucene.util.Constants;
-import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.util.LuceneTestCase.SuppressFileSystems;
+import org.apache.lucene.util.LuceneTestCase;
+import org.apache.lucene.util.TestUtil;
/** LUCENE-5574 */
@SuppressFileSystems("WindowsFS") // the bug doesn't happen on windows.
@@ -40,12 +42,6 @@ public class TestNRTReaderCleanup extends LuceneTestCase {
MockDirectoryWrapper dir = newMockDirectory();
- // don't act like windows either, or the test won't simulate the condition
- dir.setEnableVirusScanner(false);
-
- // Allow deletion of still open files:
- dir.setNoDeleteOpenFile(false);
-
// Allow writing to same file more than once:
dir.setPreventDoubleWrite(false);
@@ -66,9 +62,7 @@ public class TestNRTReaderCleanup extends LuceneTestCase {
w.close();
// Blow away index and make a new writer:
- for(String fileName : dir.listAll()) {
- dir.deleteFile(fileName);
- }
+ dir.deleteFiles(Arrays.asList(dir.listAll()));
w = new RandomIndexWriter(random(), dir);
w.addDocument(doc);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/84f44589/lucene/core/src/test/org/apache/lucene/index/TestNeverDelete.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestNeverDelete.java b/lucene/core/src/test/org/apache/lucene/index/TestNeverDelete.java
index 0a0438a..3d15971 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestNeverDelete.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestNeverDelete.java
@@ -39,12 +39,6 @@ public class TestNeverDelete extends LuceneTestCase {
final Path tmpDir = createTempDir("TestNeverDelete");
final BaseDirectoryWrapper d = newFSDirectory(tmpDir);
- // We want to "see" files removed if Lucene removed
- // them. This is still worth running on Windows since
- // some files the IR opens and closes.
- if (d instanceof MockDirectoryWrapper) {
- ((MockDirectoryWrapper)d).setNoDeleteOpenFile(false);
- }
final RandomIndexWriter w = new RandomIndexWriter(random(),
d,
newIndexWriterConfig(new MockAnalyzer(random()))
@@ -107,7 +101,5 @@ public class TestNeverDelete extends LuceneTestCase {
}
w.close();
d.close();
-
- IOUtils.rm(tmpDir);
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/84f44589/lucene/core/src/test/org/apache/lucene/index/TestNumericDocValuesUpdates.java
----------------------------------------------------------------------
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 1fb2206..df1ed20 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestNumericDocValuesUpdates.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestNumericDocValuesUpdates.java
@@ -1182,10 +1182,6 @@ public class TestNumericDocValuesUpdates extends LuceneTestCase {
@Test
public void testDeleteUnusedUpdatesFiles() throws Exception {
Directory dir = newDirectory();
- // test explicitly needs files to always be actually deleted
- if (dir instanceof MockDirectoryWrapper) {
- ((MockDirectoryWrapper)dir).setEnableVirusScanner(false);
- }
IndexWriterConfig conf = newIndexWriterConfig(new MockAnalyzer(random()));
IndexWriter writer = new IndexWriter(dir, conf);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/84f44589/lucene/core/src/test/org/apache/lucene/index/TestOmitPositions.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestOmitPositions.java b/lucene/core/src/test/org/apache/lucene/index/TestOmitPositions.java
index 551a073..ac32bab 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestOmitPositions.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestOmitPositions.java
@@ -189,10 +189,7 @@ public class TestOmitPositions extends LuceneTestCase {
// Verifies no *.prx exists when all fields omit term positions:
public void testNoPrxFile() throws Throwable {
Directory ram = newDirectory();
- if (ram instanceof MockDirectoryWrapper) {
- // we verify some files get deleted
- ((MockDirectoryWrapper)ram).setEnableVirusScanner(false);
- }
+
Analyzer analyzer = new MockAnalyzer(random());
IndexWriter writer = new IndexWriter(ram, newIndexWriterConfig(analyzer)
.setMaxBufferedDocs(3)
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/84f44589/lucene/core/src/test/org/apache/lucene/index/TestOmitTf.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestOmitTf.java b/lucene/core/src/test/org/apache/lucene/index/TestOmitTf.java
index 187216b..6e8874f 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestOmitTf.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestOmitTf.java
@@ -40,6 +40,7 @@ import org.apache.lucene.store.Directory;
import org.apache.lucene.store.MockDirectoryWrapper;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.LuceneTestCase;
+import org.apache.lucene.util.TestUtil;
public class TestOmitTf extends LuceneTestCase {
@@ -219,10 +220,6 @@ public class TestOmitTf extends LuceneTestCase {
// Verifies no *.prx exists when all fields omit term freq:
public void testNoPrxFile() throws Throwable {
Directory ram = newDirectory();
- if (ram instanceof MockDirectoryWrapper) {
- // we verify some files get deleted
- ((MockDirectoryWrapper)ram).setEnableVirusScanner(false);
- }
Analyzer analyzer = new MockAnalyzer(random());
IndexWriter writer = new IndexWriter(ram, newIndexWriterConfig(analyzer)
.setMaxBufferedDocs(3)
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/84f44589/lucene/core/src/test/org/apache/lucene/index/TestPersistentSnapshotDeletionPolicy.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestPersistentSnapshotDeletionPolicy.java b/lucene/core/src/test/org/apache/lucene/index/TestPersistentSnapshotDeletionPolicy.java
index c94b66a..360933a 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestPersistentSnapshotDeletionPolicy.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestPersistentSnapshotDeletionPolicy.java
@@ -23,6 +23,7 @@ import org.apache.lucene.document.Document;
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.MockDirectoryWrapper;
+import org.apache.lucene.util.TestUtil;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -50,7 +51,6 @@ public class TestPersistentSnapshotDeletionPolicy extends TestSnapshotDeletionPo
public void testExistingSnapshots() throws Exception {
int numSnapshots = 3;
MockDirectoryWrapper dir = newMockDirectory();
- dir.setEnableVirusScanner(false); // test relies on files actually being deleted
IndexWriter writer = new IndexWriter(dir, getConfig(random(), getDeletionPolicy(dir)));
PersistentSnapshotDeletionPolicy psdp = (PersistentSnapshotDeletionPolicy) writer.getConfig().getIndexDeletionPolicy();
assertNull(psdp.getLastSaveFile());
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/84f44589/lucene/core/src/test/org/apache/lucene/index/TestRollingUpdates.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestRollingUpdates.java b/lucene/core/src/test/org/apache/lucene/index/TestRollingUpdates.java
index f367024..a0fda68 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestRollingUpdates.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestRollingUpdates.java
@@ -39,10 +39,6 @@ public class TestRollingUpdates extends LuceneTestCase {
public void testRollingUpdates() throws Exception {
Random random = new Random(random().nextLong());
final BaseDirectoryWrapper dir = newDirectory();
- // test checks for no unref'ed files with the IW helper method, which isn't aware of "tried to delete files"
- if (dir instanceof MockDirectoryWrapper) {
- ((MockDirectoryWrapper)dir).setEnableVirusScanner(false);
- }
final LineFileDocs docs = new LineFileDocs(random, true);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/84f44589/lucene/core/src/test/org/apache/lucene/index/TestSnapshotDeletionPolicy.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestSnapshotDeletionPolicy.java b/lucene/core/src/test/org/apache/lucene/index/TestSnapshotDeletionPolicy.java
index 1780494..e6c8f57 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestSnapshotDeletionPolicy.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestSnapshotDeletionPolicy.java
@@ -32,6 +32,7 @@ import org.apache.lucene.store.Directory;
import org.apache.lucene.store.IndexInput;
import org.apache.lucene.store.MockDirectoryWrapper;
import org.apache.lucene.util.LuceneTestCase;
+import org.apache.lucene.util.TestUtil;
import org.apache.lucene.util.ThreadInterruptedException;
import org.junit.Test;
@@ -103,10 +104,6 @@ public class TestSnapshotDeletionPolicy extends LuceneTestCase {
}
private void runTest(Random random, Directory dir) throws Exception {
- // we use the IW unref'ed files check which is unaware of retries:
- if (dir instanceof MockDirectoryWrapper) {
- ((MockDirectoryWrapper)dir).setEnableVirusScanner(false);
- }
// Run for ~1 seconds
final long stopTime = System.currentTimeMillis() + 1000;
@@ -257,10 +254,6 @@ public class TestSnapshotDeletionPolicy extends LuceneTestCase {
// Create 3 snapshots: snapshot0, snapshot1, snapshot2
Directory dir = newDirectory();
- if (dir instanceof MockDirectoryWrapper) {
- // we verify some files get deleted
- ((MockDirectoryWrapper)dir).setEnableVirusScanner(false);
- }
IndexWriter writer = new IndexWriter(dir, getConfig(random(), getDeletionPolicy()));
SnapshotDeletionPolicy sdp = (SnapshotDeletionPolicy) writer.getConfig().getIndexDeletionPolicy();
prepareIndexAndSnapshots(sdp, writer, numSnapshots);
@@ -285,10 +278,7 @@ public class TestSnapshotDeletionPolicy extends LuceneTestCase {
@Test
public void testMultiThreadedSnapshotting() throws Exception {
Directory dir = newDirectory();
- if (dir instanceof MockDirectoryWrapper) {
- // test relies on files actually being deleted
- ((MockDirectoryWrapper)dir).setEnableVirusScanner(false);
- }
+
final IndexWriter writer = new IndexWriter(dir, getConfig(random(), getDeletionPolicy()));
final SnapshotDeletionPolicy sdp = (SnapshotDeletionPolicy) writer.getConfig().getIndexDeletionPolicy();
@@ -364,10 +354,6 @@ public class TestSnapshotDeletionPolicy extends LuceneTestCase {
@Test
public void testReleaseSnapshot() throws Exception {
Directory dir = newDirectory();
- if (dir instanceof MockDirectoryWrapper) {
- // we rely upon existence of files
- ((MockDirectoryWrapper)dir).setEnableVirusScanner(false);
- }
IndexWriter writer = new IndexWriter(dir, getConfig(random(), getDeletionPolicy()));
SnapshotDeletionPolicy sdp = (SnapshotDeletionPolicy) writer.getConfig().getIndexDeletionPolicy();
prepareIndexAndSnapshots(sdp, writer, 1);
@@ -417,10 +403,6 @@ public class TestSnapshotDeletionPolicy extends LuceneTestCase {
// Tests the behavior of SDP when commits that are given at ctor are missing
// on onInit().
Directory dir = newDirectory();
- if (dir instanceof MockDirectoryWrapper) {
- // we rely upon existence of files
- ((MockDirectoryWrapper)dir).setEnableVirusScanner(false);
- }
IndexWriter writer = new IndexWriter(dir, getConfig(random(), getDeletionPolicy()));
SnapshotDeletionPolicy sdp = (SnapshotDeletionPolicy) writer.getConfig().getIndexDeletionPolicy();
writer.addDocument(new Document());
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/84f44589/lucene/core/src/test/org/apache/lucene/index/TestSwappedIndexFiles.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestSwappedIndexFiles.java b/lucene/core/src/test/org/apache/lucene/index/TestSwappedIndexFiles.java
index c412545..f1d0418 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestSwappedIndexFiles.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestSwappedIndexFiles.java
@@ -43,15 +43,6 @@ public class TestSwappedIndexFiles extends LuceneTestCase {
Directory dir1 = newDirectory();
Directory dir2 = newDirectory();
- if (dir1 instanceof MockDirectoryWrapper) {
- // otherwise we can have unref'd files left in the index that won't be visited when opening a reader and lead to scary looking false failures:
- ((MockDirectoryWrapper) dir1).setEnableVirusScanner(false);
- }
- if (dir2 instanceof MockDirectoryWrapper) {
- // otherwise we can have unref'd files left in the index that won't be visited when opening a reader and lead to scary looking false failures:
- ((MockDirectoryWrapper) dir2).setEnableVirusScanner(false);
- }
-
// Disable CFS 80% of the time so we can truncate individual files, but the other 20% of the time we test truncation of .cfs/.cfe too:
boolean useCFS = random().nextInt(5) == 1;
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/84f44589/lucene/core/src/test/org/apache/lucene/search/TestPointQueries.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/search/TestPointQueries.java b/lucene/core/src/test/org/apache/lucene/search/TestPointQueries.java
index 15d4a06..2f6f38a 100644
--- a/lucene/core/src/test/org/apache/lucene/search/TestPointQueries.java
+++ b/lucene/core/src/test/org/apache/lucene/search/TestPointQueries.java
@@ -175,7 +175,7 @@ public class TestPointQueries extends LuceneTestCase {
iwc.setCodec(getCodec());
Directory dir;
if (values.length > 100000) {
- dir = noVirusChecker(newFSDirectory(createTempDir("TestRangeTree")));
+ dir = newFSDirectory(createTempDir("TestRangeTree"));
} else {
dir = getDirectory();
}
@@ -439,7 +439,7 @@ public class TestPointQueries extends LuceneTestCase {
Directory dir;
if (docValues.length > 100000) {
- dir = noVirusChecker(newFSDirectory(createTempDir("TestPointRangeQuery")));
+ dir = newFSDirectory(createTempDir("TestPointQueries"));
} else {
dir = getDirectory();
}
@@ -1018,15 +1018,8 @@ public class TestPointQueries extends LuceneTestCase {
IOUtils.close(w, dir);
}
- private static Directory noVirusChecker(Directory dir) {
- if (dir instanceof MockDirectoryWrapper) {
- ((MockDirectoryWrapper) dir).setEnableVirusScanner(false);
- }
- return dir;
- }
-
private static Directory getDirectory() {
- return noVirusChecker(newDirectory());
+ return newDirectory();
}
private static Codec getCodec() {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/84f44589/lucene/core/src/test/org/apache/lucene/store/TestBufferedIndexInput.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/store/TestBufferedIndexInput.java b/lucene/core/src/test/org/apache/lucene/store/TestBufferedIndexInput.java
index ea2ec7c..3df8dc5 100644
--- a/lucene/core/src/test/org/apache/lucene/store/TestBufferedIndexInput.java
+++ b/lucene/core/src/test/org/apache/lucene/store/TestBufferedIndexInput.java
@@ -211,58 +211,54 @@ public class TestBufferedIndexInput extends LuceneTestCase {
public void testSetBufferSize() throws IOException {
Path indexDir = createTempDir("testSetBufferSize");
MockFSDirectory dir = new MockFSDirectory(indexDir, random());
- try {
- IndexWriter writer = new IndexWriter(
- dir,
- new IndexWriterConfig(new MockAnalyzer(random())).
- setOpenMode(OpenMode.CREATE).
- setMergePolicy(newLogMergePolicy(false))
- );
- for(int i=0;i<37;i++) {
- Document doc = new Document();
- doc.add(newTextField("content", "aaa bbb ccc ddd" + i, Field.Store.YES));
- doc.add(newTextField("id", "" + i, Field.Store.YES));
- writer.addDocument(doc);
- }
+ IndexWriter writer = new IndexWriter(
+ dir,
+ new IndexWriterConfig(new MockAnalyzer(random())).
+ setOpenMode(OpenMode.CREATE).
+ setMergePolicy(newLogMergePolicy(false))
+ );
+ for(int i=0;i<37;i++) {
+ Document doc = new Document();
+ doc.add(newTextField("content", "aaa bbb ccc ddd" + i, Field.Store.YES));
+ doc.add(newTextField("id", "" + i, Field.Store.YES));
+ writer.addDocument(doc);
+ }
- dir.allIndexInputs.clear();
+ dir.allIndexInputs.clear();
- IndexReader reader = DirectoryReader.open(writer);
- Term aaa = new Term("content", "aaa");
- Term bbb = new Term("content", "bbb");
+ IndexReader reader = DirectoryReader.open(writer);
+ Term aaa = new Term("content", "aaa");
+ Term bbb = new Term("content", "bbb");
- reader.close();
+ reader.close();
- dir.tweakBufferSizes();
- writer.deleteDocuments(new Term("id", "0"));
- reader = DirectoryReader.open(writer);
- IndexSearcher searcher = newSearcher(reader);
- ScoreDoc[] hits = searcher.search(new TermQuery(bbb), 1000).scoreDocs;
- dir.tweakBufferSizes();
- assertEquals(36, hits.length);
+ dir.tweakBufferSizes();
+ writer.deleteDocuments(new Term("id", "0"));
+ reader = DirectoryReader.open(writer);
+ IndexSearcher searcher = newSearcher(reader);
+ ScoreDoc[] hits = searcher.search(new TermQuery(bbb), 1000).scoreDocs;
+ dir.tweakBufferSizes();
+ assertEquals(36, hits.length);
- reader.close();
+ reader.close();
- dir.tweakBufferSizes();
- writer.deleteDocuments(new Term("id", "4"));
- reader = DirectoryReader.open(writer);
- searcher = newSearcher(reader);
+ dir.tweakBufferSizes();
+ writer.deleteDocuments(new Term("id", "4"));
+ reader = DirectoryReader.open(writer);
+ searcher = newSearcher(reader);
- hits = searcher.search(new TermQuery(bbb), 1000).scoreDocs;
- dir.tweakBufferSizes();
- assertEquals(35, hits.length);
- dir.tweakBufferSizes();
- hits = searcher.search(new TermQuery(new Term("id", "33")), 1000).scoreDocs;
- dir.tweakBufferSizes();
- assertEquals(1, hits.length);
- hits = searcher.search(new TermQuery(aaa), 1000).scoreDocs;
- dir.tweakBufferSizes();
- assertEquals(35, hits.length);
- writer.close();
- reader.close();
- } finally {
- IOUtils.rm(indexDir);
- }
+ hits = searcher.search(new TermQuery(bbb), 1000).scoreDocs;
+ dir.tweakBufferSizes();
+ assertEquals(35, hits.length);
+ dir.tweakBufferSizes();
+ hits = searcher.search(new TermQuery(new Term("id", "33")), 1000).scoreDocs;
+ dir.tweakBufferSizes();
+ assertEquals(1, hits.length);
+ hits = searcher.search(new TermQuery(aaa), 1000).scoreDocs;
+ dir.tweakBufferSizes();
+ assertEquals(35, hits.length);
+ writer.close();
+ reader.close();
}
private static class MockFSDirectory extends FilterDirectory {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/84f44589/lucene/core/src/test/org/apache/lucene/store/TestDirectory.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/store/TestDirectory.java b/lucene/core/src/test/org/apache/lucene/store/TestDirectory.java
index 8534fbf..3b65389 100644
--- a/lucene/core/src/test/org/apache/lucene/store/TestDirectory.java
+++ b/lucene/core/src/test/org/apache/lucene/store/TestDirectory.java
@@ -21,10 +21,12 @@ import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
import org.apache.lucene.util.IOUtils;
import org.apache.lucene.util.LuceneTestCase;
+import org.apache.lucene.util.TestUtil;
public class TestDirectory extends LuceneTestCase {
@@ -32,6 +34,7 @@ public class TestDirectory extends LuceneTestCase {
// path, can read, write, and lock files.
public void testDirectInstantiation() throws Exception {
final Path path = createTempDir("testDirectInstantiation");
+ assumeFalse("test deletes files through different FSDir instances", TestUtil.hasVirusChecker(path));
final byte[] largeBuffer = new byte[random().nextInt(256*1024)], largeReadBuffer = new byte[largeBuffer.length];
for (int i = 0; i < largeBuffer.length; i++) {
@@ -79,7 +82,7 @@ public class TestDirectory extends LuceneTestCase {
}
// delete with a different dir
- dirs[(i+1)%dirs.length].deleteFile(fname);
+ dirs[(i+1)%dirs.length].deleteFiles(Collections.singleton(fname));
for (int j=0; j<dirs.length; j++) {
FSDirectory d2 = dirs[j];
@@ -110,23 +113,17 @@ public class TestDirectory extends LuceneTestCase {
dir.close();
assertFalse(dir.isOpen);
}
-
- IOUtils.rm(path);
}
// LUCENE-1468
@SuppressWarnings("resource")
public void testCopySubdir() throws Throwable {
Path path = createTempDir("testsubdir");
- try {
- Files.createDirectory(path.resolve("subdir"));
- FSDirectory fsDir = new SimpleFSDirectory(path);
- RAMDirectory ramDir = new RAMDirectory(fsDir, newIOContext(random()));
- List<String> files = Arrays.asList(ramDir.listAll());
- assertFalse(files.contains("subdir"));
- } finally {
- IOUtils.rm(path);
- }
+ Files.createDirectory(path.resolve("subdir"));
+ FSDirectory fsDir = new SimpleFSDirectory(path);
+ RAMDirectory ramDir = new RAMDirectory(fsDir, newIOContext(random()));
+ List<String> files = Arrays.asList(ramDir.listAll());
+ assertFalse(files.contains("subdir"));
}
// LUCENE-1468
@@ -145,7 +142,6 @@ public class TestDirectory extends LuceneTestCase {
}
} finally {
fsDir.close();
- IOUtils.rm(path);
}
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/84f44589/lucene/core/src/test/org/apache/lucene/store/TestFileSwitchDirectory.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/store/TestFileSwitchDirectory.java b/lucene/core/src/test/org/apache/lucene/store/TestFileSwitchDirectory.java
index 60db126..04de4b2 100644
--- a/lucene/core/src/test/org/apache/lucene/store/TestFileSwitchDirectory.java
+++ b/lucene/core/src/test/org/apache/lucene/store/TestFileSwitchDirectory.java
@@ -100,7 +100,6 @@ public class TestFileSwitchDirectory extends BaseDirectoryTestCase {
public void testNoDir() throws Throwable {
Path primDir = createTempDir("foo");
Path secondDir = createTempDir("bar");
- IOUtils.rm(primDir, secondDir);
Directory dir = newFSSwitchDirectory(primDir, secondDir, Collections.<String>emptySet());
try {
DirectoryReader.open(dir);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/84f44589/lucene/core/src/test/org/apache/lucene/store/TestNativeFSLockFactory.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/store/TestNativeFSLockFactory.java b/lucene/core/src/test/org/apache/lucene/store/TestNativeFSLockFactory.java
index b53707e..71284f1 100644
--- a/lucene/core/src/test/org/apache/lucene/store/TestNativeFSLockFactory.java
+++ b/lucene/core/src/test/org/apache/lucene/store/TestNativeFSLockFactory.java
@@ -20,8 +20,10 @@ package org.apache.lucene.store;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
+import java.util.Collections;
import org.apache.lucene.util.IOUtils;
+import org.apache.lucene.util.TestUtil;
/** Simple tests for NativeFSLockFactory */
public class TestNativeFSLockFactory extends BaseLockFactoryTestCase {
@@ -79,19 +81,15 @@ public class TestNativeFSLockFactory extends BaseLockFactoryTestCase {
/** delete the lockfile and test ensureValid fails */
public void testDeleteLockFile() throws IOException {
- Directory dir = getDirectory(createTempDir());
- try {
+ try (Directory dir = getDirectory(createTempDir())) {
+ assumeFalse("we must be able to delete an open file", TestUtil.hasWindowsFS(dir));
+ assumeFalse("we must be able to delete an open file", TestUtil.hasVirusChecker(dir));
+
Lock lock = dir.obtainLock("test.lock");
lock.ensureValid();
-
- try {
- dir.deleteFile("test.lock");
- } catch (Exception e) {
- // we can't delete a file for some reason, just clean up and assume the test.
- IOUtils.closeWhileHandlingException(lock);
- assumeNoException("test requires the ability to delete a locked file", e);
- }
-
+
+ dir.deleteFiles(Collections.singleton("test.lock"));
+
try {
lock.ensureValid();
fail("no exception");
@@ -100,9 +98,6 @@ public class TestNativeFSLockFactory extends BaseLockFactoryTestCase {
} finally {
IOUtils.closeWhileHandlingException(lock);
}
- } finally {
- // Do this in finally clause in case the assumeNoException is false:
- dir.close();
}
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/84f44589/lucene/core/src/test/org/apache/lucene/store/TestRAMDirectory.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/store/TestRAMDirectory.java b/lucene/core/src/test/org/apache/lucene/store/TestRAMDirectory.java
index 70cd054..dd4e175 100644
--- a/lucene/core/src/test/org/apache/lucene/store/TestRAMDirectory.java
+++ b/lucene/core/src/test/org/apache/lucene/store/TestRAMDirectory.java
@@ -83,7 +83,6 @@ public class TestRAMDirectory extends BaseDirectoryTestCase {
assertFalse(files.contains("subdir"));
} finally {
IOUtils.close(fsDir);
- IOUtils.rm(path);
}
}