You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2010/07/29 18:38:44 UTC

svn commit: r980501 - /lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexWriter.java

Author: mikemccand
Date: Thu Jul 29 16:38:44 2010
New Revision: 980501

URL: http://svn.apache.org/viewvc?rev=980501&view=rev
Log:
add randomized test case to test stored fields

Modified:
    lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexWriter.java

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexWriter.java?rev=980501&r1=980500&r2=980501&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexWriter.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexWriter.java Thu Jul 29 16:38:44 2010
@@ -32,6 +32,7 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Random;
+import java.util.Collections;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 import org.apache.lucene.util.LuceneTestCase;
@@ -5067,4 +5068,58 @@ public class TestIndexWriter extends Luc
 
     dir.close();
   }
+
+  public void testRandomStoredFields() throws IOException {
+    Directory dir = new MockRAMDirectory();
+    Random rand = newRandom();
+    RandomIndexWriter w = new RandomIndexWriter(rand, dir, newIndexWriterConfig(rand, TEST_VERSION_CURRENT, new MockAnalyzer()).setMaxBufferedDocs(_TestUtil.nextInt(rand, 5, 20)));
+    final int docCount = 200*RANDOM_MULTIPLIER;
+    final int fieldCount = _TestUtil.nextInt(rand, 1, 5);
+    String[][] fields = new String[fieldCount][];
+    for(int i=0;i<fieldCount;i++) {
+      fields[i] = new String[docCount];
+    }
+
+    final List<Integer> fieldIDs = new ArrayList<Integer>();
+
+    for(int i=0;i<fieldCount;i++) {
+      fieldIDs.add(i);
+    }
+    
+    for(int i=0;i<docCount;i++) {
+      Document doc = new Document();
+      for(int field: fieldIDs) {
+        final String s;
+        if (rand.nextInt(4) != 3) {
+          s = _TestUtil.randomUnicodeString(rand, 1000);
+          doc.add(new Field("f"+field, s, Field.Store.YES, Field.Index.NO));
+        } else {
+          s = null;
+        }
+        fields[field][i] = s;
+      }
+      w.addDocument(doc);
+      if (rand.nextInt(50) == 17) {
+        // mixup binding of field name -> Number every so often
+        Collections.shuffle(fieldIDs);
+      }
+    }
+
+    for(int x=0;x<2;x++) {
+      IndexReader r = w.getReader();
+
+      for(int iter=0;iter<1000*RANDOM_MULTIPLIER;iter++) {
+        int docID = rand.nextInt(docCount);
+        Document doc = r.document(docID);
+        for(int i=0;i<fieldCount;i++) {
+          assertEquals(fields[i][docID], doc.get("f"+i));
+        }
+      }
+      r.close();
+      w.optimize();
+    }
+    w.close();
+
+    dir.close();
+  }
 }