1 package org.apache.lucene.search;
2
3 import junit.framework.TestCase;
4 import org.apache.lucene.analysis.standard.StandardAnalyzer;
5 import org.apache.lucene.index.IndexReader;
6 import org.apache.lucene.index.IndexWriter;
7 import org.apache.lucene.store.RAMDirectory;
8 import org.apache.lucene.util.Version;
9
10 import java.util.concurrent.CountDownLatch;
11
12 public class DelayCloseIndexSearcherTest extends TestCase
13 {
14
15 public void testIndexReaderClosedIfCloseWhenDoneCalledBeforeFinalClose() throws Exception
16 {
17 RAMDirectory directory = new RAMDirectory();
18
19
20 new IndexWriter(directory, new StandardAnalyzer(Version.LUCENE_29), IndexWriter.MaxFieldLength.UNLIMITED).close();
21
22 IndexReader indexReader = IndexReader.open(directory, false);
23 DelayCloseIndexSearcher indexSearcher = new DelayCloseIndexSearcher(indexReader);
24
25 indexSearcher.open();
26
27 assertEquals(1, indexReader.getRefCount());
28
29 indexSearcher.closeWhenDone();
30 indexSearcher.close();
31
32 assertEquals(0, indexReader.getRefCount());
33 }
34
35 }