public virtual void TestIsCurrent() { RAMDirectory ramDir1 = new RAMDirectory(); AddDoc(ramDir1, "test foo", true); RAMDirectory ramDir2 = new RAMDirectory(); AddDoc(ramDir2, "test blah", true); IndexReader[] readers = new IndexReader[] { IndexReader.Open(ramDir1), IndexReader.Open(ramDir2) }; MultiReader mr = new MultiReader(readers); Assert.IsTrue(mr.IsCurrent()); // just opened, must be current AddDoc(ramDir1, "more text", false); Assert.IsFalse(mr.IsCurrent()); // has been modified, not current anymore AddDoc(ramDir2, "even more text", false); Assert.IsFalse(mr.IsCurrent()); // has been modified even more, not current anymore try { mr.GetVersion(); Assert.Fail(); } catch (System.NotSupportedException e) { // expected exception } mr.Close(); }
public virtual void TestMixedReaders() { Directory dir1 = new MockRAMDirectory(); TestIndexReaderReopen.CreateIndex(dir1, true); Directory dir2 = new MockRAMDirectory(); TestIndexReaderReopen.CreateIndex(dir2, true); IndexReader r1 = IndexReader.Open(dir1, false); IndexReader r2 = IndexReader.Open(dir2, false); MultiReader multiReader = new MultiReader(new IndexReader[] { r1, r2 }); PerformDefaultTests(multiReader); multiReader.Close(); dir1.Close(); dir2.Close(); }
public virtual void TestIsCurrent() { RAMDirectory ramDir1 = new RAMDirectory(); AddDoc(ramDir1, "test foo", true); RAMDirectory ramDir2 = new RAMDirectory(); AddDoc(ramDir2, "test blah", true); IndexReader[] readers = new IndexReader[] { IndexReader.Open(ramDir1, false), IndexReader.Open(ramDir2, false) }; MultiReader mr = new MultiReader(readers); Assert.IsTrue(mr.IsCurrent()); // just opened, must be current AddDoc(ramDir1, "more text", false); Assert.IsFalse(mr.IsCurrent()); // has been modified, not current anymore AddDoc(ramDir2, "even more text", false); Assert.IsFalse(mr.IsCurrent()); // has been modified even more, not current anymore Assert.Throws <NotSupportedException>(() => { var ver = mr.Version; }); mr.Close(); }
public virtual void TestIsCurrent() { RAMDirectory ramDir1 = new RAMDirectory(); AddDoc(ramDir1, "test foo", true); RAMDirectory ramDir2 = new RAMDirectory(); AddDoc(ramDir2, "test blah", true); IndexReader[] readers = new IndexReader[]{IndexReader.Open(ramDir1), IndexReader.Open(ramDir2)}; MultiReader mr = new MultiReader(readers); Assert.IsTrue(mr.IsCurrent()); // just opened, must be current AddDoc(ramDir1, "more text", false); Assert.IsFalse(mr.IsCurrent()); // has been modified, not current anymore AddDoc(ramDir2, "even more text", false); Assert.IsFalse(mr.IsCurrent()); // has been modified even more, not current anymore try { mr.GetVersion(); Assert.Fail(); } catch (System.NotSupportedException e) { // expected exception } mr.Close(); }
public virtual void TestMixedReaders() { Directory dir1 = new MockRAMDirectory(); TestIndexReaderReopen.CreateIndex(dir1, true); Directory dir2 = new MockRAMDirectory(); TestIndexReaderReopen.CreateIndex(dir2, true); IndexReader r1 = IndexReader.Open(dir1, false); IndexReader r2 = IndexReader.Open(dir2, false); MultiReader multiReader = new MultiReader(new IndexReader[]{r1, r2}); PerformDefaultTests(multiReader); multiReader.Close(); dir1.Close(); dir2.Close(); }
public virtual void TestReferenceCountingMultiReader() { for (int mode = 0; mode <= 1; mode++) { Directory dir1 = new MockRAMDirectory(); CreateIndex(dir1, false); Directory dir2 = new MockRAMDirectory(); CreateIndex(dir2, true); IndexReader reader1 = IndexReader.Open(dir1); AssertRefCountEquals(1, reader1); IndexReader initReader2 = IndexReader.Open(dir2); IndexReader multiReader1 = new MultiReader(new IndexReader[]{reader1, initReader2}, (mode == 0)); ModifyIndex(0, dir2); AssertRefCountEquals(1 + mode, reader1); IndexReader multiReader2 = multiReader1.Reopen(); // index1 hasn't changed, so multiReader2 should share reader1 now with multiReader1 AssertRefCountEquals(2 + mode, reader1); ModifyIndex(0, dir1); IndexReader reader2 = reader1.Reopen(); AssertRefCountEquals(2 + mode, reader1); if (mode == 1) { initReader2.Close(); } ModifyIndex(1, dir1); IndexReader reader3 = reader2.Reopen(); AssertRefCountEquals(2 + mode, reader1); AssertRefCountEquals(1, reader2); multiReader1.Close(); AssertRefCountEquals(1 + mode, reader1); multiReader1.Close(); AssertRefCountEquals(1 + mode, reader1); if (mode == 1) { initReader2.Close(); } reader1.Close(); AssertRefCountEquals(1, reader1); multiReader2.Close(); AssertRefCountEquals(0, reader1); multiReader2.Close(); AssertRefCountEquals(0, reader1); reader3.Close(); AssertRefCountEquals(0, reader1); AssertReaderClosed(reader1, true, false); reader2.Close(); AssertRefCountEquals(0, reader1); AssertReaderClosed(reader1, true, false); reader2.Close(); AssertRefCountEquals(0, reader1); reader3.Close(); AssertRefCountEquals(0, reader1); AssertReaderClosed(reader1, true, true); dir1.Close(); dir2.Close(); } }
public virtual void TestIsCurrent() { RAMDirectory ramDir1 = new RAMDirectory(); AddDoc(ramDir1, "test foo", true); RAMDirectory ramDir2 = new RAMDirectory(); AddDoc(ramDir2, "test blah", true); IndexReader[] readers = new IndexReader[]{IndexReader.Open(ramDir1, false), IndexReader.Open(ramDir2, false)}; MultiReader mr = new MultiReader(readers); Assert.IsTrue(mr.IsCurrent()); // just opened, must be current AddDoc(ramDir1, "more text", false); Assert.IsFalse(mr.IsCurrent()); // has been modified, not current anymore AddDoc(ramDir2, "even more text", false); Assert.IsFalse(mr.IsCurrent()); // has been modified even more, not current anymore Assert.Throws<NotSupportedException>(() => { var ver = mr.Version; }); mr.Close(); }