You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by re...@apache.org on 2008/03/05 16:22:14 UTC

svn commit: r633876 - in /jackrabbit/trunk: ./ jackrabbit-jcr-benchmark/ jackrabbit-jcr-benchmark/src/ jackrabbit-jcr-benchmark/src/main/ jackrabbit-jcr-benchmark/src/main/java/ jackrabbit-jcr-benchmark/src/main/java/org/ jackrabbit-jcr-benchmark/src/m...

Author: reschke
Date: Wed Mar  5 07:22:13 2008
New Revision: 633876

URL: http://svn.apache.org/viewvc?rev=633876&view=rev
Log:
JCR-1437: benchmark related test suite, including one initial test class testing big collections.

Added:
    jackrabbit/trunk/jackrabbit-jcr-benchmark/   (with props)
    jackrabbit/trunk/jackrabbit-jcr-benchmark/pom.xml   (with props)
    jackrabbit/trunk/jackrabbit-jcr-benchmark/src/
    jackrabbit/trunk/jackrabbit-jcr-benchmark/src/main/
    jackrabbit/trunk/jackrabbit-jcr-benchmark/src/main/java/
    jackrabbit/trunk/jackrabbit-jcr-benchmark/src/main/java/org/
    jackrabbit/trunk/jackrabbit-jcr-benchmark/src/main/java/org/apache/
    jackrabbit/trunk/jackrabbit-jcr-benchmark/src/main/java/org/apache/jackrabbit/
    jackrabbit/trunk/jackrabbit-jcr-benchmark/src/main/java/org/apache/jackrabbit/benchmark/
    jackrabbit/trunk/jackrabbit-jcr-benchmark/src/main/java/org/apache/jackrabbit/benchmark/BenchmarkSuite.java   (with props)
    jackrabbit/trunk/jackrabbit-jcr-benchmark/src/main/java/org/apache/jackrabbit/benchmark/BigCollectionTest.java   (with props)
Modified:
    jackrabbit/trunk/pom.xml

Propchange: jackrabbit/trunk/jackrabbit-jcr-benchmark/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Mar  5 07:22:13 2008
@@ -0,0 +1,4 @@
+.settings
+target
+.classpath
+.project

Added: jackrabbit/trunk/jackrabbit-jcr-benchmark/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-benchmark/pom.xml?rev=633876&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-benchmark/pom.xml (added)
+++ jackrabbit/trunk/jackrabbit-jcr-benchmark/pom.xml Wed Mar  5 07:22:13 2008
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+  -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+                             http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+<!-- ====================================================================== -->
+<!-- P R O J E C T  D E S C R I P T I O N                                   -->
+<!-- ====================================================================== -->
+  <parent>
+    <groupId>org.apache.jackrabbit</groupId>
+    <artifactId>jackrabbit</artifactId>
+    <version>1.5-SNAPSHOT</version>
+  </parent>
+  <artifactId>jackrabbit-jcr-benchmarks</artifactId>
+  <name>Jackrabbit JCR Benchmarks</name>
+  <description>JCR Benchmarks</description>
+
+  <scm>
+    <connection>
+      scm:svn:http://svn.apache.org/repos/asf/jackrabbit/trunk/jackrabbit-jcr-benchmark
+    </connection>
+    <developerConnection>
+      scm:svn:https://svn.apache.org/repos/asf/jackrabbit/trunk/jackrabbit-jcr-benchmark
+    </developerConnection>
+    <url>http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-benchmark</url>
+  </scm>
+
+  <dependencies>
+    <dependency>
+      <groupId>javax.jcr</groupId>
+      <artifactId>jcr</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.jackrabbit</groupId>
+      <artifactId>jackrabbit-jcr-tests</artifactId>
+    </dependency>
+  </dependencies>
+
+</project>

Propchange: jackrabbit/trunk/jackrabbit-jcr-benchmark/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/trunk/jackrabbit-jcr-benchmark/src/main/java/org/apache/jackrabbit/benchmark/BenchmarkSuite.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-benchmark/src/main/java/org/apache/jackrabbit/benchmark/BenchmarkSuite.java?rev=633876&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-benchmark/src/main/java/org/apache/jackrabbit/benchmark/BenchmarkSuite.java (added)
+++ jackrabbit/trunk/jackrabbit-jcr-benchmark/src/main/java/org/apache/jackrabbit/benchmark/BenchmarkSuite.java Wed Mar  5 07:22:13 2008
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jackrabbit.benchmark;
+
+import junit.framework.TestSuite;
+
+public class BenchmarkSuite extends TestSuite {
+
+    public BenchmarkSuite() {
+        super("JCR Benchmarks");
+        addTestSuite(BigCollectionTest.class);
+    }
+}

