Clover Coverage Report
Coverage timestamp: Fri May 9 2008 10:54:27 EST
209   381   22   16.08
14   265   0.11   13
13     1.69  
1    
 
  TestAddIndexesNoOptimize       Line # 15 209 22 99.2% 0.9915254
 
  (7)
 
1    package org.apache.lucene.index;
2   
3    import java.io.IOException;
4   
5    import junit.framework.TestCase;
6   
7    import org.apache.lucene.analysis.WhitespaceAnalyzer;
8    import org.apache.lucene.document.Document;
9    import org.apache.lucene.document.Field;
10    import org.apache.lucene.index.IndexReader;
11    import org.apache.lucene.index.IndexWriter;
12    import org.apache.lucene.store.Directory;
13    import org.apache.lucene.store.RAMDirectory;
14   
 
15    public class TestAddIndexesNoOptimize extends TestCase {
 
16  1 toggle public void testSimpleCase() throws IOException {
17    // main directory
18  1 Directory dir = new RAMDirectory();
19    // two auxiliary directories
20  1 Directory aux = new RAMDirectory();
21  1 Directory aux2 = new RAMDirectory();
22   
23  1 IndexWriter writer = null;
24   
25  1 writer = newWriter(dir, true);
26    // add 100 documents
27  1 addDocs(writer, 100);
28  1 assertEquals(100, writer.docCount());
29  1 writer.close();
30   
31  1 writer = newWriter(aux, true);
32  1 writer.setUseCompoundFile(false); // use one without a compound file
33    // add 40 documents in separate files
34  1 addDocs(writer, 40);
35  1 assertEquals(40, writer.docCount());
36  1 writer.close();
37   
38  1 writer = newWriter(aux2, true);
39    // add 40 documents in compound files
40  1 addDocs2(writer, 50);
41  1 assertEquals(50, writer.docCount());
42  1 writer.close();
43   
44    // test doc count before segments are merged
45  1 writer = newWriter(dir, false);
46  1 assertEquals(100, writer.docCount());
47  1 writer.addIndexesNoOptimize(new Directory[] { aux, aux2 });
48  1 assertEquals(190, writer.docCount());
49  1 writer.close();
50   
51    // make sure the old index is correct
52  1 verifyNumDocs(aux, 40);
53   
54    // make sure the new index is correct
55  1 verifyNumDocs(dir, 190);
56   
57    // now add another set in.
58  1 Directory aux3 = new RAMDirectory();
59  1 writer = newWriter(aux3, true);
60    // add 40 documents
61  1 addDocs(writer, 40);
62  1 assertEquals(40, writer.docCount());
63  1 writer.close();
64   
65    // test doc count before segments are merged/index is optimized
66  1 writer = newWriter(dir, false);
67  1 assertEquals(190, writer.docCount());
68  1 writer.addIndexesNoOptimize(new Directory[] { aux3 });
69  1 assertEquals(230, writer.docCount());
70  1 writer.close();
71   
72    // make sure the new index is correct
73  1 verifyNumDocs(dir, 230);
74   
75  1 verifyTermDocs(dir, new Term("content", "aaa"), 180);
76   
77  1 verifyTermDocs(dir, new Term("content", "bbb"), 50);
78   
79    // now optimize it.
80  1 writer = newWriter(dir, false);
81  1 writer.optimize();
82  1 writer.close();
83   
84    // make sure the new index is correct
85  1 verifyNumDocs(dir, 230);
86   
87  1 verifyTermDocs(dir, new Term("content", "aaa"), 180);
88   
89  1 verifyTermDocs(dir, new Term("content", "bbb"), 50);
90   
91    // now add a single document
92  1 Directory aux4 = new RAMDirectory();
93  1 writer = newWriter(aux4, true);
94  1 addDocs2(writer, 1);
95  1 writer.close();
96   
97  1 writer = newWriter(dir, false);
98  1 assertEquals(230, writer.docCount());
99  1 writer.addIndexesNoOptimize(new Directory[] { aux4 });
100  1 assertEquals(231, writer.docCount());
101  1 writer.close();
102   
103  1 verifyNumDocs(dir, 231);
104   
105  1 verifyTermDocs(dir, new Term("content", "bbb"), 51);
106    }
107   
108    // case 0: add self or exceed maxMergeDocs, expect exception
 
109  1 toggle public void testAddSelf() throws IOException {
110    // main directory
111  1 Directory dir = new RAMDirectory();
112    // auxiliary directory
113  1 Directory aux = new RAMDirectory();
114   
115  1 IndexWriter writer = null;
116   
117  1 writer = newWriter(dir, true);
118    // add 100 documents
119  1 addDocs(writer, 100);
120  1 assertEquals(100, writer.docCount());
121  1 writer.close();
122   
123  1 writer = newWriter(aux, true);
124  1 writer.setUseCompoundFile(false); // use one without a compound file
125  1 writer.setMaxBufferedDocs(1000);
126    // add 140 documents in separate files
127  1 addDocs(writer, 40);
128  1 writer.close();
129  1 writer = newWriter(aux, true);
130  1 writer.setUseCompoundFile(false); // use one without a compound file
131  1 writer.setMaxBufferedDocs(1000);
132  1 addDocs(writer, 100);
133  1 writer.close();
134   
135  1 writer = newWriter(dir, false);
136  1 int maxMergeDocs = writer.getMaxMergeDocs();
137  1 writer.setMaxMergeDocs(99);
138   
139  1 try {
140    // upper bound cannot exceed maxMergeDocs
141  1 writer.addIndexesNoOptimize(new Directory[] { aux });
142  0 assertTrue(false);
143    }
144    catch (IllegalArgumentException e) {
145  1 assertEquals(100, writer.docCount());
146    }
147   
148  1 writer.setMaxMergeDocs(maxMergeDocs);
149  1 try {
150    // cannot add self
151  1 writer.addIndexesNoOptimize(new Directory[] { aux, dir });
152  0 assertTrue(false);
153    }
154    catch (IllegalArgumentException e) {
155  1 assertEquals(100, writer.docCount());
156    }
157  1