Author: reschke
Date: Mon Nov 23 17:05:31 2015
New Revision: 1715888

URL: http://svn.apache.org/viewvc?rev=1715888&view=rev
Log:
OAK-3670: RDBDocumentStore on SQLServer: off-by-one bug may cause truncated 
JSON to be written

Add ignored test case

Modified:
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/AbstractDocumentStoreTest.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/BasicDocumentStoreTest.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/AbstractDocumentStoreTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/AbstractDocumentStoreTest.java?rev=1715888&r1=1715887&r2=1715888&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/AbstractDocumentStoreTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/AbstractDocumentStoreTest.java
 Mon Nov 23 17:05:31 2015
@@ -109,4 +109,15 @@ public abstract class AbstractDocumentSt
         }
         return new String(s);
     }
+
+    /**
+     * Generate a random string of given size, with or without non-ASCII 
characters.
+     */
+    public static String generateConstantString(int length) {
+        char[] s = new char[length];
+        for (int i = 0; i < length; i++) {
+            s[i] = (char)('0' + (i % 10));
+        }
+        return new String(s);
+    }
 }

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/BasicDocumentStoreTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/BasicDocumentStoreTest.java?rev=1715888&r1=1715887&r2=1715888&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/BasicDocumentStoreTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/BasicDocumentStoreTest.java
 Mon Nov 23 17:05:31 2015
@@ -35,6 +35,7 @@ import java.util.UUID;
 import org.apache.jackrabbit.oak.plugins.document.UpdateOp.Condition;
 import org.apache.jackrabbit.oak.plugins.document.UpdateOp.Key;
 import org.apache.jackrabbit.oak.plugins.document.util.Utils;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -347,6 +348,37 @@ public class BasicDocumentStoreTest exte
     }
 
     @Test
+    @Ignore("OAK-3670")
+    public void testRepeatingUpdatesOnSQLServer() {
+        // simulates two updates to trigger the off-by-one bug documented in 
OAK-3670
+        String id = this.getClass().getName() + 
".testRepeatingUpdatesOnSQLServer";
+
+        // remove if present
+        NodeDocument nd = super.ds.find(Collection.NODES, id);
+        if (nd != null) {
+            super.ds.remove(Collection.NODES, id);
+        }
+
+        UpdateOp up = new UpdateOp(id, true);
+        up.set("_id", id);
+        assertTrue(super.ds.create(Collection.NODES, 
Collections.singletonList(up)));
+        removeMe.add(id);
+
+        up = new UpdateOp(id, false);
+        up.set("_id", id);
+        up.set("f0", generateConstantString(3000));
+        super.ds.update(Collection.NODES, Collections.singletonList(id), up);
+
+        up = new UpdateOp(id, false);
+        up.set("_id", id);
+        up.set("f1", generateConstantString(967));
+        super.ds.update(Collection.NODES, Collections.singletonList(id), up);
+
+        NodeDocument doc = super.ds.find(Collection.NODES, id, 0);
+        assertNotNull(doc);
+    }
+
+    @Test
     public void testModifiedMaxUpdateQuery() {
         String id = this.getClass().getName() + ".testModifiedMaxUpdate";
         // create a test node


Reply via email to