[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