You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2014/08/26 15:45:06 UTC
svn commit: r1620601 -
/lucene/dev/branches/lucene5904/lucene/core/src/test/org/apache/lucene/index/TestIndexFileDeleter.java
Author: rmuir
Date: Tue Aug 26 13:45:06 2014
New Revision: 1620601
URL: http://svn.apache.org/r1620601
Log:
LUCENE-5904: add explicit test
Modified:
lucene/dev/branches/lucene5904/lucene/core/src/test/org/apache/lucene/index/TestIndexFileDeleter.java
Modified: lucene/dev/branches/lucene5904/lucene/core/src/test/org/apache/lucene/index/TestIndexFileDeleter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5904/lucene/core/src/test/org/apache/lucene/index/TestIndexFileDeleter.java?rev=1620601&r1=1620600&r2=1620601&view=diff
==============================================================================
--- lucene/dev/branches/lucene5904/lucene/core/src/test/org/apache/lucene/index/TestIndexFileDeleter.java (original)
+++ lucene/dev/branches/lucene5904/lucene/core/src/test/org/apache/lucene/index/TestIndexFileDeleter.java Tue Aug 26 13:45:06 2014
@@ -19,6 +19,7 @@ package org.apache.lucene.index;
import java.io.*;
import java.util.*;
+import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.lucene.analysis.MockAnalyzer;
import org.apache.lucene.codecs.Codec;
@@ -26,10 +27,12 @@ import org.apache.lucene.document.Docume
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
import org.apache.lucene.store.Directory;
+import org.apache.lucene.store.IOContext;
import org.apache.lucene.store.IndexInput;
import org.apache.lucene.store.IndexOutput;
import org.apache.lucene.store.MockDirectoryWrapper;
import org.apache.lucene.util.LuceneTestCase;
+import org.junit.Ignore;
/*
Verify we can read the pre-2.1 file format, do searches
@@ -205,4 +208,41 @@ public class TestIndexFileDeleter extend
doc.add(newStringField("id", Integer.toString(id), Field.Store.NO));
writer.addDocument(doc);
}
+
+ @Ignore("not yet")
+ // nocommit
+ public void testVirusScannerDoesntCorruptIndex() throws IOException {
+ MockDirectoryWrapper dir = newMockDirectory();
+ dir.setPreventDoubleWrite(false); // we arent trying to test this
+ dir.setEnableVirusScanner(false); // we have our own to make test reproduce always
+
+ // add empty commit
+ new IndexWriter(dir, new IndexWriterConfig(null)).close();
+ // add a trash unreferenced file
+ dir.createOutput("_0.si", IOContext.DEFAULT).close();
+
+ // start virus scanner
+ final AtomicBoolean stopScanning = new AtomicBoolean();
+ dir.failOn(new MockDirectoryWrapper.Failure() {
+ @Override
+ public void eval(MockDirectoryWrapper dir) throws IOException {
+ if (stopScanning.get()) {
+ return;
+ }
+ for (StackTraceElement f : new Exception().getStackTrace()) {
+ if ("deleteFile".equals(f.getMethodName())) {
+ throw new IOException("temporarily cannot delete file");
+ }
+ }
+ }
+ });
+
+ IndexWriter iw = new IndexWriter(dir, new IndexWriterConfig(null));
+ iw.addDocument(new Document());
+ // stop virus scanner
+ stopScanning.set(true);
+ iw.commit();
+ iw.close();
+ dir.close();
+ }
}