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 my...@apache.org on 2008/02/13 08:44:00 UTC

svn commit: r627297 [2/4] - in /db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi: DataSourceTest.java J2EEDataSourceTest.java _Suite.java

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/DataSourceTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/DataSourceTest.java?rev=627297&r1=627296&r2=627297&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/DataSourceTest.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/DataSourceTest.java Tue Feb 12 23:43:59 2008
@@ -22,54 +22,34 @@
 package org.apache.derbyTesting.functionTests.tests.jdbcapi;
 
 import java.io.File;
-import java.io.Serializable;
 import java.security.AccessController;
 import java.sql.CallableStatement;
 import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.ParameterMetaData;
-import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.sql.Statement;
-import java.sql.Savepoint;
+import java.util.HashMap;
 import java.util.Hashtable;
-import java.util.Iterator;
-
-import org.apache.derbyTesting.functionTests.tests.jdbcapi.AssertEventCatcher;
-
-import javax.sql.ConnectionEvent;
-import javax.sql.ConnectionEventListener;
-import javax.sql.ConnectionPoolDataSource;
 import javax.sql.DataSource;
-import javax.sql.PooledConnection;
-import javax.sql.XAConnection;
-import javax.sql.XADataSource;
-import javax.transaction.xa.XAException;
-import javax.transaction.xa.XAResource;
-import javax.transaction.xa.Xid;
 
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
-import org.apache.derby.jdbc.ClientConnectionPoolDataSource;
 import org.apache.derby.jdbc.ClientDataSource;
-import org.apache.derby.jdbc.ClientXADataSource;
-import org.apache.derby.jdbc.EmbeddedConnectionPoolDataSource;
 import org.apache.derby.jdbc.EmbeddedDataSource;
 import org.apache.derby.jdbc.EmbeddedSimpleDataSource;
-import org.apache.derby.jdbc.EmbeddedXADataSource;
 import org.apache.derbyTesting.functionTests.util.SecurityCheck;
 import org.apache.derbyTesting.junit.BaseJDBCTestCase;
 import org.apache.derbyTesting.junit.CleanDatabaseTestSetup;
-import org.apache.derbyTesting.junit.DatabasePropertyTestSetup;
-import org.apache.derbyTesting.junit.J2EEDataSource;
 import org.apache.derbyTesting.junit.JDBC;
+import org.apache.derbyTesting.junit.JDBCClient;
 import org.apache.derbyTesting.junit.JDBCDataSource;
 import org.apache.derbyTesting.junit.TestConfiguration;
 
 /**
- * Test the various embedded DataSource implementations of Derby.
+ * Test the various DataSource implementations of Derby, but not
+ * ConnectionPoolDataSource or XADataSource; those are tested in
+ * J2EEDataSourceTest.
  * 
  * Performs SecurityCheck analysis on the JDBC objects returned.
  * This is because this test returns to the client a number of
@@ -113,20 +93,6 @@
     }
     
     /**
-     * Return a suite of tests that are run with a lower lock timeout.
-     *
-     * @param postfix suite name postfix
-     * @return A suite of tests being run with a lower lock timeout.
-     */
-    private static Test getTimeoutSuite(String postfix) {
-        TestSuite suite = new TestSuite("Lower lock timeout" + postfix);
-        suite.addTest(new DataSourceTest("timeoutTestDerby1144PooledDS"));
-        suite.addTest(new DataSourceTest("timeoutTestDerby1144XADS"));
-        // Reduce the timeout threshold to make the tests run faster.
-        return DatabasePropertyTestSetup.setLockTimeouts(suite, 3, 5);
-    }
-    
-    /**
      * Return a suite of tests that are run with both client and embedded
      * 
      * @param postfix suite name postfix
@@ -134,18 +100,9 @@
      */
     private static Test baseSuite(String postfix) {
         TestSuite suite = new TestSuite("ClientAndEmbedded" + postfix);
-        suite.addTest(new DataSourceTest("testGlobalLocalInterleaf"));
-        suite.addTest(new DataSourceTest("testSetIsolationWithStatement"));
-        suite.addTest(new DataSourceTest("testJira95xads"));
         suite.addTest(new DataSourceTest("testBadConnectionAttributeSyntax"));
         suite.addTest(new DataSourceTest("testDescriptionProperty"));
-        suite.addTest(new DataSourceTest("testConnectionErrorEvent"));
-        suite.addTest(new DataSourceTest("testReadOnlyToWritableTran"));
-        suite.addTest(new DataSourceTest("testAutoCommitOnXAResourceStart"));
         suite.addTest(new DataSourceTest("testAllDataSources"));
-        suite.addTest(new DataSourceTest("testClosedCPDSConnection"));
-        suite.addTest(new DataSourceTest("testClosedXADSConnection"));
-        suite.addTest(new DataSourceTest("testSetSchemaInXAConnection"));
         return suite;
     }
 
