From a568a084b3161b2ebd1e4e19d17e813ae312d65f Mon Sep 17 00:00:00 2001 From: wenshao Date: Fri, 13 May 2011 07:06:11 +0000 Subject: [PATCH] =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://code.alibabatech.com/svn/druid/trunk@48 b9813039-fb51-4c41-a8b9-e21c2acb5095 --- .../alibaba/druid/pool/DruidDataSource.java | 4 +- .../druid/pool/PoolableConnection.java | 2 +- .../xa/DataSourceXAConnectionFactory.java | 30 +++++----- .../druid/pool/xa/DruidXADataSource.java | 2 +- .../pool/xa/LocalXAConnectionFactory.java | 9 ++- .../druid/pool/xa/ManagedConnection.java | 58 +++++++++---------- .../druid/pool/xa/ManagedDataSource.java | 54 +++++++++-------- .../druid/pool/xa/TransactionContext.java | 47 +++++++-------- .../pool/xa/TransactionContextListener.java | 1 - .../druid/pool/xa/TransactionRegistry.java | 29 +++++----- .../druid/pool/xa/XAConnectionFactory.java | 30 +++++----- .../druid/stat/JdbcConnectionStat.java | 2 +- .../bvt/pool/DruidDataSourceFilterTest.java | 15 ++--- .../alibaba/druid/pool/benckmark/Case0.java | 28 ++++----- 14 files changed, 156 insertions(+), 155 deletions(-) diff --git a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java index 79c990f3ea..8a8557bba0 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java @@ -515,14 +515,14 @@ public class DruidDataSource extends DruidDataAbstractSource implements DruidDat if (timeBetweenEvictionRunsMillis > 0) { Thread.sleep(timeBetweenEvictionRunsMillis); } - + ConnectionHolder first = null; lock.lock(); try { if (count <= 0) { continue; } - + if (count <= maxIdle) { highWater.await(); continue; diff --git a/src/main/java/com/alibaba/druid/pool/PoolableConnection.java b/src/main/java/com/alibaba/druid/pool/PoolableConnection.java index bde2134a54..3b940f612b 100644 --- a/src/main/java/com/alibaba/druid/pool/PoolableConnection.java +++ b/src/main/java/com/alibaba/druid/pool/PoolableConnection.java @@ -416,7 +416,7 @@ public class PoolableConnection implements PooledConnection, Connection { if (holder == null) { return true; } - + return conn.isClosed(); } diff --git a/src/main/java/com/alibaba/druid/pool/xa/DataSourceXAConnectionFactory.java b/src/main/java/com/alibaba/druid/pool/xa/DataSourceXAConnectionFactory.java index 4ba166aad1..036b5c7b81 100644 --- a/src/main/java/com/alibaba/druid/pool/xa/DataSourceXAConnectionFactory.java +++ b/src/main/java/com/alibaba/druid/pool/xa/DataSourceXAConnectionFactory.java @@ -24,37 +24,39 @@ import java.sql.SQLException; /** * An implementation of XAConnectionFactory which uses a real XADataSource to obtain connections and XAResources. - * + * * @author Dain Sundstrom * @version $Revision$ */ public class DataSourceXAConnectionFactory implements XAConnectionFactory { + protected TransactionRegistry transactionRegistry; - protected XADataSource xaDataSource; - protected String username; - protected String password; + protected XADataSource xaDataSource; + protected String username; + protected String password; /** - * Creates an DataSourceXAConnectionFactory which uses the specified XADataSource to create database - * connections. The connections are enlisted into transactions using the specified transaction manager. - * + * Creates an DataSourceXAConnectionFactory which uses the specified XADataSource to create database connections. + * The connections are enlisted into transactions using the specified transaction manager. + * * @param transactionManager the transaction manager in which connections will be enlisted * @param xaDataSource the data source from which connections will be retrieved */ - public DataSourceXAConnectionFactory(TransactionManager transactionManager, XADataSource xaDataSource) { + public DataSourceXAConnectionFactory(TransactionManager transactionManager, XADataSource xaDataSource){ this(transactionManager, xaDataSource, null, null); } /** - * Creates an DataSourceXAConnectionFactory which uses the specified XADataSource to create database - * connections. The connections are enlisted into transactions using the specified transaction manager. - * + * Creates an DataSourceXAConnectionFactory which uses the specified XADataSource to create database connections. + * The connections are enlisted into transactions using the specified transaction manager. + * * @param transactionManager the transaction manager in which connections will be enlisted * @param xaDataSource the data source from which connections will be retrieved * @param username the username used for authenticating new connections or null for unauthenticated * @param password the password used for authenticating new connections */ - public DataSourceXAConnectionFactory(TransactionManager transactionManager, XADataSource xaDataSource, String username, String password) { + public DataSourceXAConnectionFactory(TransactionManager transactionManager, XADataSource xaDataSource, + String username, String password){ if (transactionManager == null) throw new NullPointerException("transactionManager is null"); if (xaDataSource == null) throw new NullPointerException("xaDataSource is null"); @@ -66,6 +68,7 @@ public class DataSourceXAConnectionFactory implements XAConnectionFactory { /** * Gets the username used to authenticate new connections. + * * @return the user name or null if unauthenticated connections are used */ public String getUsername() { @@ -74,6 +77,7 @@ public class DataSourceXAConnectionFactory implements XAConnectionFactory { /** * Sets the username used to authenticate new connections. + * * @param username the username used for authenticating the connection or null for unauthenticated */ public void setUsername(String username) { @@ -82,6 +86,7 @@ public class DataSourceXAConnectionFactory implements XAConnectionFactory { /** * Sets the password used to authenticate new connections. + * * @param password the password used for authenticating the connection or null for unauthenticated */ public void setPassword(String password) { @@ -111,4 +116,3 @@ public class DataSourceXAConnectionFactory implements XAConnectionFactory { return connection; } } - diff --git a/src/main/java/com/alibaba/druid/pool/xa/DruidXADataSource.java b/src/main/java/com/alibaba/druid/pool/xa/DruidXADataSource.java index 3af14e5c21..ba47bd5f11 100644 --- a/src/main/java/com/alibaba/druid/pool/xa/DruidXADataSource.java +++ b/src/main/java/com/alibaba/druid/pool/xa/DruidXADataSource.java @@ -124,7 +124,7 @@ public class DruidXADataSource extends DruidDataSource { // Create the XADataSource instance using the configured class name if it has not been set if (xaDataSourceInstance == null) { - Class xaDataSourceClass = null; + Class xaDataSourceClass = null; try { xaDataSourceClass = Class.forName(xaDataSource); } catch (Throwable t) { diff --git a/src/main/java/com/alibaba/druid/pool/xa/LocalXAConnectionFactory.java b/src/main/java/com/alibaba/druid/pool/xa/LocalXAConnectionFactory.java index 29c7e69fa0..74a1b40ce4 100644 --- a/src/main/java/com/alibaba/druid/pool/xa/LocalXAConnectionFactory.java +++ b/src/main/java/com/alibaba/druid/pool/xa/LocalXAConnectionFactory.java @@ -46,8 +46,13 @@ public class LocalXAConnectionFactory implements XAConnectionFactory { * @param connectionFactory the connection factory from which connections will be retrieved */ public LocalXAConnectionFactory(TransactionManager transactionManager, ConnectionFactory connectionFactory){ - if (transactionManager == null) throw new NullPointerException("transactionManager is null"); - if (connectionFactory == null) throw new NullPointerException("connectionFactory is null"); + if (transactionManager == null) { + throw new NullPointerException("transactionManager is null"); + } + + if (connectionFactory == null) { + throw new NullPointerException("connectionFactory is null"); + } this.transactionRegistry = new TransactionRegistry(transactionManager); this.connectionFactory = connectionFactory; diff --git a/src/main/java/com/alibaba/druid/pool/xa/ManagedConnection.java b/src/main/java/com/alibaba/druid/pool/xa/ManagedConnection.java index 83ba3545b5..730fc57ecd 100644 --- a/src/main/java/com/alibaba/druid/pool/xa/ManagedConnection.java +++ b/src/main/java/com/alibaba/druid/pool/xa/ManagedConnection.java @@ -154,35 +154,35 @@ public class ManagedConnection extends PoolableConnection { } protected void transactionComplete() { -// transactionContext = null; -// -// // if we were using a shared connection, clear the reference now that the transaction has completed -// if (isSharedConnection) { -// // for now, just set the delegate to null, it will be created later if needed -// setDelegate(null); -// isSharedConnection = false; -// } -// -// // if this connection was closed during the transaction and there is still a delegate present close it -// Connection delegate = getDelegateInternal(); -// if (isClosed() && delegate != null) { -// try { -// setDelegate(null); -// -// // don't actually close the connection if in a transaction -// if (!delegate.isClosed()) { -// // don't use super.close() because it calls passivate() which marks the -// // the connection as closed without returning it to the pool -// delegate.close(); -// } -// } catch (SQLException ignored) { -// // not a whole lot we can do here as connection is closed -// // and this is a transaction callback so there is no -// // way to report the error -// } finally { -// _closed = true; -// } -// } + // transactionContext = null; + // + // // if we were using a shared connection, clear the reference now that the transaction has completed + // if (isSharedConnection) { + // // for now, just set the delegate to null, it will be created later if needed + // setDelegate(null); + // isSharedConnection = false; + // } + // + // // if this connection was closed during the transaction and there is still a delegate present close it + // Connection delegate = getDelegateInternal(); + // if (isClosed() && delegate != null) { + // try { + // setDelegate(null); + // + // // don't actually close the connection if in a transaction + // if (!delegate.isClosed()) { + // // don't use super.close() because it calls passivate() which marks the + // // the connection as closed without returning it to the pool + // delegate.close(); + // } + // } catch (SQLException ignored) { + // // not a whole lot we can do here as connection is closed + // // and this is a transaction callback so there is no + // // way to report the error + // } finally { + // _closed = true; + // } + // } throw new RuntimeException("TODO"); } diff --git a/src/main/java/com/alibaba/druid/pool/xa/ManagedDataSource.java b/src/main/java/com/alibaba/druid/pool/xa/ManagedDataSource.java index 4af72305dc..d5b7939145 100644 --- a/src/main/java/com/alibaba/druid/pool/xa/ManagedDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/xa/ManagedDataSource.java @@ -18,60 +18,58 @@ package com.alibaba.druid.pool.xa; import java.sql.Connection; import java.sql.SQLException; - /** * The ManagedDataSource is a PoolingDataSource that creates ManagedConnections. - * + * * @author Dain Sundstrom * @version $Revision$ */ public class ManagedDataSource { + private TransactionRegistry transactionRegistry; /** - * Creates an uninitialized datasource. Before this data source can be used a pool and - * transaction registry must be set. + * Creates an uninitialized datasource. Before this data source can be used a pool and transaction registry must be + * set. */ - public ManagedDataSource() { + public ManagedDataSource(){ } /** - * Creates a ManagedDataSource which obtains connections from the specified pool and - * manages them using the specified transaction registry. The TransactionRegistry must - * be the transaction registry obtained from the XAConnectionFactory used to create - * the connection pool. If not an error will occure when attempting to use the connection - * in a global transaction because the XAResource object associated with the connection - * will be unavailable. - * + * Creates a ManagedDataSource which obtains connections from the specified pool and manages them using the + * specified transaction registry. The TransactionRegistry must be the transaction registry obtained from the + * XAConnectionFactory used to create the connection pool. If not an error will occure when attempting to use the + * connection in a global transaction because the XAResource object associated with the connection will be + * unavailable. + * * @param pool the connection pool - * @param transactionRegistry the transaction registry obtained from the - * XAConnectionFactory used to create the connection pool object factory + * @param transactionRegistry the transaction registry obtained from the XAConnectionFactory used to create the + * connection pool object factory */ - public ManagedDataSource(TransactionRegistry transactionRegistry) { + public ManagedDataSource(TransactionRegistry transactionRegistry){ this.transactionRegistry = transactionRegistry; } /** - * Sets the transaction registry from the XAConnectionFactory used to create the pool. - * The transaction registry can only be set once using either a connector or this setter - * method. - * @param transactionRegistry the transaction registry acquired from the XAConnectionFactory - * used to create the pool + * Sets the transaction registry from the XAConnectionFactory used to create the pool. The transaction registry can + * only be set once using either a connector or this setter method. + * + * @param transactionRegistry the transaction registry acquired from the XAConnectionFactory used to create the pool */ public void setTransactionRegistry(TransactionRegistry transactionRegistry) { - if(this.transactionRegistry != null) throw new IllegalStateException("TransactionRegistry already set"); - if(transactionRegistry == null) throw new NullPointerException("TransactionRegistry is null"); + if (this.transactionRegistry != null) throw new IllegalStateException("TransactionRegistry already set"); + if (transactionRegistry == null) throw new NullPointerException("TransactionRegistry is null"); this.transactionRegistry = transactionRegistry; } public Connection getConnection() throws SQLException { -// if (_pool == null) throw new IllegalStateException("Pool has not been set"); -// if (transactionRegistry == null) throw new IllegalStateException("TransactionRegistry has not been set"); -// -// Connection connection = new ManagedConnection(_pool, transactionRegistry, isAccessToUnderlyingConnectionAllowed()); -// return connection; + // if (_pool == null) throw new IllegalStateException("Pool has not been set"); + // if (transactionRegistry == null) throw new IllegalStateException("TransactionRegistry has not been set"); + // + // Connection connection = new ManagedConnection(_pool, transactionRegistry, + // isAccessToUnderlyingConnectionAllowed()); + // return connection; throw new SQLException("TODO"); // TODO } } - diff --git a/src/main/java/com/alibaba/druid/pool/xa/TransactionContext.java b/src/main/java/com/alibaba/druid/pool/xa/TransactionContext.java index 433e70e574..e41c2c2d3f 100644 --- a/src/main/java/com/alibaba/druid/pool/xa/TransactionContext.java +++ b/src/main/java/com/alibaba/druid/pool/xa/TransactionContext.java @@ -26,29 +26,27 @@ import java.sql.SQLException; import java.lang.ref.WeakReference; /** - * TransactionContext represents the association between a single XAConnectionFactory and a Transaction. - * This context contains a single shared connection which should be used by all ManagedConnections for - * the XAConnectionFactory, the ability to listen for the transaction completion event, and a method - * to check the status of the transaction. - * + * TransactionContext represents the association between a single XAConnectionFactory and a Transaction. This context + * contains a single shared connection which should be used by all ManagedConnections for the XAConnectionFactory, the + * ability to listen for the transaction completion event, and a method to check the status of the transaction. + * * @author Dain Sundstrom * @version $Revision$ */ public class TransactionContext { - private final TransactionRegistry transactionRegistry; + + private final TransactionRegistry transactionRegistry; private final WeakReference transactionRef; - private Connection sharedConnection; + private Connection sharedConnection; /** - * Creates a TransactionContext for the specified Transaction and TransactionRegistry. The - * TransactionRegistry is used to obtain the XAResource for the shared connection when it is - * enlisted in the transaction. - * - * @param transactionRegistry the TransactionRegistry used to obtain the XAResource for the - * shared connection + * Creates a TransactionContext for the specified Transaction and TransactionRegistry. The TransactionRegistry is + * used to obtain the XAResource for the shared connection when it is enlisted in the transaction. + * + * @param transactionRegistry the TransactionRegistry used to obtain the XAResource for the shared connection * @param transaction the transaction */ - public TransactionContext(TransactionRegistry transactionRegistry, Transaction transaction) { + public TransactionContext(TransactionRegistry transactionRegistry, Transaction transaction){ if (transactionRegistry == null) throw new NullPointerException("transactionRegistry is null"); if (transaction == null) throw new NullPointerException("transaction is null"); this.transactionRegistry = transactionRegistry; @@ -56,9 +54,9 @@ public class TransactionContext { } /** - * Gets the connection shared by all ManagedConnections in the transaction. Specifically, - * connection using the same XAConnectionFactory from which the TransactionRegistry was - * obtained. + * Gets the connection shared by all ManagedConnections in the transaction. Specifically, connection using the same + * XAConnectionFactory from which the TransactionRegistry was obtained. + * * @return the shared connection for this transaction */ public Connection getSharedConnection() { @@ -66,13 +64,11 @@ public class TransactionContext { } /** - * Sets the shared connection for this transaction. The shared connection is enlisted - * in the transaction. - * + * Sets the shared connection for this transaction. The shared connection is enlisted in the transaction. + * * @param sharedConnection the shared connection - * @throws SQLException if a shared connection is already set, if XAResource for the connection - * could not be found in the transaction registry, or if there was a problem enlisting the - * connection in the transaction + * @throws SQLException if a shared connection is already set, if XAResource for the connection could not be found + * in the transaction registry, or if there was a problem enlisting the connection in the transaction */ public void setSharedConnection(Connection sharedConnection) throws SQLException { if (this.sharedConnection != null) { @@ -96,13 +92,14 @@ public class TransactionContext { /** * Adds a listener for transaction completion events. - * + * * @param listener the listener to add * @throws SQLException if a problem occurs adding the listener to the transaction */ public void addTransactionContextListener(final TransactionContextListener listener) throws SQLException { try { getTransaction().registerSynchronization(new Synchronization() { + public void beforeCompletion() { } @@ -120,6 +117,7 @@ public class TransactionContext { /** * True if the transaction is active or marked for rollback only. + * * @return true if the transaction is active or marked for rollback only; false otherwise * @throws SQLException if a problem occurs obtaining the transaction status */ @@ -144,4 +142,3 @@ public class TransactionContext { return transaction; } } - diff --git a/src/main/java/com/alibaba/druid/pool/xa/TransactionContextListener.java b/src/main/java/com/alibaba/druid/pool/xa/TransactionContextListener.java index a96d90c751..3619f2b375 100644 --- a/src/main/java/com/alibaba/druid/pool/xa/TransactionContextListener.java +++ b/src/main/java/com/alibaba/druid/pool/xa/TransactionContextListener.java @@ -15,7 +15,6 @@ */ package com.alibaba.druid.pool.xa; - /** * A listener for transaction completion events. * diff --git a/src/main/java/com/alibaba/druid/pool/xa/TransactionRegistry.java b/src/main/java/com/alibaba/druid/pool/xa/TransactionRegistry.java index 3347c9eb03..0888005ca5 100644 --- a/src/main/java/com/alibaba/druid/pool/xa/TransactionRegistry.java +++ b/src/main/java/com/alibaba/druid/pool/xa/TransactionRegistry.java @@ -26,34 +26,33 @@ import javax.transaction.Transaction; import javax.transaction.TransactionManager; import javax.transaction.xa.XAResource; - /** * TransactionRegistry tracks Connections and XAResources in a transacted environment for a single XAConnectionFactory. - *

