You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2010/09/06 10:21:43 UTC

svn commit: r992969 - in /jackrabbit/trunk/test/performance: base/src/main/java/org/apache/jackrabbit/performance/AbstractPerformanceTest.java parent/pom.xml

Author: jukka
Date: Mon Sep  6 08:21:43 2010
New Revision: 992969

URL: http://svn.apache.org/viewvc?rev=992969&view=rev
Log:
JCR-2695: Jackrabbit performance test suite

Support more complex test/configuration selections.
Make it easy to specify a profiler for a test run.

Modified:
    jackrabbit/trunk/test/performance/base/src/main/java/org/apache/jackrabbit/performance/AbstractPerformanceTest.java
    jackrabbit/trunk/test/performance/parent/pom.xml

Modified: jackrabbit/trunk/test/performance/base/src/main/java/org/apache/jackrabbit/performance/AbstractPerformanceTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/test/performance/base/src/main/java/org/apache/jackrabbit/performance/AbstractPerformanceTest.java?rev=992969&r1=992968&r2=992969&view=diff
==============================================================================
--- jackrabbit/trunk/test/performance/base/src/main/java/org/apache/jackrabbit/performance/AbstractPerformanceTest.java (original)
+++ jackrabbit/trunk/test/performance/base/src/main/java/org/apache/jackrabbit/performance/AbstractPerformanceTest.java Mon Sep  6 08:21:43 2010
@@ -30,14 +30,31 @@ import java.io.InputStream;
 import java.io.OutputStream;
 import java.io.PrintWriter;
 import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
 
 public abstract class AbstractPerformanceTest {
 
     protected void testPerformance(String name) throws Exception {
+        Set<String> tests = new HashSet<String>();
+        Set<String> names = new HashSet<String>();
+        String selected = System.getProperty("only");
+        if (selected != null && selected.length() > 0) {
+            int colon = selected.indexOf(':');
+            if (colon != -1) {
+                names.addAll(Arrays.asList(selected.substring(colon + 1).split(",")));
+                selected = selected.substring(0, colon);
+            }
+            tests.addAll(Arrays.asList(selected.split(",")));
+        }
+
         // Create a repository using the Jackrabbit default configuration
-        testPerformance(
-                name,
-                RepositoryImpl.class.getResourceAsStream("repository.xml"));
+        if (names.isEmpty() || names.contains(name)) {
+            testPerformance(
+                    name,
+                    RepositoryImpl.class.getResourceAsStream("repository.xml"),
+                    tests);
+        }
 
         // Create repositories for any special configurations included
         File directory = new File(new File("src", "test"), "resources");
@@ -47,52 +64,58 @@ public abstract class AbstractPerformanc
             for (File file : files) {
                 String xml = file.getName();
                 if (file.isFile() && xml.endsWith(".xml")) {
-                    testPerformance(
-                            name + "-" + xml.substring(0, xml.length() - 4),
-                            FileUtils.openInputStream(file));
+                    String repositoryName =
+                        name + "-" + xml.substring(0, xml.length() - 4);
+                    if (names.isEmpty() || names.contains(repositoryName)) {
+                        testPerformance(
+                                repositoryName,
+                                FileUtils.openInputStream(file),
+                                tests);
+                    }
                 }
             }
         }
     }
 