@@ -173,76 +130,38 @@
     private static Test getEmbeddedSuite(String postfix) {
         TestSuite suite = new TestSuite("Embedded" + postfix);
         suite.addTest(new DataSourceTest("testDSRequestAuthentication"));
-        // Due to a bug following cannot be run for client - DERBY-3379
-        // To run this fixture with client, add to getClientSuite(),
-        // when DERBY-3379 is fixed, remove from here (and client) and
-        // move to baseSuite.
-        suite.addTest(new DataSourceTest("testPooledReuseOnClose"));
-        // when DERBY-2498 gets fixed, move these two to baseSuite
+        // when DERBY-2498 gets fixed, move this one to baseSuite
         suite.addTest(new DataSourceTest("testJira95ds"));
-        suite.addTest(new DataSourceTest("testJira95pds"));
-        // Following cannot run with client because of DERBY-2533; it hangs
-        // when fixed, this can be moved to baseSuite.
-        suite.addTest(new DataSourceTest("testReuseAcrossGlobalLocal"));
-        suite.addTest(new DataSourceTest("testXAHoldability"));
         return suite;
     }
     
     public static Test suite() {
-        if (JDBC.vmSupportsJSR169())
-        {
-            // test uses unsupported classes like DriverManager, XADataSource,
-            // ConnectionPoolDataSource, ConnectionEvenListenere, as well as
-            // unsupported methods, like Connection.setTypeMap()...
-            TestSuite suite = 
-                new TestSuite("DatasourceTest cannot run with JSR169");
-            return suite;
-        }
-        else
-        {
-            TestSuite suite = new TestSuite("DataSourceTest suite");
-            // Add tests that will run with both embedded
-            suite.addTest(baseSuite(":embedded"));
+        TestSuite suite = new TestSuite("DataSourceTest suite");
+        // Add the tests that only run with embedded
+        suite.addTest(getEmbeddedSuite("embedded"));
+        // Add tests that will run with embedded
+        suite.addTest(baseSuite(":embedded"));
+        if (!JDBC.vmSupportsJSR169()) {
             //  and network server/client
             suite.addTest(TestConfiguration.clientServerDecorator(
                     baseSuite(":client")));
             // Add the tests that only run with client
             suite.addTest(TestConfiguration.clientServerDecorator(
                     getClientSuite()));
-            // Add the tests that only run with embedded
-            suite.addTest(getEmbeddedSuite("embedded"));
-            // Add the tests relying on getting timeouts.
-            suite.addTest(getTimeoutSuite(":embedded"));
-            suite.addTest(TestConfiguration.clientServerDecorator(
-                    getTimeoutSuite(":client")));
-            // wrap all in CleanDatabaseTestSetup that creates all database
-            // objects any fixture might need.
-            // Note that not all fixtures need (all of) these.
-            return new CleanDatabaseTestSetup(suite) {
-                /**
-                 * Create and populate database objects
-                 * 
-                 * @see org.apache.derbyTesting.junit.CleanDatabaseTestSetup#decorateSQL(java.sql.Statement)
-                 */
-                protected void decorateSQL(Statement s) throws SQLException {
-                    s.executeUpdate("create table autocommitxastart(i int)");
-                    s.executeUpdate("insert into autocommitxastart values 1,2,3,4,5");
-                    s.executeUpdate("create schema SCHEMA_Patricio");
-                    s.executeUpdate("create table " +
-                    "SCHEMA_Patricio.Patricio (id VARCHAR(255), value INTEGER)");
-                    s.executeUpdate("create table intTable(i int)");
-                    s.executeUpdate("create table hold_30 " +
-                    "(id int not null primary key, b char(30))");
-                    s.executeUpdate(
-                            "create procedure checkConn2(in dsname varchar(20)) " +
-                            "parameter style java language java modifies SQL DATA " +
-                            "external name " +
-                            "'org.apache.derbyTesting.functionTests.tests.jdbcapi.DataSourceTest." +
-                            getNestedMethodName() +
-                    "'");
-                }
-            };
         }
+        // wrap all in CleanDatabaseTestSetup that creates all database
+        // objects any fixture might need.
+        // Note that not all fixtures need (all of) these.
+        return new CleanDatabaseTestSetup(suite) {
+            /**
+             * Create and populate database objects
+             * 
+             * @see org.apache.derbyTesting.junit.CleanDatabaseTestSetup#decorateSQL(java.sql.Statement)
+             */
+            protected void decorateSQL(Statement s) throws SQLException {
+                s.executeUpdate("create table intTable(i int)");
+            }
+        };
     }
     
     public void tearDown() throws Exception {
@@ -265,583 +184,21 @@
         super.tearDown();
     }
 
-    /* comment out. leaving in, just in case it's ever relevant.
-     * when uncommented, this will run when network server tests are
-     * started, and then reflect the results of the embedded checks.
-    // perform security analysis of the public api for the embedded engine
-    public void testDataSourceAPI() throws SQLException, ClassNotFoundException
-    {
-        SecurityCheck.report();
-    }
-     */
-    
-    /**
-     * Test case for DERBY-3172
-     * When the Derby engine is shutdown or Network Server is brought down, any
-     * api on JDBC Connection object should generate a Connection error event.
-     */
-    public void testConnectionErrorEvent() throws SQLException, Exception
-    {
-        AssertEventCatcher aes12 = new AssertEventCatcher(12);
-        
-        ConnectionPoolDataSource ds = J2EEDataSource.getConnectionPoolDataSource();
-
-        PooledConnection pc = ds.getPooledConnection();
-        //Add a connection event listener to ConnectionPoolDataSource
-        pc.addConnectionEventListener(aes12);
-        Connection conn = pc.getConnection();
-        
-        dropTable(conn, "TAB1");
-
-        //No event should have been generated at this point
-        assertFalse(aes12.didConnectionClosedEventHappen());
-        assertFalse(aes12.didConnectionErrorEventHappen());
-        aes12.resetState();
-        //Shutdown the Derby engine or Network Server depending on what 
-        //mode we are running in.
-        if (usingEmbedded())
-        {
-        	getTestConfiguration().shutdownDatabase();
-        } else
-        {
-        	getTestConfiguration().stopNetworkServer();
-        }
-        //Now try to use various apis on the JDBC Connection object created 
-        //before shutdown and they all should generate connection error event.
-        try {
-            conn.prepareStatement("CREATE TABLE TAB1(COL1 INT NOT NULL)");
-        } catch (SQLException e) {
-            //The first call on JDBC Connection object after Network Server
-            //shutdown will generate a communication error and that's why we
-            //are checking for SQL State 08006 rather than No current connection
-            //SQL State 08003. In embedded mode, we will get SQL State 08003
-        	//meaning No current connection
-            if (usingEmbedded())
-                assertSQLState("08003", e);
-            else
-                assertSQLState("08006", e);
-        }
-        assertFalse(aes12.didConnectionClosedEventHappen());
-        assertTrue(aes12.didConnectionErrorEventHappen());
-        aes12.resetState();
-        try {
-            conn.prepareStatement("CREATE TABLE TAB1(COL1 INT NOT NULL)", 1);
-        } catch (SQLException e) {
-            assertSQLState("08003", e);
-        }
-        assertFalse(aes12.didConnectionClosedEventHappen());
-        assertTrue(aes12.didConnectionErrorEventHappen());
-        aes12.resetState();
-        try {
-        	int[] columnIndexes = {1};
-            conn.prepareStatement("CREATE TABLE TAB1(COL1 INT NOT NULL)", 
-            		columnIndexes);
-        } catch (SQLException e) {
-            assertSQLState("08003", e);
-        }
-        assertFalse(aes12.didConnectionClosedEventHappen());
-        assertTrue(aes12.didConnectionErrorEventHappen());
-        aes12.resetState();
-        try {
-        	String[] columnNames = {"col1"};
-            conn.prepareStatement("CREATE TABLE TAB1(COL1 INT NOT NULL)", 
-            		columnNames);
-        } catch (SQLException e) {
-            assertSQLState("08003", e);
-        }
-        assertFalse(aes12.didConnectionClosedEventHappen());
-        assertTrue(aes12.didConnectionErrorEventHappen());
-        aes12.resetState();
-        try {
-            conn.prepareStatement("CREATE TABLE TAB1(COL1 INT NOT NULL)",
-            		ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
-        } catch (SQLException e) {
-                assertSQLState("08003", e);
-        }
-        assertFalse(aes12.didConnectionClosedEventHappen());
-        assertTrue(aes12.didConnectionErrorEventHappen());
-        aes12.resetState();
-        try {
-            conn.prepareStatement("CREATE TABLE TAB1(COL1 INT NOT NULL)",
-            		ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY,
-            		ResultSet.CLOSE_CURSORS_AT_COMMIT);
-        } catch (SQLException e) {
-                assertSQLState("08003", e);
-        }
-        assertFalse(aes12.didConnectionClosedEventHappen());
-        assertTrue(aes12.didConnectionErrorEventHappen());
-        aes12.resetState();
-        try {
-            conn.createStatement();
-        } catch (SQLException e) {
-            assertSQLState("08003", e);
-        }
-        assertFalse(aes12.didConnectionClosedEventHappen());
-        assertTrue(aes12.didConnectionErrorEventHappen());
-        aes12.resetState();
-        try {
-            conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, 
-            		ResultSet.CONCUR_READ_ONLY,
-            		ResultSet.CLOSE_CURSORS_AT_COMMIT);
-        } catch (SQLException e) {
-                assertSQLState("08003", e);
-        }
-        assertFalse(aes12.didConnectionClosedEventHappen());
-        assertTrue(aes12.didConnectionErrorEventHappen());
-        aes12.resetState();
-        try {
-            conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, 
-            ResultSet.CONCUR_READ_ONLY);
-        } catch (SQLException e) {
-            assertSQLState("08003", e);
-        }
-        assertFalse(aes12.didConnectionClosedEventHappen());
-        assertTrue(aes12.didConnectionErrorEventHappen());
-        aes12.resetState();
-        try {
-            conn.prepareCall("CREATE TABLE TAB1(COL1 INT NOT NULL)",
-            		ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
-        } catch (SQLException e) {
-                assertSQLState("08003", e);
-        }
-        assertFalse(aes12.didConnectionClosedEventHappen());
-        assertTrue(aes12.didConnectionErrorEventHappen());
-        aes12.resetState();
-        try {
-            conn.prepareCall("CREATE TABLE TAB1(COL1 INT NOT NULL)");
-        } catch (SQLException e) {
-                assertSQLState("08003", e);
-        }
-        assertFalse(aes12.didConnectionClosedEventHappen());
-        assertTrue(aes12.didConnectionErrorEventHappen());
-        aes12.resetState();
-        try {
-            conn.prepareCall("CREATE TABLE TAB1(COL1 INT NOT NULL)",
-            		ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY,
-            		ResultSet.CLOSE_CURSORS_AT_COMMIT);
-        } catch (SQLException e) {
-                assertSQLState("08003", e);
-        }
-        assertFalse(aes12.didConnectionClosedEventHappen());
-        assertTrue(aes12.didConnectionErrorEventHappen());
-        aes12.resetState();
-        try {
-            conn.nativeSQL("CREATE TABLE TAB1(COL1 INT NOT NULL)");
-        } catch (SQLException e) {
-                assertSQLState("08003", e);
-        }
-        assertFalse(aes12.didConnectionClosedEventHappen());
-        assertTrue(aes12.didConnectionErrorEventHappen());
-        aes12.resetState();
-        try {
-            conn.getAutoCommit();
-        } catch (SQLException e) {
-                assertSQLState("08003", e);
-        }
-        assertFalse(aes12.didConnectionClosedEventHappen());
-        assertTrue(aes12.didConnectionErrorEventHappen());
-        aes12.resetState();
-        try {
-            conn.setAutoCommit(false);
-        } catch (SQLException e) {
-                assertSQLState("08003", e);
-        }
-        assertFalse(aes12.didConnectionClosedEventHappen());
-        assertTrue(aes12.didConnectionErrorEventHappen());
-        aes12.resetState();
-        try {
-            conn.getHoldability();
-        } catch (SQLException e) {
-                assertSQLState("08003", e);
-        }
-        assertFalse(aes12.didConnectionClosedEventHappen());
-        assertTrue(aes12.didConnectionErrorEventHappen());
-        aes12.resetState();
-        try {
-            conn.setHoldability(1);
-        } catch (SQLException e) {
-                assertSQLState("08003", e);
-        }
-        assertFalse(aes12.didConnectionClosedEventHappen());
-        assertTrue(aes12.didConnectionErrorEventHappen());
-        aes12.resetState();
-        try {
-            conn.commit();
-        } catch (SQLException e) {
-                assertSQLState("08003", e);
-        }
-        assertFalse(aes12.didConnectionClosedEventHappen());
-        assertTrue(aes12.didConnectionErrorEventHappen());
-        aes12.resetState();
-        try {
-            conn.rollback();
-        } catch (SQLException e) {
-                assertSQLState("08003", e);
-        }
-        assertFalse(aes12.didConnectionClosedEventHappen());
-        assertTrue(aes12.didConnectionErrorEventHappen());
-        aes12.resetState();
-        try {
-            conn.setSavepoint();
-        } catch (SQLException e) {
-                assertSQLState("08003", e);
-        }
-        assertFalse(aes12.didConnectionClosedEventHappen());
-        assertTrue(aes12.didConnectionErrorEventHappen());
-        aes12.resetState();
-        try {
-            conn.setSavepoint("savept1");
-        } catch (SQLException e) {
-                assertSQLState("08003", e);
-        }
-        assertFalse(aes12.didConnectionClosedEventHappen());
-        assertTrue(aes12.didConnectionErrorEventHappen());
-        aes12.resetState();
-        try {
-            conn.rollback((Savepoint)null);
-        } catch (SQLException e) {
-                assertSQLState("08003", e);
-        }
-        assertFalse(aes12.didConnectionClosedEventHappen());
-        assertTrue(aes12.didConnectionErrorEventHappen());
-        aes12.resetState();
-        try {
-            conn.releaseSavepoint((Savepoint)null);
-        } catch (SQLException e) {
-                assertSQLState("08003", e);
-        }
-        assertFalse(aes12.didConnectionClosedEventHappen());
-        assertTrue(aes12.didConnectionErrorEventHappen());
-        aes12.resetState();
-        try {
-            conn.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
-        } catch (SQLException e) {
-                assertSQLState("08003", e);
-        }
-        assertFalse(aes12.didConnectionClosedEventHappen());
-        assertTrue(aes12.didConnectionErrorEventHappen());
-        aes12.resetState();
-        try {
-            conn.getTransactionIsolation();
-        } catch (SQLException e) {
-                assertSQLState("08003", e);
-        }
-        assertFalse(aes12.didConnectionClosedEventHappen());
-        assertTrue(aes12.didConnectionErrorEventHappen());
-        aes12.resetState();
-        try {
-            conn.getWarnings();
-        } catch (SQLException e) {
-                assertSQLState("08003", e);
-        }
-        assertFalse(aes12.didConnectionClosedEventHappen());
-        assertTrue(aes12.didConnectionErrorEventHappen());
-        aes12.resetState();
-        try {
-            conn.clearWarnings();
-        } catch (SQLException e) {
-                assertSQLState("08003", e);
-        }
-        assertFalse(aes12.didConnectionClosedEventHappen());
-        assertTrue(aes12.didConnectionErrorEventHappen());
-        aes12.resetState();
-        try {
-            conn.getMetaData();
-        } catch (SQLException e) {
-                assertSQLState("08003", e);
-        }
-        assertFalse(aes12.didConnectionClosedEventHappen());
-        assertTrue(aes12.didConnectionErrorEventHappen());
-        aes12.resetState();
-        try {
-            conn.isReadOnly();
-        } catch (SQLException e) {
-                assertSQLState("08003", e);
-        }
-        assertFalse(aes12.didConnectionClosedEventHappen());
-        assertTrue(aes12.didConnectionErrorEventHappen());
-        aes12.resetState();
-        try {
-            conn.setReadOnly(true);
-        } catch (SQLException e) {
-                assertSQLState("08003", e);
-        }
-        assertFalse(aes12.didConnectionClosedEventHappen());
-        assertTrue(aes12.didConnectionErrorEventHappen());
-        aes12.resetState();
-        try {
-            conn.setCatalog(null);
-        } catch (SQLException e) {
-                assertSQLState("08003", e);
-        }
-        assertFalse(aes12.didConnectionClosedEventHappen());
-        assertTrue(aes12.didConnectionErrorEventHappen());
-        aes12.resetState();
-        try {
-            conn.getCatalog();
-        } catch (SQLException e) {
-                assertSQLState("08003", e);
-        }
-        assertFalse(aes12.didConnectionClosedEventHappen());
-        assertTrue(aes12.didConnectionErrorEventHappen());
-        aes12.resetState();
-        try {
-            conn.getTypeMap();
-        } catch (SQLException e) {
-                assertSQLState("08003", e);
-        }
-        assertFalse(aes12.didConnectionClosedEventHappen());
-        assertTrue(aes12.didConnectionErrorEventHappen());
-        aes12.resetState();
-        try {
-            conn.setTypeMap(null);
-        } catch (SQLException e) {
-                assertSQLState("08003", e);
-        }
-        assertFalse(aes12.didConnectionClosedEventHappen());
-        assertTrue(aes12.didConnectionErrorEventHappen());
-        aes12.resetState();
-        if (usingEmbedded())
-        {
-            Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
-        }else
-        {
-        	getTestConfiguration().startNetworkServer();
-        }
-
-        // Get a new connection to the database
-        conn = getConnection();
-        conn.close();
-    }
-    
-    /**
-     * Test that a PooledConnection can be reused and closed
-     * (separately) during the close event raised by the
-     * closing of its logical connection.
-     * DERBY-2142.
-     * @throws SQLException 
-     *
-     */
-    public void testPooledReuseOnClose() throws SQLException
-    {
-    	// PooledConnection from a ConnectionPoolDataSource
-    	ConnectionPoolDataSource cpds =
-    		J2EEDataSource.getConnectionPoolDataSource();
-    	subtestPooledReuseOnClose(cpds.getPooledConnection());
-        subtestPooledCloseOnClose(cpds.getPooledConnection());
-        // DERBY-3401 - removing a callback during a close causes problems.
-        //subtestPooledRemoveListenerOnClose(cpds.getPooledConnection());
-
-    	// PooledConnection from an XDataSource
-    	XADataSource xads = J2EEDataSource.getXADataSource();
-    	subtestPooledReuseOnClose(xads.getXAConnection());
-        subtestPooledCloseOnClose(xads.getXAConnection());
-        // DERBY-3401 - removing a callback during a close causes problems.
-        //subtestPooledRemoveListenerOnClose(xads.getXAConnection());
-    }
-    
-    /**
-     * Tests that a pooled connection can successfully be reused
-     * (a new connection obtained from it) during the processing
-     * of its close event by its listener.
-     * Sections 11.2 & 12.5 of JDBC 4 specification indicate that the
-     * connection can be returned to the pool when the
-     * ConnectionEventListener.connectionClosed() is called.
-     */
-    private void subtestPooledReuseOnClose(final PooledConnection pc) throws SQLException
-    {
-    	final Connection[] newConn = new Connection[1];
-    	pc.addConnectionEventListener(new ConnectionEventListener() {
-
-    		/**
-    		 * Mimic a pool handler that returns the PooledConnection
-    		 * to the pool and then reallocates it to a new logical connection.
-    		 */
-			public void connectionClosed(ConnectionEvent event) {
-				PooledConnection pce = (PooledConnection) event.getSource();
-				assertSame(pc, pce);
-				try {
-					// open a new logical connection and pass
-					// back to the fixture.
-					newConn[0] = pce.getConnection();
-				} catch (SQLException e) {
-					// Need to catch the exception here because
-					// we cannot throw an exception through
-					// the api method.
-					fail(e.getMessage());
-				}
-			}
-
-			public void connectionErrorOccurred(ConnectionEvent event) {
-			}
-    		
-    	});
-    	
-    	// Open a connection then close it to trigger the
-    	// fetching of a new connection in the callback.
-    	Connection c1 = pc.getConnection();
-    	c1.close();
-    	
-    	// Fetch the connection created in the close callback
-    	Connection c2 = newConn[0];
-    	assertNotNull(c2);
-    	
-    	// Ensure the connection is useable, this hit a NPE before DERBY-2142
-    	// was fixed (for embedded).
-    	c2.createStatement().close();
-    	
-    	pc.close();
-    }
-    
-    /**
-     * Tests that a pooled connection can successfully be closed
-     * during the processing of its close event by its listener.
-     */
-    private void subtestPooledCloseOnClose(final PooledConnection pc) throws SQLException
-    {
-        pc.addConnectionEventListener(new ConnectionEventListener() {
-
-            /**
-             * Mimic a pool handler that closes the PooledConnection
-             * (say it no longer needs it, pool size being reduced)
-             */
-            public void connectionClosed(ConnectionEvent event) {
-                PooledConnection pce = (PooledConnection) event.getSource();
-                assertSame(pc, pce);
-                try {
-                    pce.close();
-                } catch (SQLException e) {
-                    // Need to catch the exception here because
-                    // we cannot throw an exception through
-                    // the api method.
-                    fail(e.getMessage());
-                }
-            }
-
-            public void connectionErrorOccurred(ConnectionEvent event) {
-            }
-            
-        });
-        
-        // Open and close a connection to invoke the logic above
-        // through the callback
-        pc.getConnection().close();
-                
-        // The callback closed the actual pooled connection
-        // so subsequent requests to get a logical connection
-        // should fail.
-        try {
-            pc.getConnection();
-            fail("PooledConnection should be closed");
-        } catch (SQLException sqle) {
-            assertSQLState("08003", sqle);
-        }
-    }
-    
-    /**
-     * Tests that a listener of a pooled connection can successfully
-     * remove itself during the processing of its close event by its listener.
-     */
-    private void subtestPooledRemoveListenerOnClose(final PooledConnection pc) throws SQLException
-    {
-        
-        final int[] count1 = new int[1];
-        pc.addConnectionEventListener(new ConnectionEventListener() {
-
-            /**
-             * Mimic a pool handler that removes the listener during
-             * a logical close.
-             */
-            public void connectionClosed(ConnectionEvent event) {
-                PooledConnection pce = (PooledConnection) event.getSource();
-                assertSame(pc, pce);
-                count1[0]++;
-                pce.removeConnectionEventListener(this);
-            }
-
-            public void connectionErrorOccurred(ConnectionEvent event) {
-            }
-            
-        });
-        
-        // and have another listener to ensure removing one leaves
-        // the other working and intact.
-        final int[] count2 = new int[1];
-        pc.addConnectionEventListener(new ConnectionEventListener() {
-
-            /**
-             * Mimic a pool handler that closes the PooledConnection
-             * (say it no longer needs it, pool size being reduced)
-             */
-            public void connectionClosed(ConnectionEvent event) {             
-                PooledConnection pce = (PooledConnection) event.getSource();
-                assertSame(pc, pce);
-                count2[0]++;
-            }
-
-            public void connectionErrorOccurred(ConnectionEvent event) {
-            }
-            
-        });        
-        // no callback yet
-        assertEquals(0, count1[0]);
-        assertEquals(0, count2[0]);
-        
-        // Open and close a connection to invoke the logic above
-        // through the callback
-        pc.getConnection().close();
-        
-        // one callback for each
-        assertEquals(1, count1[0]);
-        assertEquals(1, count2[0]);
-              
-        // the callback (count1) that was removed is not called on the
-        // second close but the second callback (count2) is called.
-        pc.getConnection().close();
-        assertEquals(1, count1[0]);
-        assertEquals(2, count2[0]);
-        
-        pc.close();
-    }
-
-    
+    // the J2EEDataSourceTest version of this includes testing for
+    // setTypeMap, which is supported for both EmbeddedDataSource and
+    // ClientDataSource, but not for JSR169/EmbeddedSimpleDataSource
     public void testAllDataSources() throws SQLException, Exception
     {
-        Connection dmc = getConnection();
-        CallableStatement cs = dmc.prepareCall("call checkConn2(?)");
-        cs.setString(1,"Nested");
-        try {
-            cs.execute();
-        } catch (SQLException sqle) {
-            assertSQLState("40XC0", sqle);
-        }
-        cs.setString(1,"Nested2");
-        cs.execute();
+        //Connection dmc = getConnection();
         
-        String EmptyMapValue=null;
-        // Note: currently, not supported
-        String NullMapValue=null;
-        String MapMapValue=null;
-        if (usingEmbedded())
-        {
-            EmptyMapValue="OK"; NullMapValue="XJ081"; MapMapValue="0A000";
-        }
-        else if (usingDerbyNetClient())
-        {
-            EmptyMapValue="0A000"; NullMapValue="0A000"; MapMapValue="0A000";
-        }
         Object[] expectedValues = {
             new Integer(ResultSet.HOLD_CURSORS_OVER_COMMIT), "XJ010",
-            new Integer(2), new Boolean(true), new Boolean(false), 
-            EmptyMapValue, NullMapValue, MapMapValue};
+            new Integer(2), new Boolean(true), new Boolean(false)};
 
-        assertConnectionOK(expectedValues, "DriverManager ", dmc);
-    
         if (usingEmbedded())
             assertTenConnectionsUnique();
 
         DataSource dscs = JDBCDataSource.getDataSource();
-        JDBCDataSource.setBeanProperty(dscs, "createDatabase", "false");
         if (usingEmbedded()) 
                 assertToString(dscs);
 
@@ -856,1017 +213,11 @@
                 new EmbeddedSimpleDataSource();
             realdssimple.setDatabaseName(dbName);
             ds = realdssimple;
-            dssimple = (DataSource)realdssimple;
-            assertConnectionOK(
-                expectedValues, "SimpleDataSource", ds.getConnection());
-        }
-            
-        ConnectionPoolDataSource dsp = 
-            J2EEDataSource.getConnectionPoolDataSource();      
-        
-        if (usingEmbedded()) 
-            assertToString(dsp);
-
-        PooledConnection pc = dsp.getPooledConnection();
-        // checks currently only implemented for embedded 
-        if (usingEmbedded())
-        {
-            SecurityCheck.assertSourceSecurity(
-                pc, "javax.sql.PooledConnection");
-        }
-        AssertEventCatcher aes1 = new AssertEventCatcher(1);
-        pc.addConnectionEventListener(aes1);
-
-        // DERBY-2531
-        // with Network Server / DerbyNetClient, the assertConnectionOK check
-        // returns a different connection object...
-        assertConnectionOK(
-            expectedValues, "ConnectionPoolDataSource", pc.getConnection());
-        //Check if got connection closed event but not connection error event
-        assertTrue(aes1.didConnectionClosedEventHappen());
-        assertFalse(aes1.didConnectionErrorEventHappen());
-        aes1.resetState();
-        assertConnectionOK(
-            expectedValues, "ConnectionPoolDataSource", pc.getConnection());
-        //Check if got connection closed event but not connection error event
-        assertTrue(aes1.didConnectionClosedEventHappen());
-        assertFalse(aes1.didConnectionErrorEventHappen());
-        aes1.resetState();
-
-        XADataSource dsx = J2EEDataSource.getXADataSource();
-        JDBCDataSource.setBeanProperty(dsx, "createDatabase", "false");
-
-        if (usingEmbedded())
-            assertToString(dsx);
-
-        // shutdown db and check all's still ok thereafter
-        TestConfiguration.getCurrent().shutdownDatabase();
-
-        dmc = getConnection();
-        cs = dmc.prepareCall("call checkConn2(?)");
-        // checks currently only implemented for embedded 
-        if (usingEmbedded())
-        {
-            SecurityCheck.assertSourceSecurity(
-                cs, "java.sql.CallableStatement");
-        }
-        cs.setString(1,"Nested");
-        try {
-            cs.execute();
-        } catch (SQLException sqle) {
-            assertSQLState("40XC0", sqle);
-        }
-        cs.setString(1, "Nested2");
-        cs.execute();
-
-        XAConnection xac = dsx.getXAConnection();
-        // checks currently only implemented for embedded 
-        if (usingEmbedded())
-        {
-            SecurityCheck.assertSourceSecurity(xac, "javax.sql.XAConnection");
-        }
-        AssertEventCatcher aes3 = new AssertEventCatcher(3);
-        xac.addConnectionEventListener(aes3);
-        assertConnectionOK(
-            expectedValues, "XADataSource", xac.getConnection());
-        //Check if got connection closed event but not connection error event
-        assertTrue(aes3.didConnectionClosedEventHappen());
-        assertFalse(aes3.didConnectionErrorEventHappen());
-        aes3.resetState();
-                       
-        pc = dsp.getPooledConnection();
-        AssertEventCatcher aes2 = new AssertEventCatcher(2);
-        pc.addConnectionEventListener(aes2);
-        assertConnectionOK(
-            expectedValues, "ConnectionPoolDataSource", pc.getConnection());
-        //Check if got connection closed event but not connection error event
-        assertTrue(aes2.didConnectionClosedEventHappen());
-        assertFalse(aes2.didConnectionErrorEventHappen());
-        aes2.resetState();
-
-        // test "local" XAConnections
-        xac = dsx.getXAConnection();
-        AssertEventCatcher aes4 = new AssertEventCatcher(4);
-        xac.addConnectionEventListener(aes4);
-        assertConnectionOK(
-            expectedValues, "XADataSource", xac.getConnection());
-        //Check if got connection closed event but not connection error event
-        assertTrue(aes4.didConnectionClosedEventHappen());
-        assertFalse(aes4.didConnectionErrorEventHappen());
-        aes4.resetState();
-        assertConnectionOK(
-            expectedValues, "XADataSource", xac.getConnection());
-        //Check if got connection closed event but not connection error event
-        assertTrue(aes4.didConnectionClosedEventHappen());
-        assertFalse(aes4.didConnectionErrorEventHappen());
-        aes4.resetState();
-        xac.close();
-
-        // test "global" XAConnections
-        xac = dsx.getXAConnection();
-        AssertEventCatcher aes5 = new AssertEventCatcher(5);
-        xac.addConnectionEventListener(aes5);
-        XAResource xar = xac.getXAResource();
-        // checks currently only implemented for embedded 
-        if (usingEmbedded())
-        {
-           SecurityCheck.assertSourceSecurity(
-                xar, "javax.transaction.xa.XAResource");
-        }
-        Xid xid = new cdsXid(1, (byte) 35, (byte) 47);
-        xar.start(xid, XAResource.TMNOFLAGS);
-        Connection xacc = xac.getConnection();
-        xacc.close();
-        expectedValues[0] = new Integer(ResultSet.CLOSE_CURSORS_AT_COMMIT);
-        if (usingEmbedded())
-            expectedValues[1] = "XJ058";
-        expectedValues[3] = new Boolean(false);
-        assertConnectionOK(
-            expectedValues, "Global XADataSource", xac.getConnection());
-        //Check if got connection closed event but not connection error event
-        assertTrue(aes5.didConnectionClosedEventHappen());
-        assertFalse(aes5.didConnectionErrorEventHappen());
-        aes5.resetState();
-        assertConnectionOK(
-            expectedValues, "Global XADataSource", xac.getConnection());
-        //Check if got connection closed event but not connection error event
-        assertTrue(aes5.didConnectionClosedEventHappen());
-        assertFalse(aes5.didConnectionErrorEventHappen());
-        aes5.resetState();
-
-        xar.end(xid, XAResource.TMSUCCESS);
-
-        expectedValues[0] = new Integer(ResultSet.HOLD_CURSORS_OVER_COMMIT);
-        expectedValues[3] = new Boolean(true);
-        assertConnectionOK(expectedValues, 
-            "Switch to local XADataSource", xac.getConnection());
-        //Check if got connection closed event but not connection error event
-        assertTrue(aes5.didConnectionClosedEventHappen());
-        assertFalse(aes5.didConnectionErrorEventHappen());
-        aes5.resetState();
-        assertConnectionOK(expectedValues, 
-            "Switch to local XADataSource", xac.getConnection());
-        //Check if got connection closed event but not connection error event
-        assertTrue(aes5.didConnectionClosedEventHappen());
-        assertFalse(aes5.didConnectionErrorEventHappen());
-        aes5.resetState();
-
-        Connection backtoGlobal = xac.getConnection();
-
-        xar.start(xid, XAResource.TMJOIN);
-        expectedValues[0] = new Integer(ResultSet.CLOSE_CURSORS_AT_COMMIT);
-        expectedValues[3] = new Boolean(false);
-        assertConnectionOK(expectedValues, 
-            "Switch to global XADataSource", backtoGlobal);
-        //Check if got connection closed event but not connection error event
-        assertTrue(aes5.didConnectionClosedEventHappen());
-        assertFalse(aes5.didConnectionErrorEventHappen());
-        aes5.resetState();
-        assertConnectionOK(expectedValues, 
-            "Switch to global XADataSource", xac.getConnection());
-        //Check if got connection closed event but not connection error event
-        assertTrue(aes5.didConnectionClosedEventHappen());
-        assertFalse(aes5.didConnectionErrorEventHappen());
-        aes5.resetState();
-        xar.end(xid, XAResource.TMSUCCESS);
-        xar.commit(xid, true);
-
-        xac.close();
-    }
-    
-    public void testClosedCPDSConnection() throws SQLException, Exception {
-        // verify that outstanding updates from a closed connection, obtained
-        // from a ConnectionPoolDataSource, are not committed, but rolled back.
-        ConnectionPoolDataSource dsp = 
-            J2EEDataSource.getConnectionPoolDataSource();       
-        PooledConnection pc = dsp.getPooledConnection();
-        Connection c1 = pc.getConnection();
-        Statement s = c1.createStatement();
-        // start by deleting all rows from intTable
-        s.executeUpdate("delete from intTable");
-        c1.setAutoCommit(false);
-
-        // this update should get rolled back later
-        s.executeUpdate("insert into intTable values(1)");
-        // this should automatically close the original connection
-        c1 = pc.getConnection();
-
-        ResultSet rs = 
-            c1.createStatement().executeQuery("select count(*) from intTable");
-        rs.next();
-        assertEquals(0, rs.getInt(1));
-        c1.close();
-        
-        // check connection objects are closed once connection is closed
-        try {
-            rs.next();
-            fail("ResultSet is open for a closed connection obtained from PooledConnection");
-        } catch (SQLException sqle) {
-            // 08003 - No current connection; XCL16 - ResultSet not open
-            if (usingEmbedded())
-                assertSQLState("08003", sqle);
-            else if (usingDerbyNetClient())
-                assertSQLState("XCL16", sqle);
-        }
-
-        try {
-            s.executeUpdate("update intTable set i = 1");
-            fail("Statement is open for a closed connection " +
-                "obtained from PooledConnection");
-        } catch (SQLException sqle) {
-            assertSQLState("08003", sqle);
-        }
-
-        pc.close();
-        pc = null;
-        PoolReset("ConnectionPoolDataSource", dsp.getPooledConnection());
-        s.close();
-        rs.close();
-        c1.close();
-    }
-
-    public void testClosedXADSConnection() throws SQLException, Exception {
-        // verify that outstanding updates from a closed connection, obtained
-        // from an XADataSource, are not committed, but rolled back.
-        XADataSource dsx = J2EEDataSource.getXADataSource();
-        XAConnection xac = dsx.getXAConnection();
-        Connection c1 = xac.getConnection();
-        Statement s = c1.createStatement();
-
-        c1.setAutoCommit(false);
-
-        // this update should be rolled back
-        s.executeUpdate("insert into intTable values(2)");
-        
-        c1 = xac.getConnection();
-
-        ResultSet rs = c1.createStatement().executeQuery(
-           "select count(*) from intTable");
-        rs.next();
-
-        assertEquals(0, rs.getInt(1));
-
-        rs.close();
-        c1.close();
-        xac.close();
-        xac = null;
-
-        PoolReset("XADataSource", dsx.getXAConnection());
-    }
-
-    public void testGlobalLocalInterleaf() throws SQLException, XAException {    
-        // now some explicit tests for how connection state behaves
-        // when switching between global transactions and local
-        // and setting connection state.
-        // some of this may be tested elsewhere too.
-
-        XADataSource dsx = J2EEDataSource.getXADataSource();
-        XAConnection xac = dsx.getXAConnection();
-        AssertEventCatcher aes6 = new AssertEventCatcher(6);
-        xac.addConnectionEventListener(aes6);
-        XAResource xar = xac.getXAResource();
-        Xid xid = new cdsXid(1, (byte) 93, (byte) 103);
-
-        // series 1 - Single connection object
-        Connection cs1 = xac.getConnection();
-        // initial local
-        assertConnectionState(
-            ResultSet.HOLD_CURSORS_OVER_COMMIT, 
-            Connection.TRANSACTION_READ_COMMITTED,
-            true, false, cs1);
-        xar.start(xid, XAResource.TMNOFLAGS);
-        // initial X1
-        assertConnectionState(
-            ResultSet.CLOSE_CURSORS_AT_COMMIT, 
-            Connection.TRANSACTION_READ_COMMITTED,
-            false, false, cs1);
-        cs1.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);
-        cs1.setReadOnly(true);
-        setHoldability(cs1, false); // close cursors
-        // modified X1
-        boolean ReadOnly = false;
-        // see DERBY-911, ReadOnly state different for Embedded/DerbyNetClient
-        if (usingEmbedded())
-            ReadOnly = true;
-        assertConnectionState(
-            ResultSet.CLOSE_CURSORS_AT_COMMIT, 
-            Connection.TRANSACTION_READ_UNCOMMITTED,
-            false, ReadOnly, cs1);
-        xar.end(xid, XAResource.TMSUCCESS);
-        // the underlying local transaction/connection must pick up the
-        // state of the Connection handle cs1
-        // modified local:
-        assertConnectionState(
-            ResultSet.CLOSE_CURSORS_AT_COMMIT, 
-            Connection.TRANSACTION_READ_UNCOMMITTED,
-            true, ReadOnly, cs1);
-        
-        cs1.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
-        cs1.setReadOnly(false);
-        setHoldability(cs1, false); // close cursors
-
-        // reset local
-        assertConnectionState(
-            ResultSet.CLOSE_CURSORS_AT_COMMIT, 
-            Connection.TRANSACTION_READ_COMMITTED,
-            true, false, cs1);
-
-        // now re-join the transaction, should pick up the read-only
-        // and isolation level from the transaction,
-        // holdability remains that of this handle.
-        xar.start(xid, XAResource.TMJOIN);
-        // re-join X1
-        assertConnectionState(
-            ResultSet.CLOSE_CURSORS_AT_COMMIT, 
-            Connection.TRANSACTION_READ_UNCOMMITTED,
-            false, ReadOnly, cs1);
-        xar.end(xid, XAResource.TMSUCCESS);
-
-        // back to local - should be the same as the reset local
-        assertConnectionState(
-            ResultSet.CLOSE_CURSORS_AT_COMMIT, 
-            Connection.TRANSACTION_READ_COMMITTED,
-            true, false, cs1);
-        
-        // test suspend/resume
-        // now re-join the transaction (X1) for the second time, should pick
-        // up the read-only and isolation level from the transaction,
-        // holdability remains that of this handle.
-        xar.start(xid, XAResource.TMJOIN);
-        assertConnectionState(
-            ResultSet.CLOSE_CURSORS_AT_COMMIT, 
-            Connection.TRANSACTION_READ_UNCOMMITTED,
-            false, ReadOnly, cs1);
-        
-        xar.end(xid, XAResource.TMSUSPEND);
-        // local after suspend
-        assertConnectionState(
-            ResultSet.CLOSE_CURSORS_AT_COMMIT, 
-            Connection.TRANSACTION_READ_COMMITTED,
-            true, false, cs1);
-        
-        xar.start(xid, XAResource.TMRESUME);
-        // resume X1
-        assertConnectionState(
-            ResultSet.CLOSE_CURSORS_AT_COMMIT, 
-            Connection.TRANSACTION_READ_UNCOMMITTED,
-            false, ReadOnly, cs1);
-        
-        xar.end(xid, XAResource.TMSUCCESS);
-        // back to local (second time)
-        assertConnectionState(
-            ResultSet.CLOSE_CURSORS_AT_COMMIT, 
-            Connection.TRANSACTION_READ_COMMITTED,
-            true, false, cs1);
-        
-        cs1.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);
-        cs1.setReadOnly(true);
-        setHoldability(cs1, true); // hold
-        //Confirm - no connection closed event & connection error event
-        assertFalse(aes6.didConnectionClosedEventHappen());
-        assertFalse(aes6.didConnectionErrorEventHappen());
-        aes6.resetState();
-        cs1.close();
-        //Check if got connection closed event but not connection error event
-        assertTrue(aes6.didConnectionClosedEventHappen());
-        assertFalse(aes6.didConnectionErrorEventHappen());
-        aes6.resetState();
-        
-        cs1 = xac.getConnection();
-        // new handle - local
-        assertConnectionState(
-            ResultSet.HOLD_CURSORS_OVER_COMMIT, 
-            Connection.TRANSACTION_READ_COMMITTED,
-            true, false, cs1);
-        cs1.close();
-        //Check if got connection closed event but not connection error event
-        assertTrue(aes6.didConnectionClosedEventHappen());
-        assertFalse(aes6.didConnectionErrorEventHappen());
-        aes6.resetState();
-        
-        xar.start(xid, XAResource.TMJOIN);
-        cs1 = xac.getConnection();
-        // re-join with new handle X1
-        assertConnectionState(
-            ResultSet.CLOSE_CURSORS_AT_COMMIT, 
-            Connection.TRANSACTION_READ_UNCOMMITTED,
-            false, ReadOnly, cs1);
-        cs1.close();
-        xar.end(xid, XAResource.TMSUCCESS);
-        //Check if got connection closed event but not connection error event
-        assertTrue(aes6.didConnectionClosedEventHappen());
-        assertFalse(aes6.didConnectionErrorEventHappen());
-        aes6.resetState();
-
-        // now get a connection (attached to a local)
-        // attach to the global and commit it.
-        // state should be that of the local after the commit.
-        cs1 = xac.getConnection();
-        cs1.setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ);
-        // pre-X1 commit - local
-        assertConnectionState(
-            ResultSet.HOLD_CURSORS_OVER_COMMIT, 
-            Connection.TRANSACTION_REPEATABLE_READ,
-            true, false, cs1);
-        xar.start(xid, XAResource.TMJOIN);
-        // pre-X1 commit - X1
-        assertConnectionState(
-            ResultSet.CLOSE_CURSORS_AT_COMMIT, 
-            Connection.TRANSACTION_READ_UNCOMMITTED,
-            false, ReadOnly, cs1);
-        xar.end(xid, XAResource.TMSUCCESS);
-        // post-X1 end - local
-        assertConnectionState(
-            ResultSet.HOLD_CURSORS_OVER_COMMIT, 
-            Connection.TRANSACTION_REPEATABLE_READ,
-            true, false, cs1);
-        xar.commit(xid, true);
-        // post-X1 commit - local
-        assertConnectionState(
-            ResultSet.HOLD_CURSORS_OVER_COMMIT, 
-            Connection.TRANSACTION_REPEATABLE_READ,
-            true, false, cs1);
-        //Confirm - no connection closed event & connection error event
-        assertFalse(aes6.didConnectionClosedEventHappen());
-        assertFalse(aes6.didConnectionErrorEventHappen());
-        aes6.resetState();
-        cs1.close();
-        //Check if got connection closed event but not connection error event
-        assertTrue(aes6.didConnectionClosedEventHappen());
-        assertFalse(aes6.didConnectionErrorEventHappen());
-        aes6.resetState();
-    }
-    
-    // really part of testGlobalLocalInterLeaf:
-    /**
-     * @throws SQLException
-     * @throws XAException
-     */
-    public void testSetIsolationWithStatement() 
-    throws SQLException, XAException {
-        // DERBY-421 Setting isolation level with SQL was not getting 
-        // handled correctly 
-        // Some more isolation testing using SQL and JDBC api
-        XADataSource dsx = J2EEDataSource.getXADataSource();
-        XAConnection xac = dsx.getXAConnection();
-        AssertEventCatcher aes6 = new AssertEventCatcher(6);
-        xac.addConnectionEventListener(aes6);
-        XAResource xar = xac.getXAResource();
-        Connection conn = xac.getConnection();
-        Statement s = conn.createStatement();
-        // initial local
-        assertConnectionState(
-            ResultSet.HOLD_CURSORS_OVER_COMMIT, 
-            Connection.TRANSACTION_READ_COMMITTED,
-            true, false, conn);
-
-        // Issue setTransactionIsolation in local transaction
-        conn.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);
-        // setTransactionIsolation in local
-        assertConnectionState(
-            ResultSet.HOLD_CURSORS_OVER_COMMIT, 
-            Connection.TRANSACTION_READ_UNCOMMITTED,
-            true, false, conn);
-
-        Xid xid;
-        //Issue SQL to change isolation in local transaction
-        s.executeUpdate("set current isolation = RR");
-        assertConnectionState(ResultSet.HOLD_CURSORS_OVER_COMMIT, 
-            Connection.TRANSACTION_SERIALIZABLE,
-            true, false, conn);
-
-        xid = new cdsXid(1, (byte) 35, (byte) 47);
-        xar.start(xid, XAResource.TMNOFLAGS);
-        // 1st global (new)
-        assertConnectionState(ResultSet.CLOSE_CURSORS_AT_COMMIT,
-            Connection.TRANSACTION_SERIALIZABLE,
-            false, false, conn);
-        xar.end(xid, XAResource.TMSUCCESS);
-
-        // local
-        assertConnectionState(ResultSet.HOLD_CURSORS_OVER_COMMIT,
-            Connection.TRANSACTION_SERIALIZABLE,
-            true, false, conn);
-        //Issue SQL to change isolation in local transaction
-        s.executeUpdate("set current isolation = RS");
-        assertConnectionState(ResultSet.HOLD_CURSORS_OVER_COMMIT, 
-            Connection.TRANSACTION_REPEATABLE_READ,
-            true, false, conn);
-
-        // DERBY-1325 - Isolation level of local connection does not get reset after ending 
-        // a global transaction that was joined/resumed if the isolation level was changed 
-        // using SQL 
-        xar.start(xid, XAResource.TMJOIN);
-        // 1st global(existing)
-        assertConnectionState(ResultSet.CLOSE_CURSORS_AT_COMMIT, 
-            Connection.TRANSACTION_SERIALIZABLE,
-            false, false, conn);
-        xar.end(xid, XAResource.TMSUCCESS);
-        // local
-        assertConnectionState(ResultSet.HOLD_CURSORS_OVER_COMMIT, 
-            Connection.TRANSACTION_REPEATABLE_READ,
-            true, false, conn);
-        // DERBY-1325 end test 
-
-        Xid xid2 = new cdsXid(1, (byte) 93, (byte) 103);
-        xar.start(xid2, XAResource.TMNOFLAGS);
-        // 2nd global (new)
-        assertConnectionState(ResultSet.CLOSE_CURSORS_AT_COMMIT, 
-            Connection.TRANSACTION_REPEATABLE_READ,
-            false, false, conn);
-        xar.end(xid2, XAResource.TMSUCCESS);
-
-        xar.start(xid, XAResource.TMJOIN);
-        // 1st global (existing)
-        assertConnectionState(ResultSet.CLOSE_CURSORS_AT_COMMIT, 
-            Connection.TRANSACTION_SERIALIZABLE,
-            false, false, conn);
-        xar.end(xid, XAResource.TMSUCCESS);
-
-        //local 
-        assertConnectionState(ResultSet.HOLD_CURSORS_OVER_COMMIT, 
-            Connection.TRANSACTION_REPEATABLE_READ,
-            true, false, conn);
-
-        xar.start(xid, XAResource.TMJOIN);
-        
-        // 1st global (existing)
-        assertConnectionState(ResultSet.CLOSE_CURSORS_AT_COMMIT, 
-            Connection.TRANSACTION_SERIALIZABLE,
-            false, false, conn);
-        // Issue SQL to change isolation in 1st global transaction
-        s.executeUpdate("set current isolation = UR");
-        assertConnectionState(ResultSet.CLOSE_CURSORS_AT_COMMIT, 
-            Connection.TRANSACTION_READ_UNCOMMITTED,
-            false, false, conn);
-        xar.end(xid, XAResource.TMSUCCESS);
-
-        // local
-        assertConnectionState(ResultSet.HOLD_CURSORS_OVER_COMMIT, 
-            Connection.TRANSACTION_READ_UNCOMMITTED,
-            true, false, conn);
-
-        xar.start(xid2, XAResource.TMJOIN);
-        // 2nd global (existing)
-        assertConnectionState(ResultSet.CLOSE_CURSORS_AT_COMMIT, 
-            Connection.TRANSACTION_REPEATABLE_READ,
-            false, false, conn);
-        xar.end(xid2, XAResource.TMSUCCESS);
-        xar.rollback(xid2);
-        // (After 2nd global rollback ) local
-        assertConnectionState(ResultSet.HOLD_CURSORS_OVER_COMMIT, 
-            Connection.TRANSACTION_READ_UNCOMMITTED,
-            true, false, conn);
-
-        xar.rollback(xid);
-        // (After 1st global rollback) local
-        assertConnectionState(ResultSet.HOLD_CURSORS_OVER_COMMIT, 
-            Connection.TRANSACTION_READ_UNCOMMITTED,
-            true, false, conn);
-        //Confirm - no connection closed event & connection error event
-        assertFalse(aes6.didConnectionClosedEventHappen());
-        assertFalse(aes6.didConnectionErrorEventHappen());
-        aes6.resetState();
-    }
-
-    // This test includes some short-hand descriptions of the test cases
-    // left in for reference to the original non-junit test
-    public void testReuseAcrossGlobalLocal() throws SQLException, XAException {
-
-        // DERBY-2533 -
-        // network server cannot run this test - it hits a protocol error
-        // on tearDown. Embedded requires a database shutdown
-        if (usingDerbyNetClient())
-            return;
-        
-        int[] onetwothree = {1,2,3};
-        int[] three = {3};
-        int[] pspc = {1, 4}; // expected parameter count for prepared statements
-        int[] cspc = {2, 12, 12}; // for callable statements
-        
-        // statics for testReuseAcrossGlobalLocal
-        int[] StatementExpectedValues = {
-            ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY,
-            ResultSet.FETCH_REVERSE, 444, 713, 19, 
-            ResultSet.HOLD_CURSORS_OVER_COMMIT};
-            //ResultSet.CLOSE_CURSORS_AT_COMMIT};
-        int[] PreparedStatementExpectedValues = { 
-            ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY,
-            ResultSet.FETCH_REVERSE, 888, 317, 91,
-            ResultSet.HOLD_CURSORS_OVER_COMMIT};
-        int[] CallableStatementExpectedValues = { 
-            ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY,
-            ResultSet.FETCH_REVERSE, 999, 137, 85,
-            ResultSet.HOLD_CURSORS_OVER_COMMIT};
-
-        XADataSource dsx = J2EEDataSource.getXADataSource();
-        XAConnection xac = dsx.getXAConnection();
-        AssertEventCatcher aes6 = new AssertEventCatcher(6);
-        xac.addConnectionEventListener(aes6);
-        XAResource xar = xac.getXAResource();
-        Xid xid = new cdsXid(1, (byte) 103, (byte) 119);
-
-        // now check re-use of *Statement objects across local/global 
-        // connections.
-        Connection cs1 = xac.getConnection();
-
-        // ensure read locks stay around until end-of transaction
-        cs1.setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ);
-        cs1.setAutoCommit(false);
-        assertLocks(null, cs1);
-
-        Statement sru1 = cs1.createStatement();
-        sru1.setCursorName("SN1");
-        sru1.executeUpdate("insert into intTable values 1,2,3");
-        Statement sruBatch = cs1.createStatement();
-        sruBatch.setCursorName("sruBatch");
-        Statement sruState = createFloatStatementForStateChecking(
-            StatementExpectedValues, cs1);
-        PreparedStatement psruState = createFloatStatementForStateChecking(
-            new int[] {1, 4}, PreparedStatementExpectedValues, cs1, 
-            "select i from intTable where i = ?");
-        CallableStatement csruState = createFloatCallForStateChecking(
-            new int[] {2, 12, 12}, CallableStatementExpectedValues, cs1, 
-            "CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(?,?)");
-        PreparedStatement psParams = 
-            cs1.prepareStatement("select * from intTable where i > ?");
-        psParams.setCursorName("params");
-        psParams.setInt(1, 2);
-        // Params-local-1
-        resultSetQuery("params", three, psParams.executeQuery());
-
-        sruBatch.addBatch("insert into intTable values 4");
-        // sru1-local-1
-        queryOnStatement("SN1", onetwothree, cs1, sru1);
-        cs1.commit(); // need to commit to switch to an global connection;
-
-        // simple case - underlying connection is re-used for global.
-        xar.start(xid, XAResource.TMNOFLAGS); 
-        // Expecting downgrade because global transaction sru1-global-2 is 
-        // using a statement with holdability true
-        // sru1-global-2
-        queryOnStatement("SN1", onetwothree, cs1, sru1);
-        sruBatch.addBatch("insert into intTable values 5");
-        Statement sru2 = cs1.createStatement();
-        sru2.setCursorName("OAK2");
-        //sru2-global-3
-        queryOnStatement("OAK2", onetwothree, cs1, sru2);
-        // Expecting downgrade because global transaction sru1-global-4 is
-        // using a statement with holdability true
-        // sru1-global-4
-        queryOnStatement("SN1", onetwothree, cs1, sru1);
-        // Global statement
-        StatementExpectedValues[6] = ResultSet.CLOSE_CURSORS_AT_COMMIT;
-        PreparedStatementExpectedValues[6] = ResultSet.CLOSE_CURSORS_AT_COMMIT;
-        CallableStatementExpectedValues[6] = ResultSet.CLOSE_CURSORS_AT_COMMIT;
-        assertStatementState(null, StatementExpectedValues ,sruState);
-        // Global PreparedStatement
-        assertStatementState(pspc, PreparedStatementExpectedValues, psruState);
-        // Global CallableStatement
-        assertStatementState(cspc, CallableStatementExpectedValues, csruState);
-        // Params-global-1
-        resultSetQuery("params", three, psParams.executeQuery());
-
-        xar.end(xid, XAResource.TMSUCCESS);
-        // now a new underlying connection is created
-        // sru1-local-5
-        queryOnStatement("SN1", onetwothree, cs1, sru1);
-        // sru2-local-6
-        queryOnStatement("OAK2", onetwothree, cs1, sru2);
-        sruBatch.addBatch("insert into intTable values 6,7");
-        Statement sru3 = cs1.createStatement();
-        sru3.setCursorName("SF3");
-        // sru3-local-7
-        queryOnStatement("SF3", onetwothree, cs1, sru3);
-        // Two transactions should hold locks (global and the current XA);
-        // LOCAL
-        StatementExpectedValues[6] = ResultSet.HOLD_CURSORS_OVER_COMMIT;
-        PreparedStatementExpectedValues[6] = ResultSet.HOLD_CURSORS_OVER_COMMIT;
-        CallableStatementExpectedValues[6] = ResultSet.HOLD_CURSORS_OVER_COMMIT;
-        assertStatementState(null, StatementExpectedValues, sruState); 
-        assertStatementState(pspc, PreparedStatementExpectedValues, psruState);
-        assertStatementState(cspc, CallableStatementExpectedValues, csruState);
-        // Params-local-2
-        resultSetQuery("params", three, psParams.executeQuery());
-        assertLocks(new int[] {14,14}, cs1);
-        cs1.commit();
-        //Confirm - no connection closed event & connection error event
-        assertFalse(aes6.didConnectionClosedEventHappen());
-        assertFalse(aes6.didConnectionErrorEventHappen());
-        aes6.resetState();
-
-        // attach the XA transaction to another connection and see what happens
-        XAConnection xac2 = dsx.getXAConnection();
-        AssertEventCatcher aes5 = new AssertEventCatcher(5);
-        xac2.addConnectionEventListener(aes5);
-        XAResource xar2 = xac2.getXAResource();
-
-        xar2.start(xid, XAResource.TMJOIN);
-        Connection cs2 = xac2.getConnection();
-
-        // these statements were generated by cs1 and thus are still
-        // in a local connection.
-        // sru1-local-8
-        queryOnStatement("SN1", onetwothree, cs1, sru1);
-        // sru2-local-9
-        queryOnStatement("OAK2", onetwothree, cs1, sru2);
-        // sru3-local-10
-        queryOnStatement("SF3", onetwothree, cs1, sru3);
-        sruBatch.addBatch("insert into intTable values 8");
-        // LOCAL 2
-        assertStatementState(null, StatementExpectedValues, sruState);
-        assertStatementState(pspc, PreparedStatementExpectedValues, psruState);
-        assertStatementState(cspc, CallableStatementExpectedValues, csruState);
-
-        assertLocks(new int[] {14, 12}, cs1);
-
-        int[] updateCounts = sruBatch.executeBatch();
-        int[] expectedUpdateCounts = {1, 1, 2, 1};
-        // sruBatch update counts: 
-        for (int i = 0; i < updateCounts.length; i++) {
-            assertEquals(expectedUpdateCounts[i], updateCounts[i]);
-        }
-        // sruBatch
-        queryOnStatement(
-            "sruBatch", new int[] {1,2,3,4,5,6,7,8}, cs1, sruBatch);
-
-        xar2.end(xid, XAResource.TMSUCCESS);
-        //Confirm - no connection closed event & connection error event
-        assertFalse(aes5.didConnectionClosedEventHappen());
-        assertFalse(aes5.didConnectionErrorEventHappen());
-        aes5.resetState();
-        xac2.close();
-
-        // allow close on already closed XAConnection
-        xac2.close();
-        xac2.addConnectionEventListener(null);
-        xac2.removeConnectionEventListener(null);
-
-        // test methods against a closed XAConnection and its resource
-        try {
-            xac2.getXAResource();
-            // DERBY-2532
-            // Network Server does not think this is worth an exception.
-            if (usingEmbedded())
-                fail("expected SQLException on " +
-                    "closed XAConnection.getXAResource");
-        } catch (SQLException sqle) {
-            assertSQLState("08003", sqle);
-        }
-        try {
-            xac2.getConnection();
-            fail ("expected SQLException on XAConnection.getConnection");
-        } catch (SQLException sqle) {
-            assertSQLState("08003", sqle);
-        }
-        try {
-            xar2.start(xid, XAResource.TMJOIN);
-            fail ("expected XAException on XAResource.TMJOIN");
-        } catch (XAException xae) {
-            assertXAException("XAResource.start", xae);
-        }
-        try {
-            xar2.end(xid, XAResource.TMJOIN);
-            fail ("expected XAException on XAResource.TMJOIN");
-        } catch (XAException xae) {
-            assertXAException("XAResource.end", xae);
-        }
-        try {
-            xar2.commit(xid, true);
-            fail ("expected XAException on XAResource.commit");
-        } catch (XAException xae) {
-            assertXAException("XAResource.commit", xae);
-        }
-        try {
-            xar2.prepare(xid);
-            fail ("expected XAException on XAResource.prepare");
-        } catch (XAException xae) {
-            assertXAException("XAResource.prepare", xae);
-        }
-        try {
-            xar2.recover(0);
-            fail ("expected XAException on XAResource.recover");
-        } catch (XAException xae) {
-            assertXAException("XAResource.recover", xae);
-        }
-        try {
-            xar2.prepare(xid);
-            fail ("expected XAException on XAResource.prepare");
-        } catch (XAException xae) {
-            assertXAException("XAResource.prepare", xae);
-        }
-        try {
-            xar2.isSameRM(xar2);
-            fail ("expected XAException on XAResource.isSameRM");
-        } catch (XAException xae) {
-            assertXAException("XAResource.isSameRM", xae);
-        }
-        
-        // close everything
-        cs1.rollback();
-        sruState.close();
-        psruState.close();
-        csruState.close();
-        psParams.close();
-        sruBatch.close();
-        sru1.close();
-        sru2.close();
-        sru3.close();
-        cs1.close();
-        cs2.close();
-        xac.removeConnectionEventListener(null);
-        xac.close();
-        xac2.close();
-        
-        // but, still not enough.
-        // what with all the switching between global and local transactions
-        // we still have a lock open on intTable, which will interfere with
-        // our tearDown efforts. Bounce the database.
-        TestConfiguration.getCurrent().shutdownDatabase();
-    }
-    
-    public void testSetSchemaInXAConnection() throws SQLException {
-        // tests that set schema works correctly in an XA connection.
-
-        XADataSource dsx = J2EEDataSource.getXADataSource();
-        XAConnection xac3 = dsx.getXAConnection();
-        Connection conn3 = xac3.getConnection();
-        Statement st3 = conn3.createStatement();
-        st3.execute("SET SCHEMA SCHEMA_Patricio");
-        st3.close();
-
-        PreparedStatement ps3 = 
-            conn3.prepareStatement("INSERT INTO Patricio VALUES (?, ?)");
-        ps3.setString(1, "Patricio");
-        ps3.setInt(2, 3);
-        ps3.executeUpdate();
-
-        assertEquals(1, ps3.getUpdateCount());
-        ps3.close();
-        conn3.close();
-        xac3.close();
-    }
-    
-    // test that an xastart in auto commit mode commits the existing work.
-    // test fix of a bug ('beetle 5178') wherein XAresource.start() when 
-    // auto-commit is true did not implictly commit any transaction
-    // Also tests DERBY-1025, same description, but for client.
-    public void testAutoCommitOnXAResourceStart() throws SQLException, XAException {
-
-        XADataSource dsx = J2EEDataSource.getXADataSource();
-        XAConnection xac4 = dsx.getXAConnection();
-        Xid xid4a= null;
-
-        // We get an XAID_DUP error from networkserver when attempting
-        // the XAResource.start below if we use the same xid.
-        // Possibly because we're in the same jvm.
-        // When the test is run with clientserverSuite, rather than default,
-        // this wasn't needed, so just create a different id for client
-        if (usingEmbedded())
-            xid4a = new cdsXid(4, (byte) 23, (byte) 76);
-        else if (usingDerbyNetClient())
-            xid4a = new cdsXid(5, (byte) 23, (byte) 76);
-            
-        Connection conn4 = xac4.getConnection();
-        assertTrue(conn4.getAutoCommit());
-
-        Statement s4 = conn4.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.CLOSE_CURSORS_AT_COMMIT);
-        ResultSet rs4 = s4.executeQuery("select i from autocommitxastart");
-        rs4.next();
-        assertEquals(1, rs4.getInt(1));
-        rs4.next();
-        assertEquals(2, rs4.getInt(1));
-
-        // XAResource().start should commit the transaction
-        xac4.getXAResource().start(xid4a, XAResource.TMNOFLAGS);
-        xac4.getXAResource().end(xid4a, XAResource.TMSUCCESS);
-
-        try {
-            rs4.next();
-            fail ("expected an exception indicating resultset is closed.");
-        } catch (SQLException sqle) {
-            // Embedded gets 08003. No current connection (DERBY-2620)        	
-        	if (usingDerbyNetClient())
-        		assertSQLState("XCL16",sqle);
-        }
-
-        conn4.setAutoCommit(false);
-        assertFalse(conn4.getAutoCommit());
-
-        rs4 = s4.executeQuery("select i from autocommitxastart");
-        rs4.next();
-        assertEquals(1, rs4.getInt(1));
-        rs4.next();
-        assertEquals(2, rs4.getInt(1));
-        
-         // Get a new xid to begin another transaction. 
-        if (usingEmbedded())
-            xid4a = new cdsXid(4, (byte) 93, (byte) 103);
-        else if (usingDerbyNetClient())
-            xid4a = new cdsXid(5, (byte) 93, (byte) 103);
-
-        try {
-            xac4.getXAResource().start(xid4a, XAResource.TMNOFLAGS);
-        } catch (XAException xae) {
-            if (usingEmbedded())
-                assertNull(xae.getMessage());
-            else if (usingDerbyNetClient())
-            {
-                // This should give XAER_OUTSIDE exception because
-                // the resource manager is busy in the local transaction
-                assertTrue(xae.getMessage().indexOf("XAER_OUTSIDE") >=0 );
-            }
-            assertEquals(-9, xae.errorCode);
-        }
-        
-        rs4.next();
-        assertEquals(3, rs4.getInt(1));
-        rs4.close();
-
-        conn4.rollback();
-        conn4.close();
-        xac4.close();
-    }
-
-    public void testReadOnlyToWritableTran() throws SQLException, Exception
-    {
-        // This fixture will run twice, once with embedded, once with client,
-        // and insert 2 rows in addition to the 5 rows inserted during setup. 
-        // The fixture tests a commit, so before running, try to remove row 
-        // 6 and 7 in case this is the second run of the fixture.
-        Statement s = createStatement();
-        s.executeUpdate("delete from autocommitxastart where i = 6");
-        s.executeUpdate("delete from autocommitxastart where i = 7");
-        
-        // TESTING READ_ONLY TRANSACTION FOLLOWED BY WRITABLE TRANSACTION
-        // Test following sequence of steps
-        // 1)start a read-only global transaction 
-        // 2)finish that read-only transaction
-        // 3)start another global transaction 
-
-        XADataSource dsx = J2EEDataSource.getXADataSource();
-        XAConnection xac5 = dsx.getXAConnection();
-        Xid xid5a = new cdsXid(5, (byte) 119, (byte) 129);
-        Connection conn5 = xac5.getConnection();
-        Statement sru5a = conn5.createStatement();
-        XAResource xar = xac5.getXAResource();
-        xar.start(xid5a, XAResource.TMNOFLAGS);
-        conn5.setReadOnly(true);
-
-        // Read-Only XA transaction;
-        // holdability: (hold, or close cursors over commit) , 
-        // transaction isolation: read-committed, 
-        // auto-commit false, read-only true (with embedded)
-        if (usingEmbedded()) 
-        {
-            assertConnectionState(
-                ResultSet.CLOSE_CURSORS_AT_COMMIT, 
-                Connection.TRANSACTION_READ_COMMITTED,
-                false, true, conn5);
-        }
-        // Note: the original test had no comments about this difference
-        //       between Embedded and DerbyNetClient, this has apparently
-        //       been accepted behavior.
-        else if (usingDerbyNetClient())
-        {
-            assertConnectionState(
-                ResultSet.CLOSE_CURSORS_AT_COMMIT, 
-                Connection.TRANSACTION_READ_COMMITTED,
-                false, false, conn5);
+            dssimple = (DataSource)realdssimple;
+            assertConnectionOK(
+                expectedValues, "SimpleDataSource", ds.getConnection());
         }
-        
-        ResultSet rs5 = sru5a.executeQuery(
-            "select count(*) from autocommitxastart");
-        rs5.next();
-        assertEquals(5, rs5.getInt(1));
-        rs5.close();
-        xar.end(xid5a, XAResource.TMSUCCESS);
-        xar.commit(xid5a, true);
-        conn5.close();
-        
-        //now start a new transaction
-        conn5 = xac5.getConnection();
-        sru5a = conn5.createStatement();
-        xar.start(xid5a, XAResource.TMNOFLAGS);
-        
-        // Writeable XA transaction
-        // holdability: (hold, or close cursors over commit) , 
-        // transaction isolation: read-committed, 
-        // auto-commit false, read-only false
-        assertConnectionState(
-                ResultSet.CLOSE_CURSORS_AT_COMMIT, 
-                Connection.TRANSACTION_READ_COMMITTED,
-                false, false, conn5);
-        sru5a.executeUpdate("insert into autocommitxastart values 6,7");
-        rs5 = sru5a.executeQuery("select count(*) from autocommitxastart");
-        rs5.next();
-        assertEquals(7, rs5.getInt(1));
-        xar.end(xid5a, XAResource.TMSUCCESS);
-        xar.commit(xid5a, true);
-        conn5.close();
-        xac5.close();
-        sru5a.close();
-    }
+    }            
     
     // test jira-derby 95 - a NullPointerException was returned when passing
     // an incorrect database name, should now give error:
