You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2014/05/02 04:12:17 UTC

svn commit: r1591804 - in /lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index: TestIndexWriter.java TestIndexWriterExceptions2.java

Author: rmuir
Date: Fri May  2 02:12:16 2014
New Revision: 1591804

URL: http://svn.apache.org/r1591804
Log:
improve block document exception testing

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

Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java?rev=1591804&r1=1591803&r2=1591804&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java Fri May  2 02:12:16 2014
@@ -2187,6 +2187,40 @@ public class TestIndexWriter extends Luc
     w.shutdown();
     IOUtils.close(reader, dir);
   }
+  
+  @AwaitsFix(bugUrl = "https://issues.apache.org/jira/browse/LUCENE-5611")
+  public void testIterableThrowsException2() throws IOException {
+    Directory dir = newDirectory();
+    IndexWriter w = new IndexWriter(dir, newIndexWriterConfig(
+        TEST_VERSION_CURRENT, new MockAnalyzer(random())));
+    try {
+      w.addDocuments(new Iterable<Document>() {
+        @Override
+        public Iterator<Document> iterator() {
+          return new Iterator<Document>() {
+
+            @Override
+            public boolean hasNext() {
+              return true;
+            }
+
+            @Override
+            public Document next() {
+              throw new RuntimeException("boom");
+            }
+
+            @Override
+            public void remove() { assert false; }
+          };
+        }
+      });
+    } catch (Exception e) {
+      assertNotNull(e.getMessage());
+      assertEquals("boom", e.getMessage());
+    }
+    w.shutdown();
+    IOUtils.close(dir);
+  }
 
   private static class RandomFailingFieldIterable implements Iterable<IndexDocument> {
     private final List<? extends IndexDocument> docList;

Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterExceptions2.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterExceptions2.java?rev=1591804&r1=1591803&r2=1591804&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterExceptions2.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterExceptions2.java Fri May  2 02:12:16 2014
@@ -19,6 +19,7 @@ package org.apache.lucene.index;
 
 import java.io.ByteArrayOutputStream;
 import java.io.PrintStream;
+import java.util.Arrays;
 import java.util.Random;
 
 import org.apache.lucene.analysis.Analyzer;
@@ -119,25 +120,52 @@ public class TestIndexWriterExceptions2 
         ft.setStoreTermVectors(true);
         doc.add(newField("text_vectors", TestUtil.randomAnalysisString(random(), 6, true), ft));
         
-        try {
-          iw.addDocument(doc);
-          // we made it, sometimes delete our doc, or update a dv
-          int thingToDo = random().nextInt(4);
-          if (thingToDo == 0) {
-            iw.deleteDocuments(new Term("id", Integer.toString(i)));
-          } else if (thingToDo == 1 && defaultCodecSupportsFieldUpdates()) {
-            iw.updateNumericDocValue(new Term("id", Integer.toString(i)), "dv", i+1L);
-          } else if (thingToDo == 2 && defaultCodecSupportsFieldUpdates()) {
-            iw.updateBinaryDocValue(new Term("id", Integer.toString(i)), "dv2", new BytesRef(Integer.toString(i+1)));
+        if (random().nextInt(10) > 0) {
+          // single doc
+          try {
+            iw.addDocument(doc);
+            // we made it, sometimes delete our doc, or update a dv
+            int thingToDo = random().nextInt(4);
+            if (thingToDo == 0) {
+              iw.deleteDocuments(new Term("id", Integer.toString(i)));
+            } else if (thingToDo == 1 && defaultCodecSupportsFieldUpdates()) {
+              iw.updateNumericDocValue(new Term("id", Integer.toString(i)), "dv", i+1L);
+            } else if (thingToDo == 2 && defaultCodecSupportsFieldUpdates()) {
+              iw.updateBinaryDocValue(new Term("id", Integer.toString(i)), "dv2", new BytesRef(Integer.toString(i+1)));
+            }
+          } catch (Exception e) {
+            if (e.getMessage() != null && e.getMessage().startsWith("Fake IOException")) {
+              exceptionStream.println("\nTEST: got expected fake exc:" + e.getMessage());
+              e.printStackTrace(exceptionStream);
+            } else {
+              Rethrow.rethrow(e);
+            }
           }
-        } catch (Exception e) {
-          if (e.getMessage() != null && e.getMessage().startsWith("Fake IOException")) {
-            exceptionStream.println("\nTEST: got expected fake exc:" + e.getMessage());
-            e.printStackTrace(exceptionStream);
-          } else {
-            Rethrow.rethrow(e);
+        } else {
+          // block docs
+          Document doc2 = new Document();
+          doc2.add(newStringField("id", Integer.toString(-i), Field.Store.NO));
+          doc2.add(newTextField("text1", TestUtil.randomAnalysisString(random(), 20, true), Field.Store.NO));
+          doc2.add(new StoredField("stored1", "foo"));
+          doc2.add(new StoredField("stored1", "bar"));
+          doc2.add(newField("text_vectors", TestUtil.randomAnalysisString(random(), 6, true), ft));
+          
+          try {
+            iw.addDocuments(Arrays.asList(doc, doc2));
+            // we made it, sometimes delete our docs
+            if (random().nextBoolean()) {
+              iw.deleteDocuments(new Term("id", Integer.toString(i)), new Term("id", Integer.toString(-i)));
+            }
+          } catch (Exception e) {
+            if (e.getMessage() != null && e.getMessage().startsWith("Fake IOException")) {
+              exceptionStream.println("\nTEST: got expected fake exc:" + e.getMessage());
+              e.printStackTrace(exceptionStream);
+            } else {
+              Rethrow.rethrow(e);
+            }
           }
         }
+
         if (random().nextInt(10) == 0) {
           // trigger flush:
           try {