private Directory wrap(Directory dir) {
   final ElasticsearchMockDirectoryWrapper w =
       new ElasticsearchMockDirectoryWrapper(random, dir, this.crashIndex);
   w.setRandomIOExceptionRate(randomIOExceptionRate);
   w.setRandomIOExceptionRateOnOpen(randomIOExceptionRateOnOpen);
   w.setThrottling(throttle);
   w.setCheckIndexOnClose(false); // we do this on the index level
   w.setPreventDoubleWrite(preventDoubleWrite);
   // TODO: make this test robust to virus scanner
   w.setEnableVirusScanner(false);
   w.setNoDeleteOpenFile(noDeleteOpenFile);
   w.setUseSlowOpenClosers(false);
   LuceneTestCase.closeAfterSuite(new CloseableDirectory(w));
   return w;
 }
 public MockEngineSupport(EngineConfig config, Class<? extends FilterDirectoryReader> wrapper) {
   Settings indexSettings = config.getIndexSettings();
   shardId = config.getShardId();
   filterCache = config.getQueryCache();
   filterCachingPolicy = config.getQueryCachingPolicy();
   final long seed = indexSettings.getAsLong(ESIntegTestCase.SETTING_INDEX_SEED, 0l);
   Random random = new Random(seed);
   final double ratio =
       indexSettings.getAsDouble(
           WRAP_READER_RATIO, 0.0d); // DISABLED by default - AssertingDR is crazy slow
   boolean wrapReader = random.nextDouble() < ratio;
   if (logger.isTraceEnabled()) {
     logger.trace(
         "Using [{}] for shard [{}] seed: [{}] wrapReader: [{}]",
         this.getClass().getName(),
         shardId,
         seed,
         wrapReader);
   }
   mockContext = new MockContext(random, wrapReader, wrapper, indexSettings);
   this.searcherCloseable = new SearcherCloseable();
   LuceneTestCase.closeAfterSuite(searcherCloseable); // only one suite closeable per Engine
 }