- * The TransactionRegistry hides the details of transaction processing from the existing DBCP pooling code, and gives - * the ManagedConnection a way to enlist connections in a transaction, allowing for the maximal rescue of DBCP. - * + *

The TransactionRegistry hides the details of transaction processing from the existing DBCP pooling code, and + * gives the ManagedConnection a way to enlist connections in a transaction, allowing for the maximal rescue of DBCP. + * * @author Dain Sundstrom * @version $Revision$ */ public class TransactionRegistry { - private final TransactionManager transactionManager; - private final Map caches = new WeakHashMap(); - private final Map xaResources = new WeakHashMap(); + + private final TransactionManager transactionManager; + private final Map caches = new WeakHashMap(); + private final Map xaResources = new WeakHashMap(); /** * Creates a TransactionRegistry for the specified transaction manager. + * * @param transactionManager the transaction manager used to enlist connections */ - public TransactionRegistry(TransactionManager transactionManager) { + public TransactionRegistry(TransactionManager transactionManager){ this.transactionManager = transactionManager; } /** - * Registers the association between a Connection and a XAResource. When a connection - * is enlisted in a transaction, it is actually the XAResource that is given to the transaction - * manager. - * + * Registers the association between a Connection and a XAResource. When a connection is enlisted in a transaction, + * it is actually the XAResource that is given to the transaction manager. + * * @param connection the JDBC connection * @param xaResource the XAResource which managed the connection within a transaction */ @@ -65,6 +64,7 @@ public class TransactionRegistry { /** * Gets the XAResource registered for the connection. + * * @param connection the connection * @return the XAResource registered for the connection; never null * @throws SQLException if the connection does not have a registered XAResource @@ -80,6 +80,7 @@ public class TransactionRegistry { /** * Gets the active TransactionContext or null if not Transaction is active. + * * @return the active TransactionContext or null if not Transaction is active * @throws SQLException if an error occurs while fetching the transaction */ @@ -115,10 +116,10 @@ public class TransactionRegistry { /** * Unregisters a destroyed connection from {@link TransactionRegistry} + * * @param connection */ public synchronized void unregisterConnection(Connection connection) { xaResources.remove(connection); } } - diff --git a/src/main/java/com/alibaba/druid/pool/xa/XAConnectionFactory.java b/src/main/java/com/alibaba/druid/pool/xa/XAConnectionFactory.java index 35aa84fa5e..d4e18a6027 100644 --- a/src/main/java/com/alibaba/druid/pool/xa/XAConnectionFactory.java +++ b/src/main/java/com/alibaba/druid/pool/xa/XAConnectionFactory.java @@ -21,36 +21,32 @@ import java.sql.SQLException; import com.alibaba.druid.pool.ConnectionFactory; /** - * XAConnectionFactory is an extension of ConnectionFactory used to create connections - * in a transaction managed environment. The XAConnectionFactory opperates like a normal - * ConnectionFactory except an TransactionRegistry is provided from which the XAResource - * for a connection can be obtained. This allows the existing DBCP pool code to work with - * XAConnections and gives a the ManagedConnection a way to enlist a connection in the - * the transaction. - * + * XAConnectionFactory is an extension of ConnectionFactory used to create connections in a transaction managed + * environment. The XAConnectionFactory opperates like a normal ConnectionFactory except an TransactionRegistry is + * provided from which the XAResource for a connection can be obtained. This allows the existing DBCP pool code to work + * with XAConnections and gives a the ManagedConnection a way to enlist a connection in the the transaction. + * * @author Dain Sundstrom * @author Rodney Waldhoff * @version $Revision$ */ public interface XAConnectionFactory extends ConnectionFactory { + /** - * Gets the TransactionRegistry for this connection factory which contains a the - * XAResource for every connection created by this factory. - * + * Gets the TransactionRegistry for this connection factory which contains a the XAResource for every connection + * created by this factory. + * * @return the transaction registry for this connection factory */ TransactionRegistry getTransactionRegistry(); /** - * Create a new {@link java.sql.Connection} in an implementation specific fashion. - *

- * An implementation can assume that the caller of this will wrap the connection in - * a proxy that protects access to the setAutoCommit, commit and rollback when - * enrolled in a XA transaction. - * + * Create a new {@link java.sql.Connection} in an implementation specific fashion.

An implementation can assume + * that the caller of this will wrap the connection in a proxy that protects access to the setAutoCommit, commit and + * rollback when enrolled in a XA transaction. + * * @return a new {@link java.sql.Connection} * @throws java.sql.SQLException if a database error occurs creating the connection */ Connection createConnection() throws SQLException; } - diff --git a/src/main/java/com/alibaba/druid/stat/JdbcConnectionStat.java b/src/main/java/com/alibaba/druid/stat/JdbcConnectionStat.java index 08a294d79e..6b22ed7c37 100644 --- a/src/main/java/com/alibaba/druid/stat/JdbcConnectionStat.java +++ b/src/main/java/com/alibaba/druid/stat/JdbcConnectionStat.java @@ -51,7 +51,7 @@ public class JdbcConnectionStat implements JdbcConnectionStatMBean { private final AtomicLong closeCount = new AtomicLong(0); // 执行Connection.close的计数 private final AtomicLong commitCount = new AtomicLong(0); // 执行commit的计数 private final AtomicLong rollbackCount = new AtomicLong(0); // 执行rollback的计数 - private final AtomicLong connectNanoSpan = new AtomicLong(0); // 连接建立消耗时间总和(纳秒) + private final AtomicLong connectNanoSpan = new AtomicLong(0); // 连接建立消耗时间总和(纳秒) public void reset() { concurrentCount.set(0); diff --git a/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceFilterTest.java b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceFilterTest.java index 669dda55f6..29b0151115 100644 --- a/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceFilterTest.java +++ b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceFilterTest.java @@ -6,23 +6,24 @@ import junit.framework.TestCase; import com.alibaba.druid.pool.DruidDataSource; public class DruidDataSourceFilterTest extends TestCase { + public void test_filter() throws Exception { DruidDataSource dataSource = new DruidDataSource(); - + Assert.assertEquals(0, dataSource.getFilters().size()); - + dataSource.setFilters("stat"); - + Assert.assertEquals(1, dataSource.getFilters().size()); } - + public void test_filter_2() throws Exception { DruidDataSource dataSource = new DruidDataSource(); - + Assert.assertEquals(0, dataSource.getFilters().size()); - + dataSource.setFilters("stat,trace"); - + Assert.assertEquals(2, dataSource.getFilters().size()); } } diff --git a/src/test/java/com/alibaba/druid/pool/benckmark/Case0.java b/src/test/java/com/alibaba/druid/pool/benckmark/Case0.java index b0f9339472..226ceb932f 100644 --- a/src/test/java/com/alibaba/druid/pool/benckmark/Case0.java +++ b/src/test/java/com/alibaba/druid/pool/benckmark/Case0.java @@ -31,17 +31,17 @@ import com.jolbox.bonecp.BoneCPDataSource; public class Case0 extends TestCase { - private String jdbcUrl; - private String user; - private String password; - private String driverClass; - private int initialSize = 10; - private int minPoolSize = 1; - private int maxPoolSize = 2; - private int maxActive = 2; - private String validationQuery = null; - - public final int LOOP_COUNT = 5; + private String jdbcUrl; + private String user; + private String password; + private String driverClass; + private int initialSize = 10; + private int minPoolSize = 1; + private int maxPoolSize = 2; + private int maxActive = 2; + private String validationQuery = null; + + public final int LOOP_COUNT = 5; protected void setUp() throws Exception { jdbcUrl = "jdbc:fake:dragoon_v25masterdb"; @@ -93,14 +93,14 @@ public class Case0 extends TestCase { } System.out.println(); } - + public void test_2() throws Exception { BoneCPDataSource dataSource = new BoneCPDataSource(); // dataSource.(10); // dataSource.setMaxActive(50); dataSource.setMinConnectionsPerPartition(minPoolSize); dataSource.setMaxConnectionsPerPartition(maxPoolSize); - + dataSource.setDriverClass(driverClass); dataSource.setJdbcUrl(jdbcUrl); // dataSource.setPoolPreparedStatements(true); @@ -109,7 +109,7 @@ public class Case0 extends TestCase { dataSource.setPassword(password); dataSource.setConnectionTestStatement("SELECT 1"); dataSource.setPartitionCount(1); - + for (int i = 0; i < LOOP_COUNT; ++i) { p0(dataSource, "boneCP"); }