[jboss-svn-commits] JBL Code SVN: r6644 - labs/jbosstm/trunk/ArjunaJTA/jdbc/tests/classes/com/hp/mwtests/ts/jdbc/basic
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Oct 6 09:06:13 EDT 2006
Author: jhalliday
Date: 2006-10-06 09:06:11 -0400 (Fri, 06 Oct 2006)
New Revision: 6644
Modified:
labs/jbosstm/trunk/ArjunaJTA/jdbc/tests/classes/com/hp/mwtests/ts/jdbc/basic/JDBC3Test.java
Log:
Added test method to exercise the JDBC3.0 specific functions.
Modified: labs/jbosstm/trunk/ArjunaJTA/jdbc/tests/classes/com/hp/mwtests/ts/jdbc/basic/JDBC3Test.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/jdbc/tests/classes/com/hp/mwtests/ts/jdbc/basic/JDBC3Test.java 2006-10-06 11:46:11 UTC (rev 6643)
+++ labs/jbosstm/trunk/ArjunaJTA/jdbc/tests/classes/com/hp/mwtests/ts/jdbc/basic/JDBC3Test.java 2006-10-06 13:06:11 UTC (rev 6644)
@@ -24,20 +24,230 @@
package com.hp.mwtests.ts.jdbc.basic;
import com.arjuna.mwlabs.testframework.unittest.LocalHarness;
+import com.arjuna.mwlabs.testframework.unittest.Test;
+import java.sql.*;
+
/**
* Exercises the JDBC3.0 specific methods on the transactional JDBC wrapper.
+ *
+ * Note: some drivers dont fully support JDBC 3.0, so some of these
+ * tests may fail though no fault of our own.
*/
public class JDBC3Test extends JDBC2Test
{
+ private void testHoldability()
+ {
+ System.out.println("testHoldability...");
+
+ try
+ {
+ conn.setHoldability(ResultSet.HOLD_CURSORS_OVER_COMMIT);
+ if(!(conn.getHoldability() == ResultSet.HOLD_CURSORS_OVER_COMMIT))
+ {
+ System.err.println("holdability incorrect, set "+ResultSet.HOLD_CURSORS_OVER_COMMIT+" but read back "+conn.getHoldability());
+ assertFailure();
+ }
+ conn.setHoldability(ResultSet.CLOSE_CURSORS_AT_COMMIT);
+ if(!(conn.getHoldability() == ResultSet.CLOSE_CURSORS_AT_COMMIT))
+ {
+ System.err.println("holdability incorrect, set "+ResultSet.CLOSE_CURSORS_AT_COMMIT+" but read back "+conn.getHoldability());
+ assertFailure();
+ }
+ }
+ catch (SQLException e)
+ {
+ e.printStackTrace(System.err);
+ assertFailure();
+ }
+ }
+
+ private void testSavepointNoTx()
+ {
+ System.out.println("testSavepointNoTx...");
+
+ // savepoint methods should work if we don't have an XA tx
+
+ try
+ {
+ conn.setAutoCommit(false);
+
+ Savepoint savepoint = conn.setSavepoint();
+ Savepoint mySavepoint = conn.setSavepoint("mySavepoint");
+ conn.rollback(mySavepoint);
+ conn.releaseSavepoint(savepoint);
+ }
+ catch (SQLException e)
+ {
+ e.printStackTrace(System.err);
+ assertFailure();
+ }
+ }
+
+ private void testSavepointTx()
+ {
+ System.out.println("testSavepointTx...");
+
+ // it is not permitted to use savepoint methods if we have an XA tx...
+
+ javax.transaction.UserTransaction tx = com.arjuna.ats.jta.UserTransaction.userTransaction();
+
+ try
+ {
+ tx.begin();
+ }
+ catch(Exception e)
+ {
+ e.printStackTrace(System.err);
+ assertFailure();
+ }
+
+ boolean gotExpectedException = false;
+ Savepoint savepoint = null;
+ Savepoint mySavepoint = null;
+
+ try
+ {
+ savepoint = conn.setSavepoint();
+ }
+ catch(SQLException e) {
+ gotExpectedException = true;
+ }
+
+ if(!gotExpectedException) {
+ System.err.println("Failed to get expected exception from setSavepoint inside tx");
+ assertFailure();
+ }
+
+ gotExpectedException = false;
+
+ try
+ {
+ mySavepoint = conn.setSavepoint("mySavepoint");
+ }
+ catch(SQLException e) {
+ gotExpectedException = true;
+ }
+
+ if(!gotExpectedException) {
+ System.err.println("Failed to get expected exception from setSavepoint(String) inside tx");
+ assertFailure();
+ }
+
+ gotExpectedException = false;
+
+ try
+ {
+ conn.rollback(mySavepoint);
+ }
+ catch(SQLException e) {
+ gotExpectedException = true;
+ }
+
+ if(!gotExpectedException) {
+ System.err.println("Failed to get expected exception from rollback(String) inside tx");
+ assertFailure();
+ }
+
+ try
+ {
+ conn.releaseSavepoint(savepoint);
+ }
+ catch (SQLException e)
+ {
+ gotExpectedException = true;
+ }
+
+ if(!gotExpectedException) {
+ System.err.println("Failed to get expected exception from releaseSavepoint(String) inside tx");
+ assertFailure();
+ }
+
+ try
+ {
+ tx.rollback();
+ }
+ catch(Exception e)
+ {
+ e.printStackTrace(System.err);
+ assertFailure();
+ }
+ }
+
+ private void testStatements()
+ {
+ System.out.println("testStatements...");
+
+ javax.transaction.UserTransaction tx = com.arjuna.ats.jta.UserTransaction.userTransaction();
+
+ Statement stmt = null;
+
+ try
+ {
+ tx.begin();
+ }
+ catch(Exception e)
+ {
+ e.printStackTrace(System.err);
+ assertFailure();
+ }
+
+ try
+ {
+ conn = DriverManager.getConnection(url, dbProperties);
+
+ stmt = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.CLOSE_CURSORS_AT_COMMIT);
+ stmt.close();
+
+ stmt = conn.prepareStatement("SELECT a FROM b", ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.CLOSE_CURSORS_AT_COMMIT);
+ stmt.close();
+
+ stmt = conn.prepareCall("SELECT a FROM b", ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.CLOSE_CURSORS_AT_COMMIT);
+ stmt.close();
+
+ stmt = conn.prepareStatement("SELECT a FROM b", Statement.NO_GENERATED_KEYS);
+ stmt.close();
+
+ stmt = conn.prepareStatement("SELECT a FROM b", new int[] {1});
+ stmt.close();
+
+ stmt = conn.prepareStatement("SELECT a FROM b", new String[] {"a"});
+ stmt.close();
+
+ conn.close();
+ }
+ catch (SQLException e)
+ {
+ e.printStackTrace(System.err);
+ assertFailure();
+ }
+
+ try
+ {
+ tx.rollback();
+ }
+ catch(Exception e)
+ {
+ e.printStackTrace(System.err);
+ assertFailure();
+ }
+ }
+
+
public void run(String[] args) {
setup(args);
+ testHoldability();
+ testSavepointNoTx();
+ testSavepointTx();
+ testStatements();
- // TODO: exercise JDBC3.0 specific methods here
-
+ if(getTestResult() == Test.UNCERTAIN) {
+ assertSuccess();
+ }
}
+ // java com.hp.mwtests.ts.jdbc.basic.JDBC3Test -oracle -url jdbc:arjuna:oracle:thin:@localhost:1521:orcl -user test -password testpass
public static void main(String[] args)
{
JDBC3Test test = new JDBC3Test();
More information about the jboss-svn-commits
mailing list