[Jboss-cvs] JBossAS SVN: r54934 - trunk/testsuite/src/main/org/jboss/test/jca/test

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Jul 31 15:00:05 EDT 2006


Author: weston.price at jboss.com
Date: 2006-07-31 15:00:04 -0400 (Mon, 31 Jul 2006)
New Revision: 54934

Added:
   trunk/testsuite/src/main/org/jboss/test/jca/test/StaleConnectionCheckerUnitTestCase.java
Log:
[JBAS-3359] Stale connection implementation.

Added: trunk/testsuite/src/main/org/jboss/test/jca/test/StaleConnectionCheckerUnitTestCase.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/jca/test/StaleConnectionCheckerUnitTestCase.java	2006-07-31 18:59:19 UTC (rev 54933)
+++ trunk/testsuite/src/main/org/jboss/test/jca/test/StaleConnectionCheckerUnitTestCase.java	2006-07-31 19:00:04 UTC (rev 54934)
@@ -0,0 +1,133 @@
+package org.jboss.test.jca.test;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+
+import org.jboss.logging.Logger;
+import org.jboss.resource.adapter.jdbc.StaleConnectionException;
+import org.jboss.resource.adapter.jdbc.WrappedConnection;
+import org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory;
+import org.jboss.resource.connectionmanager.InternalManagedConnectionPool;
+import org.jboss.resource.connectionmanager.JBossManagedConnectionPool;
+import org.jboss.resource.connectionmanager.ManagedConnectionPool;
+import org.jboss.resource.connectionmanager.NoTxConnectionManager;
+import org.jboss.test.JBossTestCase;
+import org.jboss.test.jca.jdbc.TestConnection;
+
+public class StaleConnectionCheckerUnitTestCase extends JBossTestCase
+{
+   Logger log = Logger.getLogger(PreFillPoolingUnitTestCase.class);
+
+   public StaleConnectionCheckerUnitTestCase(String name)
+   {
+      super(name);
+      
+   }
+   public void testNullStaleConnectionChecker() throws Exception
+   {
+    
+      LocalManagedConnectionFactory mcf = new LocalManagedConnectionFactory();
+      
+      mcf.setDriverClass("org.jboss.test.jca.jdbc.TestDriver");
+      mcf.setConnectionURL("jdbc:jboss-test-adapter");
+      mcf.setStaleConnectionCheckerClassName("non-stale");
+      mcf.setExceptionSorterClassName("org.jboss.test.jca.support.MockExceptionSorter");      
+      InternalManagedConnectionPool.PoolParams pp = new InternalManagedConnectionPool.PoolParams();
+      pp.minSize = 1;
+      pp.maxSize = 2;
+      pp.blockingTimeout = 10000;
+
+      ManagedConnectionPool mcp = new JBossManagedConnectionPool.OnePool(mcf, pp, false, log);
+      NoTxConnectionManager noTxn = new NoTxConnectionManager(null, mcp);
+      mcp.setConnectionListenerFactory(noTxn);
+      Connection conn = (Connection)noTxn.allocateConnection(mcf, null);
+      TestConnection uc = (TestConnection)((WrappedConnection)conn).getUnderlyingConnection();
+      uc.setFail(true);
+      
+      try
+      {
+         conn.createStatement().execute("blah");
+         
+      }catch(SQLException e)
+      {
+         //Normal 
+         assertFalse("Should not be StaleConnectionException", e instanceof StaleConnectionException);
+         
+      }
+
+   }
+   
+   public void testNonStaleConnection() throws Exception
+   {
+      LocalManagedConnectionFactory mcf = new LocalManagedConnectionFactory();
+      
+      mcf.setDriverClass("org.jboss.test.jca.jdbc.TestDriver");
+      mcf.setConnectionURL("jdbc:jboss-test-adapter");
+      mcf.setStaleConnectionCheckerClassName("org.jboss.test.jca.support.MockStaleConnectionCheckerFalse");
+      mcf.setExceptionSorterClassName("org.jboss.test.jca.support.MockExceptionSorter");      
+
+      InternalManagedConnectionPool.PoolParams pp = new InternalManagedConnectionPool.PoolParams();
+      pp.minSize = 1;
+      pp.maxSize = 2;
+      pp.blockingTimeout = 10000;
+
+      ManagedConnectionPool mcp = new JBossManagedConnectionPool.OnePool(mcf, pp, false, log);
+      NoTxConnectionManager noTxn = new NoTxConnectionManager(null, mcp);
+      mcp.setConnectionListenerFactory(noTxn);
+      Connection conn = (Connection)noTxn.allocateConnection(mcf, null);
+      TestConnection uc = (TestConnection)((WrappedConnection)conn).getUnderlyingConnection();
+      uc.setFail(true);
+      
+      try
+      {
+         conn.createStatement().execute("blah");
+         
+      }catch(SQLException e)
+      {
+         //Normal 
+         assertFalse("Should not be StaleConnectionException", e instanceof StaleConnectionException);
+         assertTrue("Connection error should be fatal", mcp.getConnectionDestroyedCount() > 0);
+         
+      }
+      
+      assertTrue("Exception should be falal", mcp.getConnectionDestroyedCount() > 0);      
+
+   }
+   
+   
+   public void testStaleConnection() throws Exception
+   {
+      
+      LocalManagedConnectionFactory mcf = new LocalManagedConnectionFactory();
+      
+      mcf.setDriverClass("org.jboss.test.jca.jdbc.TestDriver");
+      mcf.setConnectionURL("jdbc:jboss-test-adapter");
+      mcf.setStaleConnectionCheckerClassName("org.jboss.test.jca.support.MockStaleConnectionCheckerTrue");
+      InternalManagedConnectionPool.PoolParams pp = new InternalManagedConnectionPool.PoolParams();
+      pp.minSize = 1;
+      pp.maxSize = 2;
+      pp.blockingTimeout = 10000;
+
+      ManagedConnectionPool mcp = new JBossManagedConnectionPool.OnePool(mcf, pp, false, log);
+      NoTxConnectionManager noTxn = new NoTxConnectionManager(null, mcp);
+      mcp.setConnectionListenerFactory(noTxn);
+      Connection conn = (Connection)noTxn.allocateConnection(mcf, null);
+      TestConnection uc = (TestConnection)((WrappedConnection)conn).getUnderlyingConnection();
+      uc.setFail(true);
+      
+      try
+      {
+         conn.createStatement().execute("blah");
+         
+      }catch(SQLException e)
+      {
+         //Normal 
+         assertTrue("Should be StaleConnectionException", e instanceof StaleConnectionException);
+         
+      }
+      
+      assertTrue("StaleConnectionException should not destroy connection", mcp.getConnectionDestroyedCount() == 0);      
+      
+   }
+
+}




More information about the jboss-cvs-commits mailing list