You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by le...@apache.org on 2002/01/24 03:56:21 UTC
cvs commit: jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/pool/test ClassInstanceObjectFactory.java PoolableTestObject.java ResourceLimitingPoolMultithreadMaxStrictBlockTestCase.java ResourceLimitingPoolMultithreadMaxStrictTestCase.java ResourceLimitingPoolMultithreadMaxTestCase.java ResourceLimitingPoolMultithreadTestCase.java ResourceLimitingPoolTestCase.java
leif 02/01/23 18:56:21
Added: src/scratchpad/org/apache/avalon/excalibur/pool/test
ClassInstanceObjectFactory.java
PoolableTestObject.java
ResourceLimitingPoolMultithreadMaxStrictBlockTestCase.java
ResourceLimitingPoolMultithreadMaxStrictTestCase.java
ResourceLimitingPoolMultithreadMaxTestCase.java
ResourceLimitingPoolMultithreadTestCase.java
ResourceLimitingPoolTestCase.java
Log:
Add tests for ResourceLimiting Pools.
Revision Changes Path
1.1 jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/pool/test/ClassInstanceObjectFactory.java
Index: ClassInstanceObjectFactory.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.avalon.excalibur.pool.test;
import java.util.HashMap;
import org.apache.avalon.excalibur.pool.ObjectFactory;
import org.apache.avalon.framework.logger.Logger;
/**
* @author <a href="mailto:leif@silveregg.co.jp">Leif Mortenson</a>
* @version CVS $Revision: 1.1 $ $Date: 2002/01/24 02:56:21 $
* @since 4.0
*/
public class ClassInstanceObjectFactory
implements ObjectFactory
{
private HashMap m_instances = new HashMap();
private Logger m_logger;
private Class m_clazz;
private int m_id;
/*---------------------------------------------------------------
* Constructors
*-------------------------------------------------------------*/
/**
* Creates a reproducable log of activity in the provided StringBuffer
*/
public ClassInstanceObjectFactory( Class clazz, Logger logger )
{
m_clazz = clazz;
m_logger = logger;
m_id = 1;
}
/*---------------------------------------------------------------
* ObjectFactory Methods
*-------------------------------------------------------------*/
public Object newInstance() throws Exception
{
Object object = m_clazz.newInstance();
Integer id = new Integer( m_id++ );
m_instances.put( object, id );
m_logger.debug( "ClassInstanceObjectFactory.newInstance() id:" + id );
return object;
}
public Class getCreatedClass()
{
return m_clazz;
}
public void decommission( Object object ) throws Exception
{
Integer id = (Integer)m_instances.remove( object );
m_logger.debug( "ClassInstanceObjectFactory.decommission(a "
+ object.getClass().getName() + ") id:" + id );
}
}
1.1 jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/pool/test/PoolableTestObject.java
Index: PoolableTestObject.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.avalon.excalibur.pool.test;
import org.apache.avalon.excalibur.pool.Poolable;
/**
* @author <a href="mailto:leif@silveregg.co.jp">Leif Mortenson</a>
* @version CVS $Revision: 1.1 $ $Date: 2002/01/24 02:56:21 $
* @since 4.0
*/
public class PoolableTestObject implements Poolable
{
}
1.1 jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/pool/test/ResourceLimitingPoolMultithreadMaxStrictBlockTestCase.java
Index: ResourceLimitingPoolMultithreadMaxStrictBlockTestCase.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.avalon.excalibur.pool.test;
import com.clarkware.junitperf.ConstantTimer;
import com.clarkware.junitperf.LoadTest;
import com.clarkware.junitperf.TimedTest;
import com.clarkware.junitperf.Timer;
import junit.extensions.TestSetup;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.apache.avalon.excalibur.logger.BufferedLogger;
import org.apache.avalon.excalibur.pool.Poolable;
import org.apache.avalon.excalibur.pool.ResourceLimitingPool;
/**
* @author <a href="mailto:leif@silveregg.co.jp">Leif Mortenson</a>
* @version CVS $Revision: 1.1 $ $Date: 2002/01/24 02:56:21 $
* @since 4.0
*/
public final class ResourceLimitingPoolMultithreadMaxStrictBlockTestCase extends TestCase
{
private static BufferedLogger m_logger;
private static ClassInstanceObjectFactory m_factory;
private static ResourceLimitingPool m_pool;
/*---------------------------------------------------------------
* Constructors
*-------------------------------------------------------------*/
public ResourceLimitingPoolMultithreadMaxStrictBlockTestCase()
{
this( "ResourceLimitingPool Multithreaded Max Size Strict Blocking Test Case" );
}
public ResourceLimitingPoolMultithreadMaxStrictBlockTestCase( final String name )
{
super( name );
}
/*---------------------------------------------------------------
* Suite
*-------------------------------------------------------------*/
public static Test suite()
{
TestSuite suite = new TestSuite();
Timer timer = new ConstantTimer( 100 );
int maxUsers = 10;
int iterations = 10;
long maxElapsedTime = 20000;
Test testCase = new ResourceLimitingPoolMultithreadMaxStrictBlockTestCase( "testGetPut" );
Test loadTest = new LoadTest( testCase, maxUsers, iterations, timer );
Test timedTest = new TimedTest( loadTest, maxElapsedTime );
suite.addTest( timedTest );
TestSetup wrapper= new TestSetup(suite)
{
public void setUp()
{
oneTimeSetUp();
}
public void tearDown() throws Exception
{
oneTimeTearDown();
}
};
return wrapper;
}
public static void oneTimeSetUp()
{
m_logger = new BufferedLogger();
m_factory = new ClassInstanceObjectFactory( PoolableTestObject.class, m_logger );
m_pool = new ResourceLimitingPool( m_factory, 3, true, true, 0, 0 );
m_pool.enableLogging( m_logger );
}
public static void oneTimeTearDown() throws Exception
{
// The timing of this test makes it so the pool should grow to 4 elements
assertEquals( "1) Pool Ready Size", 3, m_pool.getReadySize() );
assertEquals( "1) Pool Size", 3, m_pool.getSize() );
// Make sure that each of the objects are uniqe by checking them all back out.
Poolable p1 = m_pool.get();
Poolable p2 = m_pool.get();
Poolable p3 = m_pool.get();
assertEquals( "2) Pool Ready Size", 0, m_pool.getReadySize() );
assertEquals( "2) Pool Size", 3, m_pool.getSize() );
assertTrue( "p1 != p2", p1 != p2 );
assertTrue( "p1 != p3", p1 != p3 );
assertTrue( "p2 != p3", p2 != p3 );
m_pool.put( p1 );
m_pool.put( p2 );
m_pool.put( p3 );
assertEquals( "3) Pool Ready Size", 3, m_pool.getReadySize() );
assertEquals( "3) Pool Size", 3, m_pool.getSize() );
m_pool.dispose();
assertEquals( "4) Pool Ready Size", 0, m_pool.getReadySize() );
assertEquals( "4) Pool Size", 0, m_pool.getSize() );
}
/*---------------------------------------------------------------
* TestCases
*-------------------------------------------------------------*/
public void testGetPut() throws Exception
{
Poolable p = m_pool.get();
// We can't check the exact pool size, but make sure that it never gets over 3
assertTrue( "Pool size <= 3", m_pool.getSize() <= 3 );
try
{
Thread.sleep( 33 );
}
catch (InterruptedException e) {}
m_pool.put( p );
}
}
1.1 jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/pool/test/ResourceLimitingPoolMultithreadMaxStrictTestCase.java
Index: ResourceLimitingPoolMultithreadMaxStrictTestCase.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.avalon.excalibur.pool.test;
import com.clarkware.junitperf.ConstantTimer;
import com.clarkware.junitperf.LoadTest;
import com.clarkware.junitperf.TimedTest;
import com.clarkware.junitperf.Timer;
import junit.extensions.TestSetup;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.apache.avalon.excalibur.logger.BufferedLogger;
import org.apache.avalon.excalibur.pool.Poolable;
import org.apache.avalon.excalibur.pool.ResourceLimitingPool;
/**
* @author <a href="mailto:leif@silveregg.co.jp">Leif Mortenson</a>
* @version CVS $Revision: 1.1 $ $Date: 2002/01/24 02:56:21 $
* @since 4.0
*/
public final class ResourceLimitingPoolMultithreadMaxStrictTestCase extends TestCase
{
private static BufferedLogger m_logger;
private static ClassInstanceObjectFactory m_factory;
private static ResourceLimitingPool m_pool;
/*---------------------------------------------------------------
* Constructors
*-------------------------------------------------------------*/
public ResourceLimitingPoolMultithreadMaxStrictTestCase()
{
this( "ResourceLimitingPool Multithreaded Max Size Strict Test Case" );
}
public ResourceLimitingPoolMultithreadMaxStrictTestCase( final String name )
{
super( name );
}
/*---------------------------------------------------------------
* Suite
*-------------------------------------------------------------*/
public static Test suite()
{
TestSuite suite = new TestSuite();
Timer timer = new ConstantTimer( 100 );
int maxUsers = 50;
int iterations = 10;
long maxElapsedTime = 20000;
Test testCase = new ResourceLimitingPoolMultithreadMaxStrictTestCase( "testGetPut" );
Test loadTest = new LoadTest( testCase, maxUsers, iterations, timer );
Test timedTest = new TimedTest( loadTest, maxElapsedTime );
suite.addTest( timedTest );
TestSetup wrapper= new TestSetup( suite )
{
public void setUp()
{
oneTimeSetUp();
}
public void tearDown() throws Exception
{
oneTimeTearDown();
}
};
return wrapper;
}
public static void oneTimeSetUp()
{
m_logger = new BufferedLogger();
m_factory = new ClassInstanceObjectFactory( PoolableTestObject.class, m_logger );
m_pool = new ResourceLimitingPool( m_factory, 3, true, false, 0, 0 );
m_pool.enableLogging( m_logger );
}
public static void oneTimeTearDown() throws Exception
{
// The timing of this test makes it so the pool should grow to 4 elements
assertEquals( "1) Pool Ready Size", 3, m_pool.getReadySize() );
assertEquals( "1) Pool Size", 3, m_pool.getSize() );
// Make sure that each of the objects are uniqe by checking them all back out.
Poolable p1 = m_pool.get();
Poolable p2 = m_pool.get();
Poolable p3 = m_pool.get();
assertEquals( "2) Pool Ready Size", 0, m_pool.getReadySize() );
assertEquals( "2) Pool Size", 3, m_pool.getSize() );
assertTrue( "p1 != p2", p1 != p2 );
assertTrue( "p1 != p3", p1 != p3 );
assertTrue( "p2 != p3", p2 != p3 );
m_pool.put( p1 );
m_pool.put( p2 );
m_pool.put( p3 );
assertEquals( "3) Pool Ready Size", 3, m_pool.getReadySize() );
assertEquals( "3) Pool Size", 3, m_pool.getSize() );
m_pool.dispose();
assertEquals( "4) Pool Ready Size", 0, m_pool.getReadySize() );
assertEquals( "4) Pool Size", 0, m_pool.getSize() );
}
/*---------------------------------------------------------------
* TestCases
*-------------------------------------------------------------*/
public void testGetPut() throws Exception
{
Poolable p;
try
{
p = m_pool.get();
}
catch ( Exception e )
{
// We will sometimes fail to get an object
assertEquals( "Exception calling get()",
"Could not create enough Components to service your request.",
e.getMessage() );
return;
}
// We can't check the exact pool size, but make sure that it never gets over 3
assertTrue( "Pool size <= 3", m_pool.getSize() <= 3 );
try
{
Thread.sleep( 33 );
} catch ( InterruptedException e ) {}
m_pool.put( p );
}
}
1.1 jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/pool/test/ResourceLimitingPoolMultithreadMaxTestCase.java
Index: ResourceLimitingPoolMultithreadMaxTestCase.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.avalon.excalibur.pool.test;
import com.clarkware.junitperf.ConstantTimer;
import com.clarkware.junitperf.LoadTest;
import com.clarkware.junitperf.TimedTest;
import com.clarkware.junitperf.Timer;
import junit.extensions.TestSetup;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.apache.avalon.excalibur.logger.BufferedLogger;
import org.apache.avalon.excalibur.pool.Poolable;
import org.apache.avalon.excalibur.pool.ResourceLimitingPool;
/**
* @author <a href="mailto:leif@silveregg.co.jp">Leif Mortenson</a>
* @version CVS $Revision: 1.1 $ $Date: 2002/01/24 02:56:21 $
* @since 4.0
*/
public final class ResourceLimitingPoolMultithreadMaxTestCase
extends TestCase
{
private static BufferedLogger m_logger;
private static ClassInstanceObjectFactory m_factory;
private static ResourceLimitingPool m_pool;
/*---------------------------------------------------------------
* Constructors
*-------------------------------------------------------------*/
public ResourceLimitingPoolMultithreadMaxTestCase()
{
this( "ResourceLimitingPool Multithreaded Max Size Test Case" );
}
public ResourceLimitingPoolMultithreadMaxTestCase( final String name )
{
super( name );
}
/*---------------------------------------------------------------
* Suite
*-------------------------------------------------------------*/
public static Test suite()
{
TestSuite suite = new TestSuite();
Timer timer = new ConstantTimer( 100 );
int maxUsers = 50;
int iterations = 10;
long maxElapsedTime = 20000;
Test testCase = new ResourceLimitingPoolMultithreadMaxTestCase( "testGetPut" );
Test loadTest = new LoadTest( testCase, maxUsers, iterations, timer );
Test timedTest = new TimedTest( loadTest, maxElapsedTime );
suite.addTest( timedTest );
TestSetup wrapper= new TestSetup( suite )
{
public void setUp()
{
oneTimeSetUp();
}
public void tearDown() throws Exception
{
oneTimeTearDown();
}
};
return wrapper;
}
public static void oneTimeSetUp()
{
m_logger = new BufferedLogger();
m_factory = new ClassInstanceObjectFactory( PoolableTestObject.class, m_logger );
m_pool = new ResourceLimitingPool( m_factory, 3, false, false, 0, 0 );
m_pool.enableLogging( m_logger );
}
public static void oneTimeTearDown() throws Exception
{
// The timing of this test makes it so the pool should grow to 4 elements
assertEquals( "1) Pool Ready Size", 3, m_pool.getReadySize() );
assertEquals( "1) Pool Size", 3, m_pool.getSize() );
// Make sure that each of the objects are uniqe by checking them all back out.
Poolable p1 = m_pool.get();
Poolable p2 = m_pool.get();
Poolable p3 = m_pool.get();
assertEquals( "2) Pool Ready Size", 0, m_pool.getReadySize() );
assertEquals( "2) Pool Size", 3, m_pool.getSize() );
assertTrue( "p1 != p2", p1 != p2 );
assertTrue( "p1 != p3", p1 != p3 );
assertTrue( "p2 != p3", p2 != p3 );
m_pool.put( p1 );
m_pool.put( p2 );
m_pool.put( p3 );
assertEquals( "3) Pool Ready Size", 3, m_pool.getReadySize() );
assertEquals( "3) Pool Size", 3, m_pool.getSize() );
m_pool.dispose();
assertEquals( "4) Pool Ready Size", 0, m_pool.getReadySize() );
assertEquals( "4) Pool Size", 0, m_pool.getSize() );
}
/*---------------------------------------------------------------
* TestCases
*-------------------------------------------------------------*/
public void testGetPut() throws Exception
{
Poolable p = m_pool.get();
try
{
Thread.sleep(33);
} catch ( InterruptedException e ) {}
m_pool.put( p );
}
}
1.1 jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/pool/test/ResourceLimitingPoolMultithreadTestCase.java
Index: ResourceLimitingPoolMultithreadTestCase.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.avalon.excalibur.pool.test;
import com.clarkware.junitperf.ConstantTimer;
import com.clarkware.junitperf.LoadTest;
import com.clarkware.junitperf.TimedTest;
import com.clarkware.junitperf.Timer;
import junit.extensions.TestSetup;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.apache.avalon.excalibur.logger.BufferedLogger;
import org.apache.avalon.excalibur.pool.Poolable;
import org.apache.avalon.excalibur.pool.ResourceLimitingPool;
/**
* @author <a href="mailto:leif@silveregg.co.jp">Leif Mortenson</a>
* @version CVS $Revision: 1.1 $ $Date: 2002/01/24 02:56:21 $
* @since 4.0
*/
public final class ResourceLimitingPoolMultithreadTestCase
extends TestCase
{
private static BufferedLogger m_logger;
private static ClassInstanceObjectFactory m_factory;
private static ResourceLimitingPool m_pool;
/*---------------------------------------------------------------
* Constructors
*-------------------------------------------------------------*/
public ResourceLimitingPoolMultithreadTestCase()
{
this( "ResourceLimitingPool Multithreaded Test Case" );
}
public ResourceLimitingPoolMultithreadTestCase( final String name )
{
super( name );
}
/*---------------------------------------------------------------
* Suite
*-------------------------------------------------------------*/
public static Test suite()
{
TestSuite suite = new TestSuite();
Timer timer = new ConstantTimer( 100 );
int maxUsers = 10;
int iterations = 10;
long maxElapsedTime = 20000;
Test testCase = new ResourceLimitingPoolMultithreadTestCase( "testGetPut" );
Test loadTest = new LoadTest( testCase, maxUsers, iterations, timer );
Test timedTest = new TimedTest( loadTest, maxElapsedTime );
suite.addTest( timedTest );
TestSetup wrapper= new TestSetup( suite )
{
public void setUp()
{
oneTimeSetUp();
}
public void tearDown() throws Exception
{
oneTimeTearDown();
}
};
return wrapper;
}
public static void oneTimeSetUp()
{
m_logger = new BufferedLogger();
m_factory = new ClassInstanceObjectFactory( PoolableTestObject.class, m_logger );
m_pool = new ResourceLimitingPool( m_factory, 0, false, false, 0, 0 );
m_pool.enableLogging( m_logger );
}
public static void oneTimeTearDown() throws Exception
{
// The timing of this test makes it so the pool should grow to 4 elements
assertEquals( "1) Pool Ready Size", 4, m_pool.getReadySize() );
assertEquals( "1) Pool Size", 4, m_pool.getSize() );
// Make sure that each of the objects are uniqe by checking them all back out.
Poolable p1 = m_pool.get();
Poolable p2 = m_pool.get();
Poolable p3 = m_pool.get();
Poolable p4 = m_pool.get();
assertEquals( "2) Pool Ready Size", 0, m_pool.getReadySize() );
assertEquals( "2) Pool Size", 4, m_pool.getSize() );
assertTrue( "p1 != p2", p1 != p2 );
assertTrue( "p1 != p3", p1 != p3 );
assertTrue( "p1 != p4", p1 != p4 );
assertTrue( "p2 != p3", p2 != p3 );
assertTrue( "p2 != p4", p2 != p4 );
assertTrue( "p3 != p4", p3 != p4 );
m_pool.put( p1 );
m_pool.put( p2 );
m_pool.put( p3 );
m_pool.put( p4 );
assertEquals( "3) Pool Ready Size", 4, m_pool.getReadySize() );
assertEquals( "3) Pool Size", 4, m_pool.getSize() );
m_pool.dispose();
assertEquals( "4) Pool Ready Size", 0, m_pool.getReadySize() );
assertEquals( "4) Pool Size", 0, m_pool.getSize() );
}
/*---------------------------------------------------------------
* TestCases
*-------------------------------------------------------------*/
public void testGetPut() throws Exception
{
Poolable p = m_pool.get();
try
{
Thread.sleep(33);
}
catch ( InterruptedException e ) {}
m_pool.put( p );
}
}
1.1 jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/pool/test/ResourceLimitingPoolTestCase.java
Index: ResourceLimitingPoolTestCase.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.avalon.excalibur.pool.test;
import junit.framework.TestCase;
import org.apache.avalon.excalibur.logger.BufferedLogger;
import org.apache.avalon.excalibur.pool.Poolable;
import org.apache.avalon.excalibur.pool.ResourceLimitingPool;
/**
* @author <a href="mailto:leif@silveregg.co.jp">Leif Mortenson</a>
* @version CVS $Revision: 1.1 $ $Date: 2002/01/24 02:56:21 $
* @since 4.0
*/
public final class ResourceLimitingPoolTestCase extends TestCase
{
/*---------------------------------------------------------------
* Constructors
*-------------------------------------------------------------*/
public ResourceLimitingPoolTestCase()
{
this( "ResourceLimitingPool Test Case" );
}
public ResourceLimitingPoolTestCase( final String name )
{
super( name );
}
/*---------------------------------------------------------------
* TestCases
*-------------------------------------------------------------*/
public void testCreateDestroy()
{
BufferedLogger logger = new BufferedLogger();
ClassInstanceObjectFactory factory =
new ClassInstanceObjectFactory( PoolableTestObject.class, logger );
ResourceLimitingPool pool = new ResourceLimitingPool( factory, 0, false, false, 0, 0 );
pool.enableLogging( logger );
pool.dispose();
// Make sure the logger output check out.
assertEquals(
logger.toString(),
""
);
}
public void testSingleGetPut() throws Exception
{
BufferedLogger logger = new BufferedLogger();
ClassInstanceObjectFactory factory =
new ClassInstanceObjectFactory( PoolableTestObject.class, logger );
ResourceLimitingPool pool = new ResourceLimitingPool( factory, 0, false, false, 0, 0 );
pool.enableLogging( logger );
assertEquals( "1) Pool Ready Size", 0, pool.getReadySize() );
assertEquals( "1) Pool Size", 0, pool.getSize() );
Poolable p = pool.get();
assertEquals( "2) Pool Ready Size", 0, pool.getReadySize() );
assertEquals( "2) Pool Size", 1, pool.getSize() );
pool.put(p);
assertEquals( "3) Pool Ready Size", 1, pool.getReadySize() );
assertEquals( "3) Pool Size", 1, pool.getSize() );
pool.dispose();
// Make sure the logger output check out.
assertEquals( "Logger output",
"DEBUG - ClassInstanceObjectFactory.newInstance() id:1\n" +
"DEBUG - Created a new org.apache.avalon.excalibur.pool.test.PoolableTestObject from the object factory.\n" +
"DEBUG - Got a org.apache.avalon.excalibur.pool.test.PoolableTestObject from the pool.\n" +
"DEBUG - Put a org.apache.avalon.excalibur.pool.test.PoolableTestObject back into the pool.\n" +
"DEBUG - ClassInstanceObjectFactory.decommission(a org.apache.avalon.excalibur.pool.test.PoolableTestObject) id:1\n",
logger.toString()
);
}
public void testSingleGetPutPoolCheck() throws Exception
{
BufferedLogger logger = new BufferedLogger();
ClassInstanceObjectFactory factory =
new ClassInstanceObjectFactory( PoolableTestObject.class, logger );
ResourceLimitingPool pool = new ResourceLimitingPool( factory, 0, false, false, 0, 0 );
pool.enableLogging( logger );
assertEquals( "1) Pool Ready Size", 0, pool.getReadySize() );
assertEquals( "1) Pool Size", 0, pool.getSize() );
Poolable p1 = pool.get();
assertEquals( "2) Pool Ready Size", 0, pool.getReadySize() );
assertEquals( "2) Pool Size", 1, pool.getSize() );
pool.put( p1 );
assertEquals( "3) Pool Ready Size", 1, pool.getReadySize() );
assertEquals( "3) Pool Size", 1, pool.getSize() );
Poolable p2 = pool.get();
assertEquals( "4) Pool Ready Size", 0, pool.getReadySize() );
assertEquals( "4) Pool Size", 1, pool.getSize() );
assertEquals( "Pooled Object reuse check", p1, p2 );
pool.put( p2 );
assertEquals( "5) Pool Ready Size", 1, pool.getReadySize() );
assertEquals( "5) Pool Size", 1, pool.getSize() );
pool.dispose();
// Make sure the logger output check out.
assertEquals( "Logger output",
"DEBUG - ClassInstanceObjectFactory.newInstance() id:1\n" +
"DEBUG - Created a new org.apache.avalon.excalibur.pool.test.PoolableTestObject from the object factory.\n" +
"DEBUG - Got a org.apache.avalon.excalibur.pool.test.PoolableTestObject from the pool.\n" +
"DEBUG - Put a org.apache.avalon.excalibur.pool.test.PoolableTestObject back into the pool.\n" +
"DEBUG - Got a org.apache.avalon.excalibur.pool.test.PoolableTestObject from the pool.\n" +
"DEBUG - Put a org.apache.avalon.excalibur.pool.test.PoolableTestObject back into the pool.\n" +
"DEBUG - ClassInstanceObjectFactory.decommission(a org.apache.avalon.excalibur.pool.test.PoolableTestObject) id:1\n",
logger.toString()
);
}
public void testMultipleGetPut() throws Exception
{
BufferedLogger logger = new BufferedLogger();
ClassInstanceObjectFactory factory =
new ClassInstanceObjectFactory( PoolableTestObject.class, logger );
ResourceLimitingPool pool = new ResourceLimitingPool( factory, 0, false, false, 0, 0 );
pool.enableLogging( logger );
assertEquals( "1) Pool Ready Size", 0, pool.getReadySize() );
assertEquals( "1) Pool Size", 0, pool.getSize() );
Poolable p1 = pool.get();
assertEquals( "2) Pool Ready Size", 0, pool.getReadySize() );
assertEquals( "2) Pool Size", 1, pool.getSize() );
Poolable p2 = pool.get();
assertEquals( "3) Pool Ready Size", 0, pool.getReadySize() );
assertEquals( "3) Pool Size", 2, pool.getSize() );
pool.put( p1 );
assertEquals( "4) Pool Ready Size", 1, pool.getReadySize() );
assertEquals( "4) Pool Size", 2, pool.getSize() );
pool.put( p2 );
assertEquals( "5) Pool Ready Size", 2, pool.getReadySize() );
assertEquals( "5) Pool Size", 2, pool.getSize() );
pool.dispose();
// Make sure the logger output check out.
assertEquals( "Logger output",
"DEBUG - ClassInstanceObjectFactory.newInstance() id:1\n" +
"DEBUG - Created a new org.apache.avalon.excalibur.pool.test.PoolableTestObject from the object factory.\n" +
"DEBUG - Got a org.apache.avalon.excalibur.pool.test.PoolableTestObject from the pool.\n" +
"DEBUG - ClassInstanceObjectFactory.newInstance() id:2\n" +
"DEBUG - Created a new org.apache.avalon.excalibur.pool.test.PoolableTestObject from the object factory.\n" +
"DEBUG - Got a org.apache.avalon.excalibur.pool.test.PoolableTestObject from the pool.\n" +
"DEBUG - Put a org.apache.avalon.excalibur.pool.test.PoolableTestObject back into the pool.\n" +
"DEBUG - Put a org.apache.avalon.excalibur.pool.test.PoolableTestObject back into the pool.\n" +
"DEBUG - ClassInstanceObjectFactory.decommission(a org.apache.avalon.excalibur.pool.test.PoolableTestObject) id:1\n" +
"DEBUG - ClassInstanceObjectFactory.decommission(a org.apache.avalon.excalibur.pool.test.PoolableTestObject) id:2\n",
logger.toString()
);
}
}
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>