Propchange: jackrabbit/trunk/jackrabbit-jcr-benchmark/src/main/java/org/apache/jackrabbit/benchmark/BenchmarkSuite.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/trunk/jackrabbit-jcr-benchmark/src/main/java/org/apache/jackrabbit/benchmark/BigCollectionTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-benchmark/src/main/java/org/apache/jackrabbit/benchmark/BigCollectionTest.java?rev=633876&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-benchmark/src/main/java/org/apache/jackrabbit/benchmark/BigCollectionTest.java (added)
+++ jackrabbit/trunk/jackrabbit-jcr-benchmark/src/main/java/org/apache/jackrabbit/benchmark/BigCollectionTest.java Wed Mar  5 07:22:13 2008
@@ -0,0 +1,139 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jackrabbit.benchmark;
+
+import java.io.BufferedInputStream;
+import java.io.InputStream;
+
+import javax.jcr.Node;
+import javax.jcr.NodeIterator;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+
+import java.util.Calendar;
+
+import org.apache.jackrabbit.test.AbstractJCRTest;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class BigCollectionTest extends AbstractJCRTest {
+
+  private static final Logger LOG = LoggerFactory.getLogger(BigCollectionTest.class);
+
+  private static int MEMBERS = 500;
+  private static int MEMBERSIZE = 1024;
+  private static String MIMETYPE = "application/octet-stream";
+  private static int MINTIME = 1000;
+  private static int MINCOUNT = 5;
+
+  protected void setUp() throws Exception {
+      super.setUp();
+
+      Session session = testRootNode.getSession();
+      Node folder = null;
+      try {
+          folder = testRootNode.getNode("bigcoll");
+      }
+      catch (RepositoryException ex) {
+        // nothing to do
+      }
+        
+      // delete when needed
+      if (folder != null) {
+          folder.remove();
+          session.save();
+      }
+        
+      folder = testRootNode.addNode("bigcoll", "nt:folder");
+
+      long cnt = 0;
+
+      while (cnt < MEMBERS) {
+          InputStream is = new BufferedInputStream(new ContentGenerator(MEMBERSIZE), MEMBERSIZE);
+          Node l_new = folder.addNode("tst" + cnt, "nt:file");
+          Node l_cnew = l_new.addNode("jcr:content", "nt:resource");
+          l_cnew.setProperty("jcr:data", is);
+          l_cnew.setProperty("jcr:mimeType", MIMETYPE);
+          l_cnew.setProperty("jcr:lastModified", Calendar.getInstance());
+          cnt += 1;
+      }
+      session.save();
+  }
+
+  protected void tearDown() throws Exception {
+      try {
+          Node folder = testRootNode.getNode("bigcoll");
+          folder.remove();
+          folder.getSession().save();
+      }
+      catch (RepositoryException ex) {
+          // nothing to do
+      }
+      super.tearDown();
+  }
+  
+  public void testBrowse() throws RepositoryException {
+      Session session = testRootNode.getSession();
+      
+      long start = System.currentTimeMillis();
+      long cnt = 0;
+
+      while (System.currentTimeMillis() - start < MINTIME || cnt < MINCOUNT) {
+          Node dir = testRootNode.getNode("bigcoll");
+          int members = 0;
+          for (NodeIterator it = dir.getNodes(); it.hasNext(); ) {
+              Node child = it.nextNode();
+              Node content = child.getNode("jcr:content");
+              String type = content.getProperty("jcr:mimeType").getString();
+              long length = content.getProperty("jcr:data").getLength();
+              assertTrue(child.isNode());
+              assertEquals(MIMETYPE, type);
+              assertEquals(MEMBERSIZE, length);
+              members += 1;
+          }
+          assertEquals(MEMBERS, members);
+          session.refresh(false);
+          cnt += 1;
+      }
+      
+      long elapsed = System.currentTimeMillis() - start;
+      
+      LOG.info("testBrowse: " +  (double)elapsed / cnt + "ms per call (" + cnt + " iterations)");
+  }
+
+  private class ContentGenerator extends InputStream {
+
+    private long length;
+    private long position;
+
+    public ContentGenerator(long length) {
+        this.length = length;
+        this.position = 0;
+    }
+
+    public int read() {
+        if (this.position++ < this.length) {
+            return 0;
+        }
+        else {
+            return -1;
+        }
+    }
+  }
+
+}

Propchange: jackrabbit/trunk/jackrabbit-jcr-benchmark/src/main/java/org/apache/jackrabbit/benchmark/BigCollectionTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: jackrabbit/trunk/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/pom.xml?rev=633876&r1=633875&r2=633876&view=diff
==============================================================================
--- jackrabbit/trunk/pom.xml (original)
+++ jackrabbit/trunk/pom.xml Wed Mar  5 07:22:13 2008
@@ -57,6 +57,7 @@
     <module>jackrabbit-api</module>
     <module>jackrabbit-jcr-commons</module>
     <module>jackrabbit-jcr-tests</module>
+    <module>jackrabbit-jcr-benchmark</module>
     <module>jackrabbit-core</module>
     <module>jackrabbit-text-extractors</module>
     <module>jackrabbit-jcr-rmi</module>