1 package org.jboss.test.jca.test; 2 3 import java.sql.Connection ; 4 import java.sql.SQLException ; 5 6 import org.jboss.logging.Logger; 7 import org.jboss.resource.adapter.jdbc.StaleConnectionException; 8 import org.jboss.resource.adapter.jdbc.WrappedConnection; 9 import org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory; 10 import org.jboss.resource.connectionmanager.InternalManagedConnectionPool; 11 import org.jboss.resource.connectionmanager.JBossManagedConnectionPool; 12 import org.jboss.resource.connectionmanager.ManagedConnectionPool; 13 import org.jboss.resource.connectionmanager.NoTxConnectionManager; 14 import org.jboss.test.JBossTestCase; 15 import org.jboss.test.jca.jdbc.TestConnection; 16 17 public class StaleConnectionCheckerUnitTestCase extends JBossTestCase 18 { 19 Logger log = Logger.getLogger(PreFillPoolingUnitTestCase.class); 20 21 public StaleConnectionCheckerUnitTestCase(String name) 22 { 23 super(name); 24 25 } 26 public void testNullStaleConnectionChecker() throws Exception 27 { 28 29 LocalManagedConnectionFactory mcf = new LocalManagedConnectionFactory(); 30 31 mcf.setDriverClass("org.jboss.test.jca.jdbc.TestDriver"); 32 mcf.setConnectionURL("jdbc:jboss-test-adapter"); 33 mcf.setStaleConnectionCheckerClassName("non-stale"); 34 mcf.setExceptionSorterClassName("org.jboss.test.jca.support.MockExceptionSorter"); 35 InternalManagedConnectionPool.PoolParams pp = new InternalManagedConnectionPool.PoolParams(); 36 pp.minSize = 1; 37 pp.maxSize = 2; 38 pp.blockingTimeout = 10000; 39 40 ManagedConnectionPool mcp = new JBossManagedConnectionPool.OnePool(mcf, pp, false, log); 41 NoTxConnectionManager noTxn = new NoTxConnectionManager(null, mcp); 42 mcp.setConnectionListenerFactory(noTxn); 43 Connection conn = (Connection )noTxn.allocateConnection(mcf, null); 44 TestConnection uc = (TestConnection)((WrappedConnection)conn).getUnderlyingConnection(); 45 uc.setFail(true); 46 47 try 48 { 49 conn.createStatement().execute("blah"); 50 51 }catch(SQLException e) 52 { 53 assertFalse("Should not be StaleConnectionException", e instanceof StaleConnectionException); 55 56 } 57 58 } 59 60 public void testNonStaleConnection() throws Exception 61 { 62 LocalManagedConnectionFactory mcf = new LocalManagedConnectionFactory(); 63 64 mcf.setDriverClass("org.jboss.test.jca.jdbc.TestDriver"); 65 mcf.setConnectionURL("jdbc:jboss-test-adapter"); 66 mcf.setStaleConnectionCheckerClassName("org.jboss.test.jca.support.MockStaleConnectionCheckerFalse"); 67 mcf.setExceptionSorterClassName("org.jboss.test.jca.support.MockExceptionSorter"); 68 69 InternalManagedConnectionPool.PoolParams pp = new InternalManagedConnectionPool.PoolParams(); 70 pp.minSize = 1; 71 pp.maxSize = 2; 72 pp.blockingTimeout = 10000; 73 74 ManagedConnectionPool mcp = new JBossManagedConnectionPool.OnePool(mcf, pp, false, log); 75 NoTxConnectionManager noTxn = new NoTxConnectionManager(null, mcp); 76 mcp.setConnectionListenerFactory(noTxn); 77 Connection conn = (Connection )noTxn.allocateConnection(mcf, null); 78 TestConnection uc = (TestConnection)((WrappedConnection)conn).getUnderlyingConnection(); 79 uc.setFail(true); 80 81 try 82 { 83 conn.createStatement().execute("blah"); 84 85 }catch(SQLException e) 86 { 87 assertFalse("Should not be StaleConnectionException", e instanceof StaleConnectionException); 89 assertTrue("Connection error should be fatal", mcp.getConnectionDestroyedCount() > 0); 90 91 } 92 93 assertTrue("Exception should be falal", mcp.getConnectionDestroyedCount() > 0); 94 95 } 96 97 98 public void testStaleConnection() throws Exception 99 { 100 101 LocalManagedConnectionFactory mcf = new LocalManagedConnectionFactory(); 102 103 mcf.setDriverClass("org.jboss.test.jca.jdbc.TestDriver"); 104 mcf.setConnectionURL("jdbc:jboss-test-adapter"); 105 mcf.setStaleConnectionCheckerClassName("org.jboss.test.jca.support.MockStaleConnectionCheckerTrue"); 106 InternalManagedConnectionPool.PoolParams pp = new InternalManagedConnectionPool.PoolParams(); 107 pp.minSize = 1; 108 pp.maxSize = 2; 109 pp.blockingTimeout = 10000; 110 111 ManagedConnectionPool mcp = new JBossManagedConnectionPool.OnePool(mcf, pp, false, log); 112 NoTxConnectionManager noTxn = new NoTxConnectionManager(null, mcp); 113 mcp.setConnectionListenerFactory(noTxn); 114 Connection conn = (Connection )noTxn.allocateConnection(mcf, null); 115 TestConnection uc = (TestConnection)((WrappedConnection)conn).getUnderlyingConnection(); 116 uc.setFail(true); 117 118 try 119 { 120 conn.createStatement().execute("blah"); 121 122 }catch(SQLException e) 123 { 124 assertTrue("Should be StaleConnectionException", e instanceof StaleConnectionException); 126 127 } 128 129 assertTrue("StaleConnectionException should not destroy connection", mcp.getConnectionDestroyedCount() == 0); 130 131 } 132 133 } 134 | Popular Tags |