1 22 package org.jboss.test.jca.test; 23 24 import javax.resource.ResourceException ; 25 import javax.resource.cci.ConnectionFactory ; 26 import javax.resource.spi.ConnectionManager ; 27 import javax.resource.spi.ConnectionRequestInfo ; 28 import javax.resource.spi.ManagedConnectionFactory ; 29 import javax.transaction.TransactionManager ; 30 31 import org.jboss.logging.Logger; 32 import org.jboss.resource.connectionmanager.CachedConnectionManager; 33 import org.jboss.resource.connectionmanager.InternalManagedConnectionPool; 34 import org.jboss.resource.connectionmanager.JBossManagedConnectionPool; 35 import org.jboss.resource.connectionmanager.ManagedConnectionPool; 36 import org.jboss.resource.connectionmanager.TransactionSynchronizer; 37 import org.jboss.resource.connectionmanager.TxConnectionManager; 38 import org.jboss.test.jca.adapter.TestConnectionFactory; 39 import org.jboss.test.jca.adapter.TestConnectionRequestInfo; 40 import org.jboss.test.jca.adapter.TestManagedConnectionFactory; 41 import org.jboss.tm.TransactionManagerLocator; 42 import org.jboss.tm.usertx.client.ServerVMClientUserTransaction; 43 44 50 public class AbstractPoolingStressTest extends AbstractConcurrentStressTest 51 { 52 Logger log = Logger.getLogger(getClass()); 53 Logger poolLog = Logger.getLogger(JBossManagedConnectionPool.class); 54 55 protected TransactionManager tm; 56 private ServerVMClientUserTransaction ut; 57 private CachedConnectionManager ccm; 58 private TestManagedConnectionFactory mcf; 59 private TxConnectionManager cm; 60 private ConnectionRequestInfo cri; 61 protected ConnectionFactory cf; 62 63 protected void setUp() throws Exception 64 { 65 log.debug("================> Start " + getName()); 66 tm = TransactionManagerLocator.getInstance().locate(); 67 TransactionSynchronizer.setTransactionManager(tm); 68 ut = new ServerVMClientUserTransaction(tm); 69 ccm = new CachedConnectionManager(); 70 ut.registerTxStartedListener(ccm); 71 72 mcf = new TestManagedConnectionFactory(); 73 InternalManagedConnectionPool.PoolParams pp = new InternalManagedConnectionPool.PoolParams(); 74 pp.maxSize = getMaxPoolSize(); 75 ManagedConnectionPool poolingStrategy = new JBossManagedConnectionPool.OnePool(mcf, pp, false, poolLog); 76 cri = new TestConnectionRequestInfo(); 77 cm = new TxConnectionManager(ccm, poolingStrategy, tm); 78 if (isSticky()) 79 { 80 cm.setTrackConnectionByTx(true); 81 mcf.setFailJoin(true); 82 } 83 else 84 { 85 cm.setTrackConnectionByTx(false); 86 mcf.setFailJoin(false); 87 } 88 mcf.setSleepInStart(200); 89 mcf.setSleepInEnd(200); 90 cm.setLocalTransactions(false); 91 poolingStrategy.setConnectionListenerFactory(cm); 92 cf = new TestConnectionFactory(new ConnectionManagerProxy(), mcf); 93 } 94 95 protected boolean isSticky() 96 { 97 return false; 98 } 99 100 protected int getMaxPoolSize() 101 { 102 return 20; 103 } 104 105 protected void tearDown() throws Exception 106 { 107 JBossManagedConnectionPool.OnePool pool = (JBossManagedConnectionPool.OnePool) cm.getPoolingStrategy(); 108 pool.shutdown(); 109 ut = null; 110 log.debug("================> End " + getName()); 111 } 112 113 protected class ConnectionManagerProxy implements ConnectionManager 114 { 115 116 private static final long serialVersionUID = 1L; 117 118 public Object allocateConnection(ManagedConnectionFactory mcf, ConnectionRequestInfo cxRequestInfo) throws ResourceException 119 { 120 return cm.allocateConnection(mcf, cri); 121 } 122 } 123 124 public AbstractPoolingStressTest(String name) 125 { 126 super(name); 127 } 128 } 129 | Popular Tags |