@@ -1893,42 +244,8 @@
         }
     } 
 
-    // test jira-derby 95 - a NullPointerException was returned when passing
-    // an incorrect database name, should now give error XCY00   
-    // with ConnectionPoolDataSource
-    public void testJira95pds() throws SQLException {
-        try {
-            ConnectionPoolDataSource pds = J2EEDataSource.getConnectionPoolDataSource();
-            JDBCDataSource.setBeanProperty(pds, "databaseName", "jdbc:derby:boo");
-            pds.getPooledConnection();
-            fail ("expected an SQLException!");
-        } catch (SQLException sqle) {
-            // DERBY-2498 - when fixed, remove if
-            if (usingEmbedded())
-                assertSQLState("XCY00", sqle);
-        } catch (Exception e) {
-            // DERBY-2498 - when fixed, remove if
-            if (usingEmbedded())
-                fail ("unexpected exception: " + e.toString());
-        }
-    }
-    
-    // test jira-derby 95 - a NullPointerException was returned when passing
-    // an incorrect database name, should now give error XCY00   
-    // with XADataSource
-    public void testJira95xads() throws SQLException {
-        try {
-            XADataSource dxs = J2EEDataSource.getXADataSource();
-            JDBCDataSource.setBeanProperty(dxs, "databaseName", "jdbc:derby:boo");
-            dxs.getXAConnection().getConnection();
-            fail ("expected an SQLException!");
-        } catch (SQLException sqle) {
-            assertSQLState("XCY00", sqle);
-        } catch (Exception e) {
-            fail ("unexpected exception: " + e.toString());
-        }
-    }
-    
+    // this fixture has a counterpart for Pooled and XA DataSources in
+    // J2EEDataSourceTest
     public void testBadConnectionAttributeSyntax() throws SQLException {
         
         // DataSource - bad connattr syntax
@@ -1943,31 +260,13 @@
             else if (usingDerbyNetClient())
                 assertSQLState("XJ212", e);
         } 
