public virtual void TestReopen()
{
Directory dir = NewDirectory();
IndexWriterConfig conf = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random()));
IndexWriter writer = new IndexWriter(dir, conf);
writer.AddDocument(Doc(0));
writer.AddDocument(Doc(1));
bool isNRT = Random().NextBoolean();
DirectoryReader reader1;
if (isNRT)
{
reader1 = DirectoryReader.Open(writer, true);
}
else
{
writer.Commit();
reader1 = DirectoryReader.Open(dir);
}
// update doc
writer.UpdateNumericDocValue(new Term("id", "doc-0"), "val", 10L); // update doc-0's value to 10
if (!isNRT)
{
writer.Commit();
}
// reopen reader and assert only it sees the update
DirectoryReader reader2 = DirectoryReader.OpenIfChanged(reader1);
Assert.IsNotNull(reader2);
Assert.IsTrue(reader1 != reader2);
Assert.AreEqual(1, ((AtomicReader)reader1.Leaves[0].Reader).GetNumericDocValues("val").Get(0));
Assert.AreEqual(10, ((AtomicReader)reader2.Leaves[0].Reader).GetNumericDocValues("val").Get(0));
IOUtils.Close(writer, reader1, reader2, dir);
}