public virtual void TestCloseInnerReader() { Directory dir1 = GetDir1(Random); CompositeReader ir1 = DirectoryReader.Open(dir1); Assert.AreEqual(1, ir1.GetSequentialSubReaders()[0].RefCount); // with overlapping ParallelCompositeReader pr = new ParallelCompositeReader(true, new CompositeReader[] { ir1 }, new CompositeReader[] { ir1 }); IndexReader psub = pr.GetSequentialSubReaders()[0]; Assert.AreEqual(1, psub.RefCount); ir1.Dispose(); Assert.AreEqual(1, psub.RefCount, "refCount of synthetic subreader should be unchanged"); try { psub.Document(0); Assert.Fail("Subreader should be already closed because inner reader was closed!"); } #pragma warning disable 168 catch (ObjectDisposedException e) #pragma warning restore 168 { // pass } try { pr.Document(0); Assert.Fail("ParallelCompositeReader should be already closed because inner reader was closed!"); } #pragma warning disable 168 catch (ObjectDisposedException e) #pragma warning restore 168 { // pass } // noop: pr.Dispose(); Assert.AreEqual(0, psub.RefCount); dir1.Dispose(); }
public virtual void TestWithUnindexedFields() { Directory dir = NewDirectory(); RandomIndexWriter riw = new RandomIndexWriter(Random, dir, iwc); for (int i = 0; i < 100; i++) { Document doc = new Document(); // ensure at least one doc is indexed with offsets if (i < 99 && Random.Next(2) == 0) { // stored only FieldType ft = new FieldType(); ft.IsIndexed = false; ft.IsStored = true; doc.Add(new Field("foo", "boo!", ft)); } else { FieldType ft = new FieldType(TextField.TYPE_STORED); ft.IndexOptions = IndexOptions.DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS; if (Random.NextBoolean()) { // store some term vectors for the checkindex cross-check ft.StoreTermVectors = true; ft.StoreTermVectorPositions = true; ft.StoreTermVectorOffsets = true; } doc.Add(new Field("foo", "bar", ft)); } riw.AddDocument(doc); } CompositeReader ir = riw.GetReader(); AtomicReader slow = SlowCompositeReaderWrapper.Wrap(ir); FieldInfos fis = slow.FieldInfos; Assert.AreEqual(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS, fis.FieldInfo("foo").IndexOptions); slow.Dispose(); ir.Dispose(); riw.Dispose(); dir.Dispose(); }
public virtual void TestReaderClosedListener1() { Directory dir1 = GetDir1(Random()); CompositeReader ir1 = DirectoryReader.Open(dir1); // with overlapping ParallelCompositeReader pr = new ParallelCompositeReader(false, new CompositeReader[] { ir1 }, new CompositeReader[] { ir1 }); int[] listenerClosedCount = new int[1]; Assert.AreEqual(3, pr.Leaves.Count); foreach (AtomicReaderContext cxt in pr.Leaves) { cxt.Reader.AddReaderClosedListener(new ReaderClosedListenerAnonymousInnerClassHelper(this, listenerClosedCount)); } pr.Dispose(); ir1.Dispose(); Assert.AreEqual(3, listenerClosedCount[0]); dir1.Dispose(); }
protected internal override void DoClose() { // TODO: as this is a wrapper, should we really close the delegate? @in.Dispose(); }