-
-        // ConnectionPoolDataSource - bad connatr syntax
-        ConnectionPoolDataSource cpds = J2EEDataSource.getConnectionPoolDataSource();
-        JDBCDataSource.setBeanProperty(cpds, "ConnectionAttributes", "bad");
-        try {
-            cpds.getPooledConnection();
-            fail ("should have seen an error");
-        } catch (SQLException e) {
-            assertSQLState("XJ028", e);
-        } 
-
-        // XADataSource - bad connattr syntax");
-        XADataSource xads = J2EEDataSource.getXADataSource();
-        JDBCDataSource.setBeanProperty(xads, "ConnectionAttributes", "bad");
-        try {
-            xads.getXAConnection();
-            fail ("should have seen an error");
-        } catch (SQLException e) {
-            assertSQLState("XJ028", e);
-        } 
     } // End testBadConnectionAttributeSyntax
         
     /**
      * Check that database name set using setConnectionAttributes is not used
      * by ClientDataSource. This method tests DERBY-1130.
+     * this fixture has a counterpart for Pooled and XA DataSources in 
+     * J2EEDataSourceTest
      * 
      * @throws SQLException
      */
@@ -2002,74 +301,26 @@
         ds.setConnectionAttributes(null);
         ds.setDatabaseName(null);
 
