Clover Coverage Report
Coverage timestamp: Fri May 9 2008 10:54:27 EST
47   113   5   11.75
2   75   0.11   4
4     1.25  
1    
 
  TestSegmentMerger       Line # 27 47 5 100% 1.0
 
  (2)
 
1    package org.apache.lucene.index;
2   
3    /**
4    * Copyright 2004 The Apache Software Foundation
5    *
6    * Licensed under the Apache License, Version 2.0 (the "License");
7    * you may not use this file except in compliance with the License.
8    * You may obtain a copy of the License at
9    *
10    * http://www.apache.org/licenses/LICENSE-2.0
11    *
12    * Unless required by applicable law or agreed to in writing, software
13    * distributed under the License is distributed on an "AS IS" BASIS,
14    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15    * See the License for the specific language governing permissions and
16    * limitations under the License.
17    */
18   
19    import junit.framework.TestCase;
20    import org.apache.lucene.store.Directory;
21    import org.apache.lucene.store.RAMDirectory;
22    import org.apache.lucene.document.Document;
23   
24    import java.io.IOException;
25    import java.util.Collection;
26   
 
27    public class TestSegmentMerger extends TestCase {
28    //The variables for the new merged segment
29    private Directory mergedDir = new RAMDirectory();
30    private String mergedSegment = "test";
31    //First segment to be merged
32    private Directory merge1Dir = new RAMDirectory();
33    private Document doc1 = new Document();
34    private String merge1Segment = "test-1";
35    private SegmentReader reader1 = null;
36    //Second Segment to be merged
37    private Directory merge2Dir = new RAMDirectory();
38    private Document doc2 = new Document();
39    private String merge2Segment = "test-2";
40    private SegmentReader reader2 = null;
41   
42   
 
43  2 toggle public TestSegmentMerger(String s) {
44  2 super(s);
45    }
46   
 
47  2 toggle protected void setUp() throws IOException {
48  2 DocHelper.setupDoc(doc1);
49  2 DocHelper.writeDoc(merge1Dir, merge1Segment, doc1);
50  2 DocHelper.setupDoc(doc2);
51  2 DocHelper.writeDoc(merge2Dir, merge2Segment, doc2);
52  2 reader1 = SegmentReader.get(new SegmentInfo(merge1Segment, 1, merge1Dir));
53  2 reader2 = SegmentReader.get(new SegmentInfo(merge2Segment, 1, merge2Dir));
54    }
55   
 
56  1 toggle public void test() {
57  1 assertTrue(mergedDir != null);
58  1 assertTrue(merge1Dir != null);
59  1 assertTrue(merge2Dir != null);
60  1 assertTrue(reader1 != null);
61  1 assertTrue(reader2 != null);
62    }
63   
 
64  1 toggle public void testMerge() throws IOException {
65  1 SegmentMerger merger = new SegmentMerger(mergedDir, mergedSegment);
66  1 merger.add(reader1);
67  1 merger.add(reader2);
68  1 int docsMerged = merger.merge();
69  1 merger.closeReaders();
70  1 assertTrue(docsMerged == 2);
71    //Should be able to open a new SegmentReader against the new directory
72  1 SegmentReader mergedReader = SegmentReader.get(new SegmentInfo(mergedSegment, docsMerged, mergedDir));
73  1 assertTrue(mergedReader != null);
74  1 assertTrue(mergedReader.numDocs() == 2);
75  1 Document newDoc1 = mergedReader.document(0);
76  1 assertTrue(newDoc1 != null);
77    //There are 2 unstored fields on the document
78  1 assertTrue(DocHelper.numFields(newDoc1) == DocHelper.numFields(doc1) - DocHelper.unstored.size());
79  1 Document newDoc2 = mergedReader.document(1);
80  1 assertTrue(newDoc2 != null);
81  1 assertTrue(DocHelper.numFields(newDoc2) == DocHelper.numFields(doc2) - DocHelper.unstored.size());
82   
83  1 TermDocs termDocs = mergedReader.termDocs(new Term(DocHelper.TEXT_FIELD_2_KEY, "field"));
84  1 assertTrue(termDocs != null);
85  1 assertTrue(termDocs.next() == true);
86   
87  1 Collection stored = mergedReader.getFieldNames(IndexReader.FieldOption.INDEXED_WITH_TERMVECTOR);
88  1 assertTrue(stored != null);
89    //System.out.println("stored size: " + stored.size());
90  1 assertTrue("We do not have 4 fields that were indexed with term vector",stored.size() == 4);
91   
92  1 TermFreqVector vector = mergedReader.getTermFreqVector(0, DocHelper.TEXT_FIELD_2_KEY);
93  1 assertTrue(vector != null);
94  1 String [] terms = vector.getTerms();
95  1 assertTrue(terms != null);
96    //System.out.println("Terms size: " + terms.length);
97  1 assertTrue(terms.length == 3);
98  1 int [] freqs = vector.getTermFrequencies();
99  1 assertTrue(freqs != null);
100    //System.out.println("Freqs size: " + freqs.length);
101  1 assertTrue(vector instanceof TermPositionVector == true);
102   
103  4 for (int i = 0; i < terms.length; i++) {
104  3 String term = terms[i];
105  3 int freq = freqs[i];
106    //System.out.println("Term: " + term + " Freq: " + freq);
107  3 assertTrue(DocHelper.FIELD_2_TEXT.indexOf(term) != -1);
108  3 assertTrue(DocHelper.FIELD_2_FREQS[i] == freq);
109    }
110   
111  1 TestSegmentReader.checkNorms(mergedReader);
112    }
113    }