-    private void testPerformance(String name, InputStream xml)
-            throws Exception {
+    private void testPerformance(
+            String name, InputStream xml, Set<String> tests) throws Exception {
         RepositoryImpl repository = createRepository(name, xml);
         try {
-            testPerformance(name, repository);
+            testPerformance(name, repository, tests);
         } finally {
             repository.shutdown();
         }
     }
 
-    private void testPerformance(String name, RepositoryImpl repository) {
+    private void testPerformance(
+            String name, RepositoryImpl repository, Set<String> tests) {
         PerformanceTestSuite suite = new PerformanceTestSuite(
                 repository,
                 new SimpleCredentials("admin", "admin".toCharArray()));
-        runTest(suite, new LoginTest(), name);
-        runTest(suite, new LoginLogoutTest(), name);
-        runTest(suite, new SmallFileReadTest(), name);
-        runTest(suite, new SmallFileWriteTest(), name);
-        runTest(suite, new BigFileReadTest(), name);
-        runTest(suite, new BigFileWriteTest(), name);
-        runTest(suite, new ConcurrentReadTest(), name);
-        runTest(suite, new ConcurrentReadWriteTest(), name);
-        runTest(suite, new SimpleSearchTest(), name);
-        runTest(suite, new TwoWayJoinTest(), name);
-        runTest(suite, new ThreeWayJoinTest(), name);
-        runTest(suite, new CreateManyChildNodesTest(), name);
-        runTest(suite, new UpdateManyChildNodesTest(), name);
-        runTest(suite, new TransientManyChildNodesTest(), name);
-        runTest(suite, new CreateUserTest(), name);
-        runTest(suite, new AddGroupMembersTest(), name);
-        runTest(suite, new GroupMemberLookupTest(), name);
-        runTest(suite, new GroupGetMembersTest(), name);
+        runTest(suite, new LoginTest(), name, tests);
+        runTest(suite, new LoginLogoutTest(), name, tests);
+        runTest(suite, new SmallFileReadTest(), name, tests);
+        runTest(suite, new SmallFileWriteTest(), name, tests);
+        runTest(suite, new BigFileReadTest(), name, tests);
+        runTest(suite, new BigFileWriteTest(), name, tests);
+        runTest(suite, new ConcurrentReadTest(), name, tests);
+        runTest(suite, new ConcurrentReadWriteTest(), name, tests);
+        runTest(suite, new SimpleSearchTest(), name, tests);
+        runTest(suite, new TwoWayJoinTest(), name, tests);
+        runTest(suite, new ThreeWayJoinTest(), name, tests);
+        runTest(suite, new CreateManyChildNodesTest(), name, tests);
+        runTest(suite, new UpdateManyChildNodesTest(), name, tests);
+        runTest(suite, new TransientManyChildNodesTest(), name, tests);
+        runTest(suite, new CreateUserTest(), name, tests);
+        runTest(suite, new AddGroupMembersTest(), name, tests);
+        runTest(suite, new GroupMemberLookupTest(), name, tests);
+        runTest(suite, new GroupGetMembersTest(), name, tests);
     }
 
     private void runTest(
-            PerformanceTestSuite suite, AbstractTest test, String name) {
-        String selected = System.getProperty("only");
-        if (selected != null && !selected.equals(test.toString())) {
+            PerformanceTestSuite suite, AbstractTest test, String name,
+            Set<String> tests) {
+        if (!tests.isEmpty() && !tests.contains(test.toString())) {
             return;
         }
 

Modified: jackrabbit/trunk/test/performance/parent/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/test/performance/parent/pom.xml?rev=992969&r1=992968&r2=992969&view=diff
==============================================================================
--- jackrabbit/trunk/test/performance/parent/pom.xml (original)
+++ jackrabbit/trunk/test/performance/parent/pom.xml Mon Sep  6 08:21:43 2010
@@ -67,4 +67,27 @@
     </pluginManagement>
   </build>
 
+  <profiles>
+    <profile>
+      <id>profiler</id>
+      <activation>
+        <property>
+          <name>agentlib</name>
+        </property>
+      </activation>
+      <build>
+        <pluginManagement>
+          <plugins>
+            <plugin>
+              <artifactId>maven-surefire-plugin</artifactId>
+              <configuration>
+                <argLine>-agentlib:${agentlib}</argLine>
+              </configuration>
+            </plugin>
+          </plugins>
+        </pluginManagement>
+      </build>
+    </profile>
+  </profiles>
+
 </project>