cvs commit: jakarta-commons/dbcp/src/test/org/apache/commons/dbcp/jdbc2pool TestJdbc2PoolDataSource.java
jmcnally2003/08/11 23:09:21 Modified:dbcp/src/test/org/apache/commons/dbcp TestAll.java Added: dbcp/src/java/org/apache/commons/dbcp/datasources CPDSConnectionFactory.java InstanceKeyDataSource.java InstanceKeyObjectFactory.java KeyedCPDSConnectionFactory.java PerUserPoolDataSource.java PoolKey.java PooledConnectionAndInfo.java SharedPoolDataSource.java UserPassKey.java dbcp/src/test/org/apache/commons/dbcp/datasources TestPerUserPoolDataSource.java TestSharedPoolDataSource.java Removed: dbcp/src/java/org/apache/commons/dbcp/jdbc2pool CPDSConnectionFactory.java Jdbc2PoolDataSource.java PoolKey.java PooledConnectionAndInfo.java UserPassKey.java package.html dbcp/src/test/org/apache/commons/dbcp/jdbc2pool TestJdbc2PoolDataSource.java Log: removed jdbc2 from package and class names. jdbc2pool package renamed to datasources. Split Jdbc2PoolDataSource into two separate DataSources. One which uses a single pool keyed by username and another which uses a separate pool for each user. This simplifies the code in each. Moved the ObjectFactory implementation into a separate class and simplified the jndi code considerably in the process. Revision ChangesPath 1.1 jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/datasources/CPDSConnectionFactory.java http://cvs.apache.org/viewcvs/jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/datasources/CPDSConnectionFactory.java?rev=1.1 1.1 jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/datasources/InstanceKeyDataSource.java http://cvs.apache.org/viewcvs/jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/datasources/InstanceKeyDataSource.java?rev=1.1 1.1 jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/datasources/InstanceKeyObjectFactory.java http://cvs.apache.org/viewcvs/jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/datasources/InstanceKeyObjectFactory.java?rev=1.1 1.1 jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/datasources/KeyedCPDSConnectionFactory.java http://cvs.apache.org/viewcvs/jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/datasources/KeyedCPDSConnectionFactory.java?rev=1.1 1.1 jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/datasources/PerUserPoolDataSource.java http://cvs.apache.org/viewcvs/jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/datasources/PerUserPoolDataSource.java?rev=1.1 1.1 jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/datasources/PoolKey.java http://cvs.apache.org/viewcvs/jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/datasources/PoolKey.java?rev=1.1 1.1 jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/datasources/PooledConnectionAndInfo.java http://cvs.apache.org/viewcvs/jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/datasources/PooledConnectionAndInfo.java?rev=1.1 1.1 jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/datasources/SharedPoolDataSource.java http://cvs.apache.org/viewcvs/jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/datasources/SharedPoolDataSource.java?rev=1.1 1.1 jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/datasources/UserPassKey.java http://cvs.apache.org/viewcvs/jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/datasources/UserPassKey.java?rev=1.1 1.7 +8 -6 jakarta-commons/dbcp/src/test/org/apache/commons/dbcp/TestAll.java http://cvs.apache.org/viewcvs/jakarta-commons/dbcp/src/test/org/apache/commons/dbcp/TestAll.java.diff?r1=1.6r2=1.7 1.1 jakarta-commons/dbcp/src/test/org/apache/commons/dbcp/datasources/TestPerUserPoolDataSource.java http://cvs.apache.org/viewcvs/jakarta-commons/dbcp/src/test/org/apache/commons/dbcp/datasources/TestPerUserPoolDataSource.java?rev=1.1 1.1 jakarta-commons/dbcp/src/test/org/apache/commons/dbcp/datasources/TestSharedPoolDataSource.java http://cvs.apache.org/viewcvs/jakarta-commons/dbcp/src/test/org/apache/commons/dbcp/datasources/TestSharedPoolDataSource.java?rev=1.1 - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: jakarta-commons/dbcp/src/test/org/apache/commons/dbcp/jdbc2pool TestJdbc2PoolDataSource.java
dirkv 2003/08/11 16:34:52 Modified:dbcp/src/test/org/apache/commons/dbcp/jdbc2pool TestJdbc2PoolDataSource.java Log: Bugzilla Bug 1892: Per User methods not working in Jdbc2PoolDataSource - add junit test to make sure everything is ok Revision ChangesPath 1.9 +54 -4 jakarta-commons/dbcp/src/test/org/apache/commons/dbcp/jdbc2pool/TestJdbc2PoolDataSource.java Index: TestJdbc2PoolDataSource.java === RCS file: /home/cvs/jakarta-commons/dbcp/src/test/org/apache/commons/dbcp/jdbc2pool/TestJdbc2PoolDataSource.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- TestJdbc2PoolDataSource.java 2 Jun 2003 04:54:12 - 1.8 +++ TestJdbc2PoolDataSource.java 11 Aug 2003 23:34:52 - 1.9 @@ -76,6 +76,7 @@ /** * @author John McNally + * @author Dirk Verbeeck * @version $Revision$ $Date$ */ public class TestJdbc2PoolDataSource extends TestConnectionPool { @@ -333,6 +334,55 @@ { c[i].close(); } +} + +public void testPerUserMethods() throws Exception { +Jdbc2PoolDataSource tds = (Jdbc2PoolDataSource) ds; + +// you need to set maxActive otherwise there is no accounting +tds.setPerUserMaxActive(u1, new Integer(5)); +tds.setPerUserMaxActive(u2, new Integer(5)); + +assertEquals(0, tds.getNumActive()); +assertEquals(0, tds.getNumActive(u1, p1)); +assertEquals(0, tds.getNumActive(u2, p2)); +assertEquals(0, tds.getNumIdle()); +assertEquals(0, tds.getNumIdle(u1, p1)); +assertEquals(0, tds.getNumIdle(u2, p2)); + +Connection conn = tds.getConnection(); +assertNotNull(conn); +assertEquals(1, tds.getNumActive()); +assertEquals(0, tds.getNumActive(u1, p1)); +assertEquals(0, tds.getNumActive(u2, p2)); +assertEquals(0, tds.getNumIdle()); +assertEquals(0, tds.getNumIdle(u1, p1)); +assertEquals(0, tds.getNumIdle(u2, p2)); + +conn.close(); +assertEquals(0, tds.getNumActive()); +assertEquals(0, tds.getNumActive(u1, p1)); +assertEquals(0, tds.getNumActive(u2, p2)); +assertEquals(1, tds.getNumIdle()); +assertEquals(0, tds.getNumIdle(u1, p1)); +assertEquals(0, tds.getNumIdle(u2, p2)); + +conn = tds.getConnection(u1, p1); +assertNotNull(conn); +assertEquals(0, tds.getNumActive()); +assertEquals(1, tds.getNumActive(u1, p1)); +assertEquals(0, tds.getNumActive(u2, p2)); +assertEquals(1, tds.getNumIdle()); +assertEquals(0, tds.getNumIdle(u1, p1)); +assertEquals(0, tds.getNumIdle(u2, p2)); + +conn.close(); +assertEquals(0, tds.getNumActive()); +assertEquals(0, tds.getNumActive(u1, p1)); +assertEquals(0, tds.getNumActive(u2, p2)); +assertEquals(1, tds.getNumIdle()); +assertEquals(1, tds.getNumIdle(u1, p1)); +assertEquals(0, tds.getNumIdle(u2, p2)); } public void testMultipleThreads() throws Exception { - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: jakarta-commons/dbcp/src/test/org/apache/commons/dbcp/jdbc2pool TestJdbc2PoolDataSource.java
rwaldhoff2003/03/06 13:41:47 Modified:dbcp/src/test/org/apache/commons/dbcp TestConnectionPool.java dbcp/src/test/org/apache/commons/dbcp/jdbc2pool TestJdbc2PoolDataSource.java Log: remove unneccessary calls to Thread.currentThread() Revision ChangesPath 1.4 +7 -7 jakarta-commons/dbcp/src/test/org/apache/commons/dbcp/TestConnectionPool.java Index: TestConnectionPool.java === RCS file: /home/cvs/jakarta-commons/dbcp/src/test/org/apache/commons/dbcp/TestConnectionPool.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- TestConnectionPool.java 8 Nov 2002 19:37:26 - 1.3 +++ TestConnectionPool.java 6 Mar 2003 21:41:47 - 1.4 @@ -367,7 +367,7 @@ for(int i=0;ithreads.length;i++) { while(!(threads[i]).complete()) { try { -Thread.currentThread().sleep(100L); +Thread.sleep(100L); } catch(Exception e) { // ignored } @@ -408,7 +408,7 @@ public void run() { for(int i=0;i_iter;i++) { try { -Thread.currentThread().sleep((long)_random.nextInt(_delay)); +Thread.sleep((long)_random.nextInt(_delay)); } catch(Exception e) { // ignored } @@ -420,7 +420,7 @@ stmt = conn.prepareStatement(select 'literal', SYSDATE from dual); rset = stmt.executeQuery(); try { -Thread.currentThread().sleep((long)_random.nextInt(_delay)); +Thread.sleep((long)_random.nextInt(_delay)); } catch(Exception e) { // ignored } 1.5 +7 -7 jakarta-commons/dbcp/src/test/org/apache/commons/dbcp/jdbc2pool/TestJdbc2PoolDataSource.java Index: TestJdbc2PoolDataSource.java === RCS file: /home/cvs/jakarta-commons/dbcp/src/test/org/apache/commons/dbcp/jdbc2pool/TestJdbc2PoolDataSource.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- TestJdbc2PoolDataSource.java 16 Nov 2002 19:18:27 - 1.4 +++ TestJdbc2PoolDataSource.java 6 Mar 2003 21:41:47 - 1.5 @@ -347,7 +347,7 @@ for (int i = 0; i pts.length; i++) { pts[i] = new PoolTest(threadGroup, holdTime); } -Thread.currentThread().sleep(10 * holdTime); +Thread.sleep(10 * holdTime); for (int i = 0; i pts.length; i++) { pts[i].stop(); } @@ -355,7 +355,7 @@ // - (pts.length*10*holdTime); System.out.println(Multithread test time = + time + ms); -Thread.currentThread().sleep(holdTime); +Thread.sleep(holdTime); return success[0]; } @@ -396,7 +396,7 @@ assertTrue(null != rset); assertTrue(rset.next()); state = Holding Connection; -thread.sleep(connHoldTime); +Thread.sleep(connHoldTime); state = Returning Connection; rset.close(); stmt.close(); - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: jakarta-commons/dbcp/src/test/org/apache/commons/dbcp/jdbc2pool TestJdbc2PoolDataSource.java
jmcnally2002/11/16 11:18:28 Modified:dbcp/src/java/org/apache/commons/dbcp/jdbc2pool CPDSConnectionFactory.java Jdbc2PoolDataSource.java KeyedCPDSConnectionFactory.java PoolKey.java UserPassKey.java dbcp/src/test/org/apache/commons/dbcp/jdbc2pool TestJdbc2PoolDataSource.java Added: dbcp/src/java/org/apache/commons/dbcp/jdbc2pool PooledConnectionAndInfo.java Log: Removed pools of PoolKey and UserPassKey and made the keys immutable. Storing the username and password used to obtain a PooledConnection along with the connection, so that it can be checked on later requests for the same connection. Revision ChangesPath 1.3 +34 -13 jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/jdbc2pool/CPDSConnectionFactory.java Index: CPDSConnectionFactory.java === RCS file: /home/cvs/jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/jdbc2pool/CPDSConnectionFactory.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- CPDSConnectionFactory.java1 Nov 2002 16:03:20 - 1.2 +++ CPDSConnectionFactory.java16 Nov 2002 19:18:27 - 1.3 @@ -63,6 +63,7 @@ import java.util.Map; import java.util.HashMap; +import java.util.WeakHashMap; import java.sql.*; import javax.sql.ConnectionPoolDataSource; import javax.sql.PooledConnection; @@ -153,9 +154,10 @@ synchronized public Object makeObject() { -PooledConnection pc = null; +Object obj; try { +PooledConnection pc = null; if ( _username == null ) { pc = _cpds.getPooledConnection(); @@ -167,18 +169,21 @@ // should we add this object as a listener or the pool. // consider the validateObject method in decision pc.addConnectionEventListener(this); +obj = new PooledConnectionAndInfo(pc, _username, _password); +pcMap.put(pc, obj); } catch (SQLException e) { throw new RuntimeException(e.getMessage()); } -return pc; +return obj; } public void destroyObject(Object obj) { -if(obj instanceof PooledConnection) { +if(obj instanceof PooledConnectionAndInfo) { try { -((PooledConnection)obj).close(); +((PooledConnectionAndInfo)obj) +.getPooledConnection().close(); } catch(RuntimeException e) { throw e; } catch(SQLException e) { @@ -189,8 +194,9 @@ public boolean validateObject(Object obj) { boolean valid = false; -if(obj instanceof PooledConnection) { -PooledConnection pconn = (PooledConnection)obj; +if(obj instanceof PooledConnectionAndInfo) { +PooledConnection pconn = +((PooledConnectionAndInfo)obj).getPooledConnection(); String query = _validationQuery; if(null != query) { Connection conn = null; @@ -264,13 +270,19 @@ // otherwise return the connection to the pool. if (!validatingMap.containsKey(pc)) { +Object info = pcMap.get(pc); +if (info == null) +{ +throw new IllegalStateException(NO_KEY_MESSAGE); +} + try { -_pool.returnObject(pc); +_pool.returnObject(info); } catch (Exception e) { -destroyObject(pc); +destroyObject(info); System.err.println(CLOSING DOWN CONNECTION AS IT COULD + NOT BE RETURNED TO THE POOL); } @@ -300,9 +312,17 @@ // ignore } -destroyObject(pc); +Object info = pcMap.get(pc); +if (info == null) +{ +throw new IllegalStateException(NO_KEY_MESSAGE); +} +destroyObject(info); } +private static final String NO_KEY_MESSAGE = +close() was called on a Connection, but + +I have no record of the underlying PooledConnection.; protected ConnectionPoolDataSource _cpds = null; protected String _validationQuery = null; @@ -310,4 +330,5 @@ protected String _username = null; protected String _password = null; private Map validatingMap = new HashMap(); +private WeakHashMap pcMap = new WeakHashMap(); } 1.7 +65 -63
cvs commit: jakarta-commons/dbcp/src/test/org/apache/commons/dbcp/jdbc2pool TestJdbc2PoolDataSource.java
rwaldhoff2002/11/08 10:51:07 Modified:dbcp build.xml maven.xml dbcp/doc test.jocl dbcp/src/java/org/apache/commons/dbcp/cpdsadapter ConnectionImpl.java PoolablePreparedStatementStub.java PooledConnectionImpl.java dbcp/src/test/org/apache/commons/dbcp TestAll.java TestJOCLed.java TestManual.java TesterStatement.java dbcp/src/test/org/apache/commons/dbcp/jdbc2pool TestJdbc2PoolDataSource.java Added: dbcp/src/test testpool.jocl dbcp/src/test/org/apache/commons/dbcp TestConnectionPool.java Log: refactor/cleanup test suite a bit apply generic tests to more configurations fix a couple of bugs that revealed Revision ChangesPath 1.16 +6 -1 jakarta-commons/dbcp/build.xml Index: build.xml === RCS file: /home/cvs/jakarta-commons/dbcp/build.xml,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- build.xml 5 Sep 2002 23:38:49 - 1.15 +++ build.xml 8 Nov 2002 18:51:06 - 1.16 @@ -239,6 +239,11 @@ debug=true deprecation=true optimize=true/ + copy todir=${dest.classes} filtering=no +fileset dir=${source.src.test} defaultexcludes=no + include name=testpool.jocl/ +/fileset + /copy /target !-- # -- 1.2 +9 -2 jakarta-commons/dbcp/maven.xml Index: maven.xml === RCS file: /home/cvs/jakarta-commons/dbcp/maven.xml,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- maven.xml 23 Jul 2002 16:43:14 - 1.1 +++ maven.xml 8 Nov 2002 18:51:06 - 1.2 @@ -1,4 +1,11 @@ -project default=java:jar - xmlns:j=jelly:core +project default=java:jar xmlns:j=jelly:core + +postGoal name=test:compile + copy todir=target/test-classes +fileset dir=src/test + include name=testpool.jocl/ +/fileset + /copy +/postGoal /project 1.2 +2 -2 jakarta-commons/dbcp/doc/test.jocl Index: test.jocl === RCS file: /home/cvs/jakarta-commons/dbcp/doc/test.jocl,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- test.jocl 14 Apr 2001 17:16:57 - 1.1 +++ test.jocl 8 Nov 2002 18:51:07 - 1.2 @@ -19,10 +19,10 @@ /object object class=org.apache.commons.pool.impl.GenericKeyedObjectPoolFactory object class=org.apache.commons.pool.KeyedPoolableObjectFactory null=true/ - int value=5/ + int value=10/ byte value=1/ long value=2000/ - int value=5/ + int value=10/ boolean value=true/ boolean value=true/ long value=1/ 1.2 +3 -2 jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/cpdsadapter/ConnectionImpl.java Index: ConnectionImpl.java === RCS file: /home/cvs/jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/cpdsadapter/ConnectionImpl.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- ConnectionImpl.java 5 Aug 2002 06:42:01 - 1.1 +++ ConnectionImpl.java 8 Nov 2002 18:51:07 - 1.2 @@ -3,7 +3,7 @@ /* * The Apache Software License, Version 1.1 * - * Copyright (c) 2001 The Apache Software Foundation. All rights + * Copyright (c) 2001-2002 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without @@ -170,6 +170,7 @@ public void close() throws SQLException { +assertOpen(); isClosed = true; pooledConnection.notifyListeners(); } 1.2 +8 -8 jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/cpdsadapter/PoolablePreparedStatementStub.java Index: PoolablePreparedStatementStub.java === RCS file: /home/cvs/jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/cpdsadapter/PoolablePreparedStatementStub.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- PoolablePreparedStatementStub.java5 Aug 2002 06:42:01 - 1.1 +++ PoolablePreparedStatementStub.java8 Nov 2002 18:51:07 - 1.2 @@ -1,5 +1,5 @@ /*