You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by ar...@apache.org on 2003/05/09 14:50:38 UTC
cvs commit: db-ojb/src/test/org/apache/ojb/broker ConnectionFactoryTest.java AllTests.java
arminw 2003/05/09 05:50:37
Modified: src/test/org/apache/ojb/broker ConnectionFactoryTest.java
AllTests.java
Log:
add new test case
Revision Changes Path
1.2 +125 -3 db-ojb/src/test/org/apache/ojb/broker/ConnectionFactoryTest.java
Index: ConnectionFactoryTest.java
===================================================================
RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/broker/ConnectionFactoryTest.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ConnectionFactoryTest.java 5 May 2003 23:46:42 -0000 1.1
+++ ConnectionFactoryTest.java 9 May 2003 12:50:37 -0000 1.2
@@ -6,10 +6,17 @@
import org.apache.ojb.broker.accesslayer.ConnectionFactoryDBCPImpl;
import org.apache.ojb.broker.accesslayer.ConnectionFactoryFactory;
import org.apache.ojb.broker.accesslayer.ConnectionFactoryPooledImpl;
+import org.apache.ojb.broker.accesslayer.LookupException;
import org.apache.ojb.broker.metadata.JdbcConnectionDescriptor;
import org.apache.ojb.broker.metadata.MetadataManager;
+import org.apache.ojb.broker.query.Criteria;
+import org.apache.ojb.broker.query.QueryByCriteria;
+import org.apache.ojb.broker.query.QueryFactory;
+import org.apache.ojb.broker.util.sequence.HighLowSequence;
import java.sql.Connection;
+import java.util.ArrayList;
+import java.util.Collection;
/**
* ConnectionFactory implementation related tests.
@@ -68,7 +75,7 @@
MetadataManager mm = MetadataManager.getInstance();
JdbcConnectionDescriptor jcd = (JdbcConnectionDescriptor) SerializationUtils.clone(
broker.serviceConnectionManager().getConnectionDescriptor());
- jcd.setJcdAlias(factory.getName() + "_test_1");
+ jcd.setJcdAlias(factory.getName() + "_test_checkFactory_a");
jcd.setUseAutoCommit(2);
mm.connectionRepository().addDescriptor(jcd);
@@ -85,7 +92,7 @@
jcd = (JdbcConnectionDescriptor) SerializationUtils.clone(
broker.serviceConnectionManager().getConnectionDescriptor());
- jcd.setJcdAlias(factory.getName() + "_test_2");
+ jcd.setJcdAlias(factory.getName() + "_test_checkFactory_b");
jcd.setUseAutoCommit(1);
mm.connectionRepository().addDescriptor(jcd);
@@ -96,6 +103,121 @@
{
if (oldFac != null) fac.setClassToServe(oldFac);
}
+ }
+
+ public void testExhaustedPool() throws Exception
+ {
+ checkFactoryPoolExhausted(ConnectionFactoryPooledImpl.class);
+ checkFactoryPoolExhausted(ConnectionFactoryDBCPImpl.class);
+ }
+
+ private void checkFactoryPoolExhausted(Class factory) throws Exception
+ {
+ Class oldFac = null;
+ ConnectionFactoryFactory fac = null;
+ try
+ {
+ fac = ConnectionFactoryFactory.getInstance();
+ oldFac = fac.getClassToServe();
+ fac.setClassToServe(factory);
+ ConnectionFactory conFac = (ConnectionFactory) fac.createNewInstance();
+
+ MetadataManager mm = MetadataManager.getInstance();
+ JdbcConnectionDescriptor jcd = (JdbcConnectionDescriptor) SerializationUtils.clone(
+ broker.serviceConnectionManager().getConnectionDescriptor());
+ jcd.setJcdAlias(factory.getName() + "_test_checkFactoryPoolExhausted_1");
+ jcd.setUseAutoCommit(1);
+ jcd.getConnectionPoolDescriptor().setMaxActive(2);
+ jcd.getConnectionPoolDescriptor().setConnectionFactory(factory);
+ mm.connectionRepository().addDescriptor(jcd);
+
+ Connection con = null;
+ Connection con2 = null;
+ Connection con3 = null;
+ try
+ {
+ con = conFac.lookupConnection(jcd);
+ con2 = conFac.lookupConnection(jcd);
+ try
+ {
+ con3 = conFac.lookupConnection(jcd);
+ fail("We expect an exception indicating that the pool is exhausted");
+ }
+ catch (LookupException e)
+ {
+ // we expected that
+ assertTrue(true);
+ }
+ }
+ finally
+ {
+ try
+ {
+ con.close();
+ con2.close();
+ }
+ catch (Exception e)
+ {
+ }
+ }
+ }
+ finally
+ {
+ if (oldFac != null) fac.setClassToServe(oldFac);
+ }
+ }
+
+ public void testExhaustedPool2() throws Exception
+ {
+ PersistenceBroker pb = null;
+ if (!(broker.serviceConnectionManager().
+ getConnectionDescriptor().getConnectionPoolDescriptor().
+ getWhenExhaustedAction() == 0))
+ {
+ // skip test
+ System.out.println("** Skip " + this.getName() +
+ "#testExhaustedPool2 need whenExhaustedAction=0 in configuration **");
+ return;
+ }
+
+ PersistenceBroker[] pbArr = new PersistenceBroker[50];
+ try
+ {
+ try
+ {
+ for (int i = 0; i < 50; i++)
+ {
+ pb = PersistenceBrokerFactory.defaultPersistenceBroker();
+ pbArr[i] = pb;
+ doSampleQuery(pb);
+ }
+ fail("Exception expected - connection pool should be exhausted");
+ }
+ catch (PersistenceBrokerException e)
+ {
+ // expected
+ assertTrue(true);
+ }
+ }
+ finally
+ {
+ for (int i = 0; i < pbArr.length; i++)
+ {
+ PersistenceBroker broker = pbArr[i];
+ if (broker != null) broker.close();
+ }
+ }
+
+ }
+
+ private Collection doSampleQuery(PersistenceBroker pb)
+ {
+ Criteria crit = new Criteria();
+ Collection results = new ArrayList();
+ crit.addGreaterOrEqualThan("grabSize", new Integer(5));
+ QueryByCriteria q = QueryFactory.newQuery(HighLowSequence.class, crit);
+ results = pb.getCollectionByQuery(q);
+ return results;
}
1.26 +1 -0 db-ojb/src/test/org/apache/ojb/broker/AllTests.java
Index: AllTests.java
===================================================================
RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/broker/AllTests.java,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- AllTests.java 29 Apr 2003 15:43:26 -0000 1.25
+++ AllTests.java 9 May 2003 12:50:37 -0000 1.26
@@ -74,6 +74,7 @@
suite.addTest(new TestSuite(ReferenceTest.class));
suite.addTest(new TestSuite(ExtentAwarePathExpressionsTest.class));
suite.addTest(new TestSuite(RepositoryElementsTest.class));
+ suite.addTest(new TestSuite(ConnectionFactoryTest.class));
return suite;
}