-        // now with ConnectionPoolDataSource
-        ClientConnectionPoolDataSource cpds = 
-            new ClientConnectionPoolDataSource();
-        // ConnectionPoolDataSource - EMPTY
-        dsConnectionRequests(new String[]  
-            {"08001","08001","08001","08001",
-             "08001","08001","08001","08001","08001"}, 
-            (ConnectionPoolDataSource)cpds);
-
-        // ConnectionPoolDataSource 
-        // - connectionAttributes=databaseName=<valid dbname>
-        cpds.setConnectionAttributes("databaseName=" + dbName);
-        dsConnectionRequests(new String[]  
-            {"08001","08001","08001","08001",
-             "08001","08001","08001","08001","08001"},
-            (ConnectionPoolDataSource)cpds);
-        cpds.setConnectionAttributes(null);
-
-        // Test that database name specified in connection attributes is 
-        // not used
-        // ConnectionPoolDataSource - databaseName=wombat and 
-        // connectionAttributes=databaseName=kangaroo
-        cpds.setConnectionAttributes("databaseName=kangaroo");
-        cpds.setDatabaseName(dbName);
-        dsConnectionRequests(new String[]  
-            {"OK","08001","OK","OK","08001","08001","OK","OK","OK"},
-            (ConnectionPoolDataSource)cpds);
-        cpds.setConnectionAttributes(null);
-        cpds.setDatabaseName(null);
-
-        // now with XADataSource
-        ClientXADataSource xads = new ClientXADataSource();
-        // XADataSource - EMPTY
-        dsConnectionRequests(new String[]  
-            {"08001","08001","08001","08001",
-             "08001","08001","08001","08001","08001"}, 
-            (XADataSource) xads);
-
-        // XADataSource - connectionAttributes=databaseName=<valid dbname>
-        xads.setConnectionAttributes("databaseName=wombat");
-        dsConnectionRequests(new String[]  
-            {"08001","08001","08001","08001",
-             "08001","08001","08001","08001","08001"},
-            (XADataSource) xads);
-        xads.setConnectionAttributes(null);
-
-        // Test that database name specified in connection attributes is not used
-        // XADataSource - databaseName=wombat and 
-        // connectionAttributes=databaseName=kangaroo
-        xads.setConnectionAttributes("databaseName=kangaroo");
-        xads.setDatabaseName("wombat");
-        dsConnectionRequests(new String[]  
-            {"OK","08001","OK","OK","08001","08001","OK","OK","OK"},
-            (XADataSource) xads);
-        xads.setConnectionAttributes(null);
-        xads.setDatabaseName(null);
     } // End testClientDSConnectionAttributes
             
     // Following test is similar to testClientDSConnectionAttributes, but
     // for embedded datasources.
