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