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          // create an empty index
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  }