Index: modules/facet/src/test/org/apache/lucene/facet/taxonomy/TestTaxonomyCombined.java =================================================================== --- modules/facet/src/test/org/apache/lucene/facet/taxonomy/TestTaxonomyCombined.java (revision 1201720) +++ modules/facet/src/test/org/apache/lucene/facet/taxonomy/TestTaxonomyCombined.java (working copy) @@ -5,6 +5,7 @@ import java.io.StringWriter; import java.util.ArrayList; import java.util.Arrays; +import java.util.Random; import org.apache.lucene.store.Directory; import org.apache.lucene.store.LockObtainFailedException; @@ -12,10 +13,12 @@ import org.junit.Ignore; import org.junit.Test; +import org.apache.lucene.util.IOUtils; import org.apache.lucene.util.LuceneTestCase; import org.apache.lucene.facet.taxonomy.TaxonomyReader.ChildrenArrays; import org.apache.lucene.facet.taxonomy.directory.DirectoryTaxonomyReader; import org.apache.lucene.facet.taxonomy.directory.DirectoryTaxonomyWriter; +import org.apache.lucene.index.IndexWriterConfig.OpenMode; import org.apache.lucene.util.SlowRAMDirectory; /** @@ -847,6 +850,65 @@ return sw.toString(); } + /** + * Test that recreating a taxonomy works well with a freshly opened taxonomy reader + */ + @Test + public void testFreshReadRecreatedTaxonomy() throws Exception { + doTestReopenRecreatedTaxonomy(random, true); + } + + /** + * Test that recreating a taxonomy works well with a reopened taxonomy reader + */ + @Test + public void testReopenReadRecreatedTaxonomy() throws Exception { + doTestReopenRecreatedTaxonomy(random, false); + } + + private void doTestReopenRecreatedTaxonomy(Random random, boolean closeReader) throws Exception { + Directory dir = null; + TaxonomyWriter tw = null; + TaxonomyReader tr = null; + + // prepare a few categories + int n = 10; + CategoryPath[] cp = new CategoryPath[n]; + for (int i=0; i