Author: adulceanu
Date: Wed Nov  1 10:41:33 2017
New Revision: 1813963

URL: http://svn.apache.org/viewvc?rev=1813963&view=rev
Log:
OAK-6893 - Add BasicWriteTest benchmark

Added:
    
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/BasicWriteTest.java
Modified:
    
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java

Added: 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/BasicWriteTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/BasicWriteTest.java?rev=1813963&view=auto
==============================================================================
--- 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/BasicWriteTest.java
 (added)
+++ 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/BasicWriteTest.java
 Wed Nov  1 10:41:33 2017
@@ -0,0 +1,62 @@
+package org.apache.jackrabbit.oak.benchmark;
+
+import java.io.ByteArrayInputStream;
+import java.util.Calendar;
+import java.util.Random;
+
+import javax.jcr.Node;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+
+/**
+ * Simple test case which adds a basic hierarchy of 3 nodes (nt:folder, nt:file
+ * and nt:resource) and 3 properties (jcr:mimeType, jcr:lastModified and
+ * jcr:data). The binary data accounts for 5MB and is randomly generated for
+ * each run.
+ */
+public class BasicWriteTest extends AbstractTest {
+    private static final int MB = 1024 * 1024;
+    private Session session;
+    private Node root;
+
+    /**
+     * Iteration counter used to avoid the slit document edge case in
+     * DocumentMK.
+     */
+    private int iteration = 0;
+
+    @Override
+    public void beforeSuite() throws RepositoryException {
+        session = loginWriter();
+    }
+
+    @Override
+    public void beforeTest() throws RepositoryException {
+        root = session.getRootNode().addNode(TEST_ID + iteration++, 
"nt:folder");
+        session.save();
+    }
+
+    @SuppressWarnings("deprecation")
+    @Override
+    protected void runTest() throws Exception {
+        final int blobSize = 5 * MB;
+        
+        Node file = root.addNode("server", "nt:file");
+
+        byte[] data = new byte[blobSize];
+        new Random().nextBytes(data);
+
+        Node content = file.addNode("jcr:content", "nt:resource");
+        content.setProperty("jcr:mimeType", "application/octet-stream");
+        content.setProperty("jcr:lastModified", Calendar.getInstance());
+        content.setProperty("jcr:data", new ByteArrayInputStream(data));
+
+        session.save();
+    }
+
+    @Override
+    public void afterTest() throws RepositoryException {
+        root.remove();
+        session.save();
+    }
+}

Modified: 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java?rev=1813963&r1=1813962&r2=1813963&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java
 Wed Nov  1 10:41:33 2017
@@ -455,7 +455,8 @@ public class BenchmarkRunner {
 
             new HybridIndexTest(base.value(options), statsProvider),
             new BundlingNodeTest(),
-            new PersistentCacheTest(statsProvider)
+            new PersistentCacheTest(statsProvider),
+            new BasicWriteTest()
         };
 
         Set<String> argset = Sets.newHashSet(nonOption.values(options));


Reply via email to