-    // This subtest does not run for network server, it uses
-    // setAttributesAsPassword, which isn't supported for client datasources.
+    // This fixture has a counterpart for Pooled and XA DataSources in
+    // J2EEDataSourceTest. In that test, the corresponding fixture
+    // also includes testing for setAttributesAsPassword.
+    // Note that in this simple shape, there is no authentication done
+    // but the fixture name is kept the same for reference to the J2EE one.
     public void testDSRequestAuthentication() throws SQLException {
 
-        if (usingDerbyNetClient())
-            return;
-        
-        EmbeddedDataSource ds = new EmbeddedDataSource();
+        // Create an empty datasource of the type befitting the jvm/client/server
+        JDBCClient dsclient = getTestConfiguration().getJDBCClient();
+        String dsName = dsclient.getDataSourceClassName();
+        DataSource ds = null;
+        try {
+            ds = (javax.sql.DataSource) Class.forName(dsName).newInstance();
+        } catch (Exception e) {
+            fail("unable to complete test because unable to create new instance of datasource");
+        }
 
         // DataSource - EMPTY
         dsConnectionRequests(new String[] {  
@@ -2077,154 +328,13 @@
              "XJ004","XJ004","XJ004","XJ004","XJ004"}, ds);
  
         // DataSource - connectionAttributes=databaseName=wombat");
-        ds.setConnectionAttributes("databaseName=" + dbName);
+        JDBCDataSource.setBeanProperty(ds, "connectionAttributes", "databaseName=" + dbName);
         dsConnectionRequests(new String[] {  
             "XJ004","XJ004","XJ004","XJ004",
             "XJ004","XJ004","XJ004","XJ004","XJ004"}, ds);
-        ds.setConnectionAttributes(null);
-
-        // DataSource - attributesAsPassword=true");
-        ds.setAttributesAsPassword(true);
-        dsConnectionRequests(new String[] {  
-            "XJ004","XJ004","XJ004","XJ028",
-            "XJ028","XJ004","XJ004","XJ004","XJ004"}, ds);
-        ds.setAttributesAsPassword(false);
-
-        // DataSource - attributesAsPassword=true, 
-        // connectionAttributes=databaseName=kangaroo");
-        ds.setAttributesAsPassword(true);
-        ds.setConnectionAttributes("databaseName=kangaroo");
-        dsConnectionRequests(new String[] {  
-            "XJ004","XJ004","XJ004","XJ028",
-            "XJ028","XJ004","XJ004","XJ004","XJ004"}, ds);
-        ds.setAttributesAsPassword(false);
-        ds.setConnectionAttributes(null);
-
-        // Enable Authentication;
-
-        setDatabaseProperty("derby.user.fred", "wilma");
-        setDatabaseProperty("derby.user.APP", "APP");
-        setDatabaseProperty("derby.authentication.provider", "BUILTIN");
-        setDatabaseProperty("derby.connection.requireAuthentication", "true");
-        
-        ds.setShutdownDatabase("shutdown");
-        try {
-            ds.getConnection();
-        } catch (SQLException sqle) {
-            assertSQLState("XJ015", sqle);
-        }
-
-        ds.setDatabaseName(null);
-        ds.setShutdownDatabase(null);
-
-        // "AUTHENTICATION NOW ENABLED");
-
-        // DataSource - attributesAsPassword=true
-        ds.setAttributesAsPassword(true);
-        dsConnectionRequests(new String[] {  
-            "XJ004","XJ004","XJ004","XJ028",
-            "XJ028","XJ004","XJ004","XJ004","XJ004"}, ds);
-        ds.setAttributesAsPassword(false);
-
-        // ensure the DS property password is not treated as a set of 
-        // attributes.
-        // DataSource - attributesAsPassword=true, user=fred, 
-        //     password=databaseName=wombat;password=wilma
-        ds.setAttributesAsPassword(true);
-        ds.setUser("fred");
-        ds.setPassword("databaseName=" + dbName + ";password=wilma");
-        dsConnectionRequests(new String[] {  
-            "XJ004","XJ004","XJ004","XJ028",
-            "XJ028","XJ004","XJ004","XJ004","XJ004"}, ds);
-        ds.setAttributesAsPassword(false);
-        ds.setUser(null);
-        ds.setPassword(null);
+        JDBCDataSource.clearStringBeanProperty(ds, "connectionAttributes");
         ds = null;
 
-        // now with ConnectionPoolDataSource
-        EmbeddedConnectionPoolDataSource cpds = new EmbeddedConnectionPoolDataSource();
-        // ConnectionPoolDataSource - EMPTY
-        dsConnectionRequests(new String[] {  
-            "XJ004","XJ004","XJ004","XJ004",
-            "XJ004","XJ004","XJ004","XJ004","XJ004"},
-            (ConnectionPoolDataSource)cpds);
-
-        // ConnectionPoolDataSource - 
-        // connectionAttributes=databaseName=wombat
-        cpds.setConnectionAttributes("databaseName=" + dbName);
-        dsConnectionRequests(new String[] {  
-            "XJ004","XJ004","XJ004","XJ004",
-            "XJ004","XJ004","XJ004","XJ004","XJ004"},
-            (ConnectionPoolDataSource)cpds);
-        cpds.setConnectionAttributes(null);
-
-        // ConnectionPoolDataSource - attributesAsPassword=true
-        cpds.setAttributesAsPassword(true);
-        dsConnectionRequests(new String[] {  
-            "XJ004","XJ004","XJ004","XJ028",
-            "XJ028","XJ004","XJ004","XJ004","XJ004"},
-            (ConnectionPoolDataSource)cpds);
-        cpds.setAttributesAsPassword(false);
-        
-        // ensure the DS property password is not treated as a set of
-        // attributes.
-        // ConnectionPoolDataSource - attributesAsPassword=true, 
-        //     user=fred, password=databaseName=wombat;password=wilma");
-        cpds.setAttributesAsPassword(true);
-        cpds.setUser("fred");
-        cpds.setPassword("databaseName=" + dbName + ";password=wilma");
-        dsConnectionRequests(new String[] {  
-            "XJ004","XJ004","XJ004","XJ028",
-            "XJ028","XJ004","XJ004","XJ004","XJ004"},
-            (ConnectionPoolDataSource)cpds);
-        cpds.setAttributesAsPassword(false);
-        cpds.setUser(null);
-        cpds.setPassword(null);
-        cpds = null;
-
-        // now with XADataSource
-        EmbeddedXADataSource xads = new EmbeddedXADataSource();
-        // XADataSource - EMPTY
-        dsConnectionRequests(new String[] {  
-            "08006","08006","08006","08006",
-            "08006","08006","08006","08006","08006"},
-            (XADataSource) xads);
-
-        // XADataSource - databaseName=wombat
-        xads.setDatabaseName(dbName);
-        dsConnectionRequests(new String[] {  
-            "08004","08004","08004","OK",
-            "08004","08004","08004","08004","08004"},
-            (XADataSource) xads);
-        xads.setDatabaseName(null);
-
-        // XADataSource - connectionAttributes=databaseName=wombat");
-        xads.setConnectionAttributes("databaseName=" + dbName);
-        dsConnectionRequests(new String[] {  
-            "08006","08006","08006","08006",
-            "08006","08006","08006","08006","08006"},
-            (XADataSource) xads);
-        xads.setConnectionAttributes(null);
-
-        // XADataSource - attributesAsPassword=true
-        xads.setAttributesAsPassword(true);
-        dsConnectionRequests(new String[] {  
-            "08006","08006","08006","08006",
-            "08006","08006","08006","08006","08006"},
-            (XADataSource) xads);
-        xads.setAttributesAsPassword(false);
-
-        // XADataSource - databaseName=wombat, attributesAsPassword=true
-        xads.setDatabaseName(dbName);
-        xads.setAttributesAsPassword(true);
-        dsConnectionRequests(new String[] {  
-            "08004","08004","08004","XJ028",
-            "XJ028","08004","08004","OK","08004"},
-            (XADataSource) xads);
-        xads.setAttributesAsPassword(false);
-        xads.setDatabaseName(null);
-        
-        setDatabaseProperty("derby.connection.requireAuthentication", "false");
         TestConfiguration.getCurrent().shutdownDatabase();
     }
     
@@ -2234,6 +344,9 @@
      * tracefile= was used in datasourcepermissions_net, but that's 
      * incorrect syntax. Note that we're not checking the contents of
      * the tracefile.
+     * 
+     * This fixture has a counterpart for Pooled and XA DataSources in
+     * J2EEDataSourceTest
      *
      * Note also that this test cannot run against a remote server.
      *  
@@ -2267,35 +380,6 @@

[... 1319 lines stripped ...]