From 6c54e030d4ce9b9956ffae1b4d8e4994c453ac52 Mon Sep 17 00:00:00 2001 From: Simon Willnauer Date: Sat, 28 Sep 2013 22:05:22 +0200 Subject: [PATCH] Expose several options from MockDirWrapper via index settings Index settings can now override default behavior for 'double write' and 'no delete open files' on MockDirectoryWrapper if tests use these options in a legit. way. ie. in a restore situation a double write is a legit operation. --- .../index/store/mock/MockDirectoryHelper.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/test/java/org/elasticsearch/index/store/mock/MockDirectoryHelper.java b/src/test/java/org/elasticsearch/index/store/mock/MockDirectoryHelper.java index 0d230c90454..3c634c15d27 100644 --- a/src/test/java/org/elasticsearch/index/store/mock/MockDirectoryHelper.java +++ b/src/test/java/org/elasticsearch/index/store/mock/MockDirectoryHelper.java @@ -46,18 +46,25 @@ public class MockDirectoryHelper { public static final String RANDOM_IO_EXCEPTION_RATE_ON_OPEN = "index.store.mock.random.io_exception_rate_on_open"; public static final String RANDOM_THROTTLE = "index.store.mock.random.throttle"; public static final String CHECK_INDEX_ON_CLOSE = "index.store.mock.check_index_on_close"; + public static final String RANDOM_PREVENT_DOUBLE_WRITE = "index.store.mock.random.prevent_double_write"; + public static final String RANDOM_NO_DELETE_OPEN_FILE = "index.store.mock.random.no_delete_open_file"; public static final Set wrappers = ConcurrentCollections.newConcurrentSet(); + private final Random random; private final double randomIOExceptionRate; private final double randomIOExceptionRateOnOpen; private final Throttling throttle; private final boolean checkIndexOnClose; - private Settings indexSettings; - private ShardId shardId; + private final Settings indexSettings; + private final ShardId shardId; + private final boolean preventDoubleWrite; + private final boolean noDeleteOpenFile; public MockDirectoryHelper(ShardId shardId, Settings indexSettings, ESLogger logger) { randomIOExceptionRate = indexSettings.getAsDouble(RANDOM_IO_EXCEPTION_RATE, 0.0d); randomIOExceptionRateOnOpen = indexSettings.getAsDouble(RANDOM_IO_EXCEPTION_RATE_ON_OPEN, 0.0d); + preventDoubleWrite = indexSettings.getAsBoolean(RANDOM_PREVENT_DOUBLE_WRITE, true); // true is default in MDW + noDeleteOpenFile = indexSettings.getAsBoolean(RANDOM_NO_DELETE_OPEN_FILE, true); // true is default in MDW final long seed = indexSettings.getAsLong(AbstractIntegrationTest.INDEX_SEED_SETTING, 0l); random = new Random(seed); random.nextInt(shardId.getId() + 1); // some randomness per shard @@ -77,6 +84,8 @@ public class MockDirectoryHelper { w.setRandomIOExceptionRateOnOpen(randomIOExceptionRateOnOpen); w.setThrottling(throttle); w.setCheckIndexOnClose(checkIndexOnClose); + w.setPreventDoubleWrite(preventDoubleWrite); + w.setNoDeleteOpenFile(noDeleteOpenFile); wrappers.add(w); return new FilterDirectory(w) { @Override