public virtual void TestCrashWhileIndexing(
[ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
// this test relies on being able to open a reader before any commit
// happened, so we must create an initial commit just to allow that, but
// before any documents were added.
IndexWriter writer = InitIndex(scheduler, Random(), true);
MockDirectoryWrapper dir = (MockDirectoryWrapper)writer.Directory;
// We create leftover files because merging could be
// running when we crash:
dir.AssertNoUnrefencedFilesOnClose = false;
Crash(writer);
IndexReader reader = DirectoryReader.Open(dir);
Assert.IsTrue(reader.NumDocs < 157);
reader.Dispose();
// Make a new dir, copying from the crashed dir, and
// open IW on it, to confirm IW "recovers" after a
// crash:
Directory dir2 = NewDirectory(dir);
dir.Dispose();
(new RandomIndexWriter(Random(), dir2, Similarity, TimeZone)).Dispose();
dir2.Dispose();
}