Test setup: *********** The jackrabbit-core in the sandbox branch contains profiles and a repository-descriptor-overlay directory (in src/test) that enables us to run the automated tests aainst different database backends. This machinery is copied to the trunk. Note that the repository descriptors in the repository-descriptor-overlay directory need some adjustment (the datasources element is not recognized). Furthermore, the workspace-init-test workspace is renamed to wsp-init-test because otherwise the DB identifiers become too long for Oracle. Two GC tests must be marked as known issues because they structurally fail: org.apache.jackrabbit.core.data.GarbageCollectorTest#testGC org.apache.jackrabbit.core.data.GarbageCollectorTest#testCloseSessionWhileRunningGc A small patch must be applied to make the DbFileSystem work with the h2 descriptor overlay (there is no h2.ddl file). The patch for these changes is here: JCR-1456-performance-trunk-test-setup.patch. Do this 5 times for both sandbox branch and trunk: - clean the target dir and the relevant database - mvn integration-test -Puse-descriptor-overlay,{mysql,mssql,oracle,h2} Results: ******** Test environment 1: * MS Windows XP Professional 2002, SP3, Intel Core 2 CPU, 3 GB RAM * Apache Maven 2.2.1 * Java 1.6.0_05 * All but MSSQL DB server on other hosts jackrabbit-core (r828003) mssql 4.43, 4.43, 4.42, 4.46, 4.49 avg 285 s mysql 3.51, 3.47, 3.43, 3.51, 3.51 avg 229 s oracle 4.48, 5.06, 4.53, 4.59, 5.04 avg 298 s h2 3.49, 3.45, 3.45, 3.53, 3.44 avg 227 s jackrabbit-core-JCR1456 (r827995) mssql 4.54, 4.54, 4.57, 4.52, 5.02 avg 296 s + 11 s = + 4 % mysql 4.08, 4.19, 4.07, 4.03, 4.03 avg 248 s + 19 s = + 8 % oracle 5.10, 5.06, 5.03, 5.18, 5.10 avg 309 s + 11 s = + 4 % h2 5.36, 5.47, 5.45, 5.40, 5.37 avg 341 s + 114 s = + 50 % Test environment 2: * Mac OS X 10.5.8, Intel Core 2 Duo, 4GB 667MHz DDR2 SDRAM * Apache Maven 2.2.0 * Java 1.5.0_20 * MySQL and H2 servers on localhost jackrabbit-core (r828674) mysql 3.04, 3.14, 3.09, 3.08, 3.10 avg 189 s h2 3.44, 3.37, 3.33, 3.42, 3.34 avg 218 s jackrabbit-core-JCR1456 (r828674) mysql 3.20, 3.11, 3.18, 3.13, 3.14 avg 195 s + 6 s = + 3 % h2 3.49, 3.41, 3.34, 3.47, 3.43 avg 223 s + 5 s = + 2 % Test errors: ************ During execution of the tests against the MSSQL backend I got the following test errors once in a while (both on the trunk and on the sandbox branch): ------------------------------------------------------------------------------- Test set: org.apache.jackrabbit.core.integration.JCRAPITest ------------------------------------------------------------------------------- Tests run: 1895, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 113.25 sec <<< FAILURE! testSkipTo(org.apache.jackrabbit.test.api.observation.EventJournalTest) Time elapsed: 0.234 sec <<< ERROR! java.lang.StringIndexOutOfBoundsException: String index out of range: -30430 at java.lang.String.checkBounds(String.java:398) at java.lang.String.(String.java:443) at net.sourceforge.jtds.jdbc.ResponseStream.readString(ResponseStream.java:293) at net.sourceforge.jtds.jdbc.ResponseStream.readNonUnicodeString(ResponseStream.java:274) at net.sourceforge.jtds.jdbc.TdsData.readData(TdsData.java:936) at net.sourceforge.jtds.jdbc.TdsCore.tdsRowToken(TdsCore.java:3003) at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2266) at net.sourceforge.jtds.jdbc.TdsCore.getNextRow(TdsCore.java:764) at net.sourceforge.jtds.jdbc.JtdsResultSet.next(JtdsResultSet.java:593) at org.apache.jackrabbit.core.journal.DatabaseRecordIterator.fetchRecord(DatabaseRecordIterator.java:136) at org.apache.jackrabbit.core.journal.DatabaseRecordIterator.hasNext(DatabaseRecordIterator.java:85) at org.apache.jackrabbit.core.observation.EventJournalImpl.refill(EventJournalImpl.java:335) at org.apache.jackrabbit.core.observation.EventJournalImpl.hasNext(EventJournalImpl.java:222) at org.apache.jackrabbit.core.observation.EventJournalImpl.skipTo(EventJournalImpl.java:142) at org.apache.jackrabbit.test.api.observation.EventJournalTest.testSkipTo(EventJournalTest.java:65) ------------------------------------------------------------------------------- Test set: org.apache.jackrabbit.core.integration.JCRAPITest ------------------------------------------------------------------------------- Tests run: 1895, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 109.201 sec <<< FAILURE! testLockExpiration(org.apache.jackrabbit.test.api.lock.OpenScopedLockTest) Time elapsed: 0.359 sec <<< ERROR! java.lang.IllegalArgumentException: timeout value is negative at java.lang.Object.wait(Native Method) at org.apache.jackrabbit.test.api.lock.AbstractLockTest.testLockExpiration(AbstractLockTest.java:273) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at junit.framework.TestCase.runTest(TestCase.java:154) at junit.framework.TestCase.runBare(TestCase.java:127) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:118) at org.apache.jackrabbit.test.AbstractJCRTest.run(AbstractJCRTest.java:456) at junit.framework.TestSuite.runTest(TestSuite.java:208) at junit.framework.TestSuite.run(TestSuite.java:203) at junit.framework.TestSuite.runTest(TestSuite.java:208) at junit.framework.TestSuite.run(TestSuite.java:203) at junit.framework.TestSuite.runTest(TestSuite.java:208) at org.apache.jackrabbit.test.ConcurrentTestSuite.access$001(ConcurrentTestSuite.java:29) at org.apache.jackrabbit.test.ConcurrentTestSuite$2.run(ConcurrentTestSuite.java:67) at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Thread.java:619)