You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by dy...@apache.org on 2007/11/30 15:44:20 UTC
svn commit: r599836 - in
/db/derby/code/trunk/java/testing/org/apache/derbyTesting:
functionTests/tests/jdbcapi/ functionTests/tests/junitTests/compatibility/
junit/
Author: dyre
Date: Fri Nov 30 06:44:18 2007
New Revision: 599836
URL: http://svn.apache.org/viewvc?rev=599836&view=rev
Log:
DERBY-2807: Patch adds BLOB/CLOB testing to the compatibility testing
framework
Added:
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/Compat_BlobClob4BlobTest.java
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/junitTests/compatibility/BLOBCLOB_CompatibilitySuite.java
Modified:
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/junitTests/compatibility/CompatibilitySuite.java
db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/TestConfiguration.java
Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/Compat_BlobClob4BlobTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/Compat_BlobClob4BlobTest.java?rev=599836&view=auto
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/Compat_BlobClob4BlobTest.java (added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/Compat_BlobClob4BlobTest.java Fri Nov 30 06:44:18 2007
@@ -0,0 +1,72 @@
+/*
+ *
+ * Derby - Class Compat_BlobClob4BlobTest
+ *
+ * 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.derbyTesting.functionTests.tests.jdbcapi;
+
+import junit.framework.*;
+
+import org.apache.derbyTesting.junit.TestConfiguration;
+
+/**
+ * Test of JDBC blob and clob
+ * Create a test suite running BlobClob4BlobTest, but in a server-client setting
+ * where the server has already been started.
+ */
+
+public class Compat_BlobClob4BlobTest extends BlobClob4BlobTest {
+
+ /** Creates a new instance of Compat_BlobClob4BlobTest */
+ public Compat_BlobClob4BlobTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Set up the connection to the database.
+ */
+
+ public void setUp() throws Exception { // IS NEVER RUN!
+ super.setUp();
+ }
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+ /*** TESTS ***/
+
+
+ /**
+ * Run the tests of BlobClob4BlobTest in server-client on an already started server.
+ *
+ */
+ public static Test suite() {
+ TestSuite suite = new TestSuite("Compat_BlobClob4BlobTest");
+ /* Embedded is not relevant for a running server....
+ suite.addTest(
+ TestConfiguration.embeddedSuite(BlobClob4BlobTest.class)); */
+ suite.addTest(
+ TestConfiguration.defaultExistingServerSuite(BlobClob4BlobTest.class, false));
+
+ return (Test)suite; // Avoiding CleanDatabaseTestSetup and setLockTimeouts which both use embedded.
+
+
+ }
+
+
+}
Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/junitTests/compatibility/BLOBCLOB_CompatibilitySuite.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/junitTests/compatibility/BLOBCLOB_CompatibilitySuite.java?rev=599836&view=auto
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/junitTests/compatibility/BLOBCLOB_CompatibilitySuite.java (added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/junitTests/compatibility/BLOBCLOB_CompatibilitySuite.java Fri Nov 30 06:44:18 2007
@@ -0,0 +1,143 @@
+/*
+
+ Derby - Class org.apache.derbyTesting.functionTests.tests.compatibility.BLOBCLOB_CompatibilitySuite
+
+ 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.
+
+ */
+/**
+ * <p>
+ * This is the JUnit suite verifying compatibility of Derby clients and
+ * servers across Derby version levels and supported VMs. When you want
+ * to add a new class of tests to this suite, just add the classname to
+ * the accumulator in suite().
+ * </p>
+ *
+ */
+
+package org.apache.derbyTesting.functionTests.tests.junitTests.compatibility;
+
+import junit.framework.*;
+
+import org.apache.derbyTesting.functionTests.tests.jdbcapi.Compat_BlobClob4BlobTest;
+
+public class BLOBCLOB_CompatibilitySuite extends CompatibilitySuite
+{
+
+ /////////////////////////////////////////////////////////////
+ //
+ // JUnit BEHAVIOR
+ //
+ /////////////////////////////////////////////////////////////
+
+ /**
+ * <p>
+ * JUnit boilerplate which adds as test cases all public methods
+ * whose names start with the string "test" in the named classes.
+ * When you want to add a new class of tests, just wire it into
+ * this suite.
+ * </p>
+ */
+ public static Test suite()
+ {
+ TestSuite testSuite = new TestSuite();
+
+ testSuite.addTest(Compat_BlobClob4BlobTest.suite()); // ONLY REAL DIFFERENCE FROM CompatibilitySuite
+
+ return testSuite;
+ }
+
+
+ /////////////////////////////////////////////////////////////
+ //
+ // ENTRY POINT
+ //
+ /////////////////////////////////////////////////////////////
+
+ /**
+ * <p>
+ * Run JDBC compatibility tests using either the specified client or
+ * the client that is visible
+ * on the classpath. If there is more than one client on the classpath,
+ * exits with an error.
+ * </p>
+ *
+ * <ul>
+ * <li>arg[ 0 ] = required name of database to connect to</li>
+ * <li>arg[ 1 ] = optional driver to use. if not specified, we'll look for a
+ * client on the classpath</li>
+ * </ul>
+ */
+ public static void main( String args[] )
+ throws Exception
+ {
+ int exitStatus = FAILURE_EXIT;
+
+ if (
+ parseDebug() &&
+ parseArgs( args ) &&
+ parseVMLevel() &&
+ findClient() &&
+ findServer()
+ )
+ {
+ Test t = suite();
+ println("# BLOBCLOB_CompatibilitySuite.main() will run suite with "
+ + t.countTestCases() + " testcases.");
+
+ TestResult result = junit.textui.TestRunner.run( t );
+
+ exitStatus = result.errorCount() + result.failureCount();
+ }
+
+ Runtime.getRuntime().exit( exitStatus );
+ }
+
+ /////////////////////////////////////////////////////////////
+ //
+ // INNER CLASSES
+ //
+ /////////////////////////////////////////////////////////////
+
+ /**
+ * <p>
+ * This helper class exposes an entry point for creating an empty database.
+ * </p>
+ */
+ public static final class Creator
+ {
+ private static BLOBCLOB_CompatibilitySuite _driver = new BLOBCLOB_CompatibilitySuite();
+
+ /**
+ * <p>
+ * Wait for server to come up, then create the database.
+ * </p>
+ *
+ * <ul>
+ * <li>args[ 0 ] = name of database to create.</li>
+ * </ul>
+ */
+ public static void main( String[] args )
+ throws Exception
+ {
+ String databaseName = args[ 0 ];
+ findClient();
+ _driver.createDB( databaseName );
+ }
+
+ }
+
+}
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/junitTests/compatibility/CompatibilitySuite.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/junitTests/compatibility/CompatibilitySuite.java?rev=599836&r1=599835&r2=599836&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/junitTests/compatibility/CompatibilitySuite.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/junitTests/compatibility/CompatibilitySuite.java Fri Nov 30 06:44:18 2007
@@ -134,7 +134,11 @@
findServer()
)
{
- TestResult result = junit.textui.TestRunner.run( suite() );
+ Test t = suite();
+ println("CompatibilitySuite.main() will run suite with "
+ + t.countTestCases() + " testcases.");
+
+ TestResult result = junit.textui.TestRunner.run( t );
exitStatus = result.errorCount() + result.failureCount();
}
@@ -216,7 +220,7 @@
// We allow for the special case when we're running the embedded client
// off the current compiled class tree rather than off product jars.
//
- private static boolean findClient()
+ static boolean findClient()
throws Exception
{
//
@@ -275,7 +279,7 @@
// Initialize server settings. Assumes that you have called
// findClient().
//
- private static boolean findServer()
+ static boolean findServer()
throws Exception
{
try {
@@ -299,7 +303,7 @@
return true;
}
- private static boolean parseVMLevel()
+ static boolean parseVMLevel()
throws Exception
{
String vmVersion = getVMVersion();
@@ -317,7 +321,7 @@
return true;
}
- private static boolean parseArgs( String args[] )
+ static boolean parseArgs( String args[] )
throws Exception
{
if ( ( args == null ) || (args.length == 0 ) )
@@ -356,7 +360,7 @@
* Get the vm level of the server.
* </p>
*/
- private static void parseServerVMVersion( Connection conn )
+ static void parseServerVMVersion( Connection conn )
throws SQLException
{
dropFunction( conn, SERVER_VERSION_FUNCTION );
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/TestConfiguration.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/TestConfiguration.java?rev=599836&r1=599835&r2=599836&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/TestConfiguration.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/TestConfiguration.java Fri Nov 30 06:44:18 2007
@@ -245,6 +245,30 @@
return (suite);
}
+ /**
+ * Equivalent to "defaultSuite" as defined above, but assumes a server
+ * has already been started.
+ * Does NOT decorate for running in embedded mode.
+ */
+ public static Test defaultExistingServerSuite(Class testClass)
+ {
+ return defaultExistingServerSuite(testClass, true);
+ }
+ public static Test defaultExistingServerSuite(Class testClass, boolean cleanDB)
+ {
+ final TestSuite suite = new TestSuite(suiteName(testClass));
+
+ if (cleanDB)
+ {
+ suite.addTest(new CleanDatabaseTestSetup(clientExistingServerSuite(testClass)));
+ }
+ else
+ {
+ suite.addTest(clientExistingServerSuite(testClass));
+ }
+
+ return (suite);
+ }
/**
* Return a Test suite that contains all the test fixtures
@@ -320,6 +344,18 @@
}
/**
+ * Equivalent to 'clientServerSuite' above, but assumes server is
+ * already running.
+ *
+ */
+ public static Test clientExistingServerSuite(Class testClass)
+ {
+ TestSuite suite = new TestSuite(testClass,
+ suiteName(testClass)+":client");
+ return defaultExistingServerDecorator(suite); // Will not start server and does not stop it when done!.
+ }
+
+ /**
* Return a decorator for the passed in tests that sets the
* configuration for the client to be Derby's JDBC client
* and to start the network server at setUp.
@@ -345,6 +381,28 @@
Test test = new NetworkServerTestSetup(suite, false);
return defaultServerDecorator(test,port);
+ }
+ /**
+ * Decorate a test to use suite's default host and port,
+ * but assuming the server is already running.
+ */
+ public static Test defaultExistingServerDecorator(Test test)
+ {
+ // As defaultServerDecorator but assuming
+ // server is already started.
+ // Need to have client
+ // and not running in J2ME (JSR169).
+ if (!(Derby.hasClient())
+ || JDBC.vmSupportsJSR169())
+ {
+ return new TestSuite("empty: no network server support in JSR169 (or derbyclient.jar missing).");
+ }
+
+ Test r =
+ new ServerSetup(test, DEFAULT_HOSTNAME, DEFAULT_PORT);
+ ((ServerSetup)r).setJDBCClient(JDBCClient.DERBYNETCLIENT);
+
+ return r;
}
/**