You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by us...@apache.org on 2017/02/07 09:07:28 UTC
[2/7] lucene-solr:branch_5_5: LUCENE-6989: Fix some tests that
hardcode MMapDirectory (and also the FSDirectory randomizer),
to only use MMapDirectory on Windows,
if it supports unmapping. Otherwise tests will fail.
LUCENE-6989: Fix some tests that hardcode MMapDirectory (and also the FSDirectory randomizer), to only use MMapDirectory on Windows, if it supports unmapping. Otherwise tests will fail.
# Conflicts:
# lucene/core/src/test/org/apache/lucene/store/TestMmapDirectory.java
# lucene/core/src/test/org/apache/lucene/store/TestMultiMMap.java
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/185a23a4
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/185a23a4
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/185a23a4
Branch: refs/heads/branch_5_5
Commit: 185a23a4c6a0e597301f93c8de985d3d7c59f376
Parents: f4e493a
Author: Uwe Schindler <us...@apache.org>
Authored: Wed Dec 21 23:07:50 2016 +0100
Committer: Uwe Schindler <us...@apache.org>
Committed: Tue Feb 7 09:19:20 2017 +0100
----------------------------------------------------------------------
.../lucene/index/Test4GBStoredFields.java | 2 ++
.../apache/lucene/index/TestIndexWriter.java | 2 ++
.../org/apache/lucene/store/TestDirectory.java | 13 ++++++++-----
.../apache/lucene/store/TestMmapDirectory.java | 2 +-
.../org/apache/lucene/store/TestMultiMMap.java | 2 +-
.../org/apache/lucene/util/fst/Test2BFST.java | 2 ++
.../index/BaseStoredFieldsFormatTestCase.java | 2 ++
.../org/apache/lucene/util/LuceneTestCase.java | 20 +++++++++++++++++---
8 files changed, 35 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/185a23a4/lucene/core/src/test/org/apache/lucene/index/Test4GBStoredFields.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/Test4GBStoredFields.java b/lucene/core/src/test/org/apache/lucene/index/Test4GBStoredFields.java
index 0129bf9..1169ca8 100644
--- a/lucene/core/src/test/org/apache/lucene/index/Test4GBStoredFields.java
+++ b/lucene/core/src/test/org/apache/lucene/index/Test4GBStoredFields.java
@@ -40,6 +40,8 @@ public class Test4GBStoredFields extends LuceneTestCase {
@Nightly
public void test() throws Exception {
+ assumeWorkingMMapOnWindows();
+
MockDirectoryWrapper dir = new MockDirectoryWrapper(random(), new MMapDirectory(createTempDir("4GBStoredFields")));
dir.setThrottling(MockDirectoryWrapper.Throttling.NEVER);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/185a23a4/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 461e0cb..3749a03 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java
@@ -1275,6 +1275,8 @@ public class TestIndexWriter extends LuceneTestCase {
public void testDeleteUnusedFiles() throws Exception {
assumeFalse("test relies on exact filenames", Codec.getDefault() instanceof SimpleTextCodec);
+ assumeWorkingMMapOnWindows();
+
for(int iter=0;iter<2;iter++) {
MockDirectoryWrapper dir = newMockDirectory(); // relies on windows semantics
dir.setEnableVirusScanner(false); // but ensures files are actually deleted
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/185a23a4/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 c512482..61e5308 100644
--- a/lucene/core/src/test/org/apache/lucene/store/TestDirectory.java
+++ b/lucene/core/src/test/org/apache/lucene/store/TestDirectory.java
@@ -20,6 +20,7 @@ package org.apache.lucene.store;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -38,11 +39,13 @@ public class TestDirectory extends LuceneTestCase {
largeBuffer[i] = (byte) i; // automatically loops with modulo
}
- final FSDirectory[] dirs = new FSDirectory[] {
- new SimpleFSDirectory(path),
- new NIOFSDirectory(path),
- new MMapDirectory(path)
- };
+ final List<FSDirectory> dirs0 = new ArrayList<>();
+ dirs0.add(new SimpleFSDirectory(path));
+ dirs0.add(new NIOFSDirectory(path));
+ if (hasWorkingMMapOnWindows()) {
+ dirs0.add(new MMapDirectory(path));
+ }
+ final FSDirectory[] dirs = dirs0.stream().toArray(FSDirectory[]::new);
for (int i=0; i<dirs.length; i++) {
FSDirectory dir = dirs[i];
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/185a23a4/lucene/core/src/test/org/apache/lucene/store/TestMmapDirectory.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/store/TestMmapDirectory.java b/lucene/core/src/test/org/apache/lucene/store/TestMmapDirectory.java
index 44e6de2..7713a00 100644
--- a/lucene/core/src/test/org/apache/lucene/store/TestMmapDirectory.java
+++ b/lucene/core/src/test/org/apache/lucene/store/TestMmapDirectory.java
@@ -35,7 +35,7 @@ public class TestMmapDirectory extends BaseDirectoryTestCase {
@Override
public void setUp() throws Exception {
super.setUp();
- assumeTrue("test requires a jre that supports unmapping", MMapDirectory.UNMAP_SUPPORTED);
+ assumeTrue(MMapDirectory.UNMAP_NOT_SUPPORTED_REASON, MMapDirectory.UNMAP_SUPPORTED);
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/185a23a4/lucene/core/src/test/org/apache/lucene/store/TestMultiMMap.java
----------------------------------------------------------------------
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 adea8ff..5235b18 100644
--- a/lucene/core/src/test/org/apache/lucene/store/TestMultiMMap.java
+++ b/lucene/core/src/test/org/apache/lucene/store/TestMultiMMap.java
@@ -46,7 +46,7 @@ public class TestMultiMMap extends BaseDirectoryTestCase {
@Override
public void setUp() throws Exception {
super.setUp();
- assumeTrue("test requires a jre that supports unmapping", MMapDirectory.UNMAP_SUPPORTED);
+ assumeTrue(MMapDirectory.UNMAP_NOT_SUPPORTED_REASON, MMapDirectory.UNMAP_SUPPORTED);
}
public void testCloneSafety() throws Exception {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/185a23a4/lucene/core/src/test/org/apache/lucene/util/fst/Test2BFST.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/util/fst/Test2BFST.java b/lucene/core/src/test/org/apache/lucene/util/fst/Test2BFST.java
index 79313e0..d0ad8c6 100644
--- a/lucene/core/src/test/org/apache/lucene/util/fst/Test2BFST.java
+++ b/lucene/core/src/test/org/apache/lucene/util/fst/Test2BFST.java
@@ -40,6 +40,8 @@ public class Test2BFST extends LuceneTestCase {
private static long LIMIT = 3L*1024*1024*1024;
public void test() throws Exception {
+ assumeWorkingMMapOnWindows();
+
int[] ints = new int[7];
IntsRef input = new IntsRef(ints, 0, ints.length);
long seed = random().nextLong();
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/185a23a4/lucene/test-framework/src/java/org/apache/lucene/index/BaseStoredFieldsFormatTestCase.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/java/org/apache/lucene/index/BaseStoredFieldsFormatTestCase.java b/lucene/test-framework/src/java/org/apache/lucene/index/BaseStoredFieldsFormatTestCase.java
index 9d84e6a..18f623a 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/index/BaseStoredFieldsFormatTestCase.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/index/BaseStoredFieldsFormatTestCase.java
@@ -671,6 +671,8 @@ public abstract class BaseStoredFieldsFormatTestCase extends BaseIndexFileFormat
@Nightly
public void testBigDocuments() throws IOException {
+ assumeWorkingMMapOnWindows();
+
// "big" as "much bigger than the chunk size"
// for this test we force a FS dir
// we can't just use newFSDirectory, because this test doesn't really index anything.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/185a23a4/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java b/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java
index 78360ef..7d0aba7 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java
@@ -90,6 +90,7 @@ import org.apache.lucene.store.FSLockFactory;
import org.apache.lucene.store.FlushInfo;
import org.apache.lucene.store.IOContext;
import org.apache.lucene.store.LockFactory;
+import org.apache.lucene.store.MMapDirectory;
import org.apache.lucene.store.MergeInfo;
import org.apache.lucene.store.MockDirectoryWrapper.Throttling;
import org.apache.lucene.store.MockDirectoryWrapper;
@@ -449,11 +450,24 @@ public abstract class LuceneTestCase extends Assert {
LEAVE_TEMPORARY = defaultValue;
}
+ /** Returns true, if MMapDirectory supports unmapping on this platform (required for Windows), or if we are not on Windows. */
+ public static boolean hasWorkingMMapOnWindows() {
+ return !Constants.WINDOWS || MMapDirectory.UNMAP_SUPPORTED;
+ }
+
+ /** Assumes that the current MMapDirectory implementation supports unmapping, so the test will not fail on Windows.
+ * @see #hasWorkingMMapOnWindows()
+ * */
+ public static void assumeWorkingMMapOnWindows() {
+ assumeTrue(MMapDirectory.UNMAP_NOT_SUPPORTED_REASON, hasWorkingMMapOnWindows());
+ }
+
/** Filesystem-based {@link Directory} implementations. */
private static final List<String> FS_DIRECTORIES = Arrays.asList(
"SimpleFSDirectory",
"NIOFSDirectory",
- "MMapDirectory"
+ // SimpleFSDirectory as replacement for MMapDirectory if unmapping is not supported on Windows (to make randomization stable):
+ hasWorkingMMapOnWindows() ? "MMapDirectory" : "SimpleFSDirectory"
);
/** All {@link Directory} implementations. */
@@ -462,7 +476,7 @@ public abstract class LuceneTestCase extends Assert {
CORE_DIRECTORIES = new ArrayList<>(FS_DIRECTORIES);
CORE_DIRECTORIES.add("RAMDirectory");
}
-
+
/** A {@link org.apache.lucene.search.QueryCachingPolicy} that randomly caches. */
public static final QueryCachingPolicy MAYBE_CACHE_POLICY = new QueryCachingPolicy() {
@@ -829,7 +843,7 @@ public abstract class LuceneTestCase extends Assert {
public static void assumeNoException(String msg, Exception e) {
RandomizedTest.assumeNoException(msg, e);
}
-
+
/**
* Return <code>args</code> as a {@link Set} instance. The order of elements is not
* preserved in iterators.