### Eclipse Workspace Patch 1.0 #P oak-run Index: src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java =================================================================== --- src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java (revision 1547312) +++ src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java (working copy) @@ -165,7 +165,8 @@ ReadManyTest.uniform("UniformReadFiles", 1, ReadManyTest.FILES), ReadManyTest.uniform("UniformReadNodes", 1, ReadManyTest.NODES), new ConcurrentCreateNodesTest(), - new SequentialCreateNodesTest(), + SequentialCreateNodesTest.withAdmin(), + SequentialCreateNodesTest.withAnonymous() }; Set argset = Sets.newHashSet(options.nonOptionArguments()); Index: src/main/java/org/apache/jackrabbit/oak/benchmark/SequentialCreateNodesTest.java =================================================================== --- src/main/java/org/apache/jackrabbit/oak/benchmark/SequentialCreateNodesTest.java (revision 1547431) +++ src/main/java/org/apache/jackrabbit/oak/benchmark/SequentialCreateNodesTest.java (working copy) @@ -16,36 +16,77 @@ */ package org.apache.jackrabbit.oak.benchmark; +import static javax.jcr.security.Privilege.JCR_ALL; +import static org.apache.jackrabbit.commons.jackrabbit.authorization.AccessControlUtils.addAccessControlEntry; + import javax.jcr.Node; import javax.jcr.Session; -public class SequentialCreateNodesTest extends AbstractTest { +import org.apache.jackrabbit.core.security.principal.EveryonePrincipal; + +public abstract class SequentialCreateNodesTest extends AbstractTest { protected static final String ROOT_NODE_NAME = "test" + TEST_ID; private static final int NODE_COUNT = 25; + + private final String name; + private Node testRoot; + + protected SequentialCreateNodesTest(String name) { + this.name = name; + } + + @Override + public String toString() { + return name; + } + + protected abstract Session login(); + + public static Benchmark withAdmin() { + return new SequentialCreateNodesTest("SequentialCreateNodesWithAdmin") { + @Override + protected Session login() { + return loginWriter(); + } + }; + } + public static Benchmark withAnonymous() { + return new SequentialCreateNodesTest("SequentialCreateNodesWithAnonymous") { + @Override + protected Session login() { + return loginAnonymous(); + } + }; + } + @Override public void beforeTest() throws Exception { Session session = loginWriter(); - Node root = session.getRootNode().addNode(ROOT_NODE_NAME, "nt:unstructured"); + testRoot = session.getRootNode().addNode(ROOT_NODE_NAME, "nt:unstructured"); for (int i = 0; i < NODE_COUNT; i++) { - Node node = root.addNode("node" + i, "nt:unstructured"); - session.save(); + testRoot.addNode("node" + i, "nt:unstructured"); } + + addAccessControlEntry(session, testRoot.getPath(), EveryonePrincipal.getInstance(), + new String[] {JCR_ALL}, true); + + session.save(); + + testRoot = login().getNode(testRoot.getPath()); + session.logout(); } @Override protected void runTest() throws Exception { - - final Session session = loginWriter(); // TODO: anonymous is slow - - Node root = session.getRootNode().getNode(ROOT_NODE_NAME); + for (int i = 0; i < NODE_COUNT; i++) { - Node node = root.getNode("node" + i); + Node node = testRoot.getNode("node" + i); for (int j = 0; j < NODE_COUNT; j++) { - Node newNode = node.addNode("node" + j, "nt:unstructured"); - session.save(); + Node newNode = node.addNode("node" + j, "nt:unstructured"); } + testRoot.getSession().save(); } }