📄 testgenericobjectpool.java
字号:
}
public void testSettersAndGetters() throws Exception {
GenericObjectPool pool = new GenericObjectPool();
{
pool.setFactory(new SimpleFactory());
}
{
pool.setMaxActive(123);
assertEquals(123,pool.getMaxActive());
}
{
pool.setMaxIdle(12);
assertEquals(12,pool.getMaxIdle());
}
{
pool.setMaxWait(1234L);
assertEquals(1234L,pool.getMaxWait());
}
{
pool.setMinEvictableIdleTimeMillis(12345L);
assertEquals(12345L,pool.getMinEvictableIdleTimeMillis());
}
{
pool.setNumTestsPerEvictionRun(11);
assertEquals(11,pool.getNumTestsPerEvictionRun());
}
{
pool.setTestOnBorrow(true);
assertTrue(pool.getTestOnBorrow());
pool.setTestOnBorrow(false);
assertTrue(!pool.getTestOnBorrow());
}
{
pool.setTestOnReturn(true);
assertTrue(pool.getTestOnReturn());
pool.setTestOnReturn(false);
assertTrue(!pool.getTestOnReturn());
}
{
pool.setTestWhileIdle(true);
assertTrue(pool.getTestWhileIdle());
pool.setTestWhileIdle(false);
assertTrue(!pool.getTestWhileIdle());
}
{
pool.setTimeBetweenEvictionRunsMillis(11235L);
assertEquals(11235L,pool.getTimeBetweenEvictionRunsMillis());
}
{
pool.setWhenExhaustedAction(GenericObjectPool.WHEN_EXHAUSTED_BLOCK);
assertEquals(GenericObjectPool.WHEN_EXHAUSTED_BLOCK,pool.getWhenExhaustedAction());
pool.setWhenExhaustedAction(GenericObjectPool.WHEN_EXHAUSTED_FAIL);
assertEquals(GenericObjectPool.WHEN_EXHAUSTED_FAIL,pool.getWhenExhaustedAction());
pool.setWhenExhaustedAction(GenericObjectPool.WHEN_EXHAUSTED_GROW);
assertEquals(GenericObjectPool.WHEN_EXHAUSTED_GROW,pool.getWhenExhaustedAction());
}
}
public void testDefaultConfiguration() throws Exception {
GenericObjectPool pool = new GenericObjectPool();
assertConfiguration(new GenericObjectPool.Config(),pool);
}
public void testConstructors() throws Exception {
{
GenericObjectPool pool = new GenericObjectPool();
assertConfiguration(new GenericObjectPool.Config(),pool);
}
{
GenericObjectPool pool = new GenericObjectPool(new SimpleFactory());
assertConfiguration(new GenericObjectPool.Config(),pool);
}
{
GenericObjectPool.Config expected = new GenericObjectPool.Config();
expected.maxActive = 2;
expected.maxIdle = 3;
expected.maxWait = 5L;
expected.minEvictableIdleTimeMillis = 7L;
expected.numTestsPerEvictionRun = 9;
expected.testOnBorrow = true;
expected.testOnReturn = true;
expected.testWhileIdle = true;
expected.timeBetweenEvictionRunsMillis = 11L;
expected.whenExhaustedAction = GenericObjectPool.WHEN_EXHAUSTED_GROW;
GenericObjectPool pool = new GenericObjectPool(null,expected);
assertConfiguration(expected,pool);
}
{
GenericObjectPool.Config expected = new GenericObjectPool.Config();
expected.maxActive = 2;
GenericObjectPool pool = new GenericObjectPool(null,expected.maxActive);
assertConfiguration(expected,pool);
}
{
GenericObjectPool.Config expected = new GenericObjectPool.Config();
expected.maxActive = 2;
expected.maxWait = 5L;
expected.whenExhaustedAction = GenericObjectPool.WHEN_EXHAUSTED_GROW;
GenericObjectPool pool = new GenericObjectPool(null,expected.maxActive,expected.whenExhaustedAction,expected.maxWait);
assertConfiguration(expected,pool);
}
{
GenericObjectPool.Config expected = new GenericObjectPool.Config();
expected.maxActive = 2;
expected.maxWait = 5L;
expected.testOnBorrow = true;
expected.testOnReturn = true;
expected.whenExhaustedAction = GenericObjectPool.WHEN_EXHAUSTED_GROW;
GenericObjectPool pool = new GenericObjectPool(null,expected.maxActive,expected.whenExhaustedAction,expected.maxWait,expected.testOnBorrow,expected.testOnReturn);
assertConfiguration(expected,pool);
}
{
GenericObjectPool.Config expected = new GenericObjectPool.Config();
expected.maxActive = 2;
expected.maxIdle = 3;
expected.maxWait = 5L;
expected.whenExhaustedAction = GenericObjectPool.WHEN_EXHAUSTED_GROW;
GenericObjectPool pool = new GenericObjectPool(null,expected.maxActive,expected.whenExhaustedAction,expected.maxWait,expected.maxIdle);
assertConfiguration(expected,pool);
}
{
GenericObjectPool.Config expected = new GenericObjectPool.Config();
expected.maxActive = 2;
expected.maxIdle = 3;
expected.maxWait = 5L;
expected.whenExhaustedAction = GenericObjectPool.WHEN_EXHAUSTED_GROW;
expected.testOnBorrow = true;
expected.testOnReturn = true;
GenericObjectPool pool = new GenericObjectPool(null,expected.maxActive,expected.whenExhaustedAction,expected.maxWait,expected.maxIdle,expected.testOnBorrow,expected.testOnReturn);
assertConfiguration(expected,pool);
}
{
GenericObjectPool.Config expected = new GenericObjectPool.Config();
expected.maxActive = 2;
expected.maxIdle = 3;
expected.maxWait = 5L;
expected.minEvictableIdleTimeMillis = 7L;
expected.numTestsPerEvictionRun = 9;
expected.testOnBorrow = true;
expected.testOnReturn = true;
expected.testWhileIdle = true;
expected.timeBetweenEvictionRunsMillis = 11L;
expected.whenExhaustedAction = GenericObjectPool.WHEN_EXHAUSTED_GROW;
GenericObjectPool pool = new GenericObjectPool(null,expected.maxActive, expected.whenExhaustedAction, expected.maxWait, expected.maxIdle, expected.testOnBorrow, expected.testOnReturn, expected.timeBetweenEvictionRunsMillis, expected.numTestsPerEvictionRun, expected.minEvictableIdleTimeMillis, expected.testWhileIdle);
assertConfiguration(expected,pool);
}
{
GenericObjectPool.Config expected = new GenericObjectPool.Config();
expected.maxActive = 2;
expected.maxIdle = 3;
expected.minIdle = 1;
expected.maxWait = 5L;
expected.minEvictableIdleTimeMillis = 7L;
expected.numTestsPerEvictionRun = 9;
expected.testOnBorrow = true;
expected.testOnReturn = true;
expected.testWhileIdle = true;
expected.timeBetweenEvictionRunsMillis = 11L;
expected.whenExhaustedAction = GenericObjectPool.WHEN_EXHAUSTED_GROW;
GenericObjectPool pool = new GenericObjectPool(null,expected.maxActive, expected.whenExhaustedAction, expected.maxWait, expected.maxIdle, expected.minIdle, expected.testOnBorrow, expected.testOnReturn, expected.timeBetweenEvictionRunsMillis, expected.numTestsPerEvictionRun, expected.minEvictableIdleTimeMillis, expected.testWhileIdle);
assertConfiguration(expected,pool);
}
}
public void testSetConfig() throws Exception {
GenericObjectPool.Config expected = new GenericObjectPool.Config();
GenericObjectPool pool = new GenericObjectPool();
assertConfiguration(expected,pool);
expected.maxActive = 2;
expected.maxIdle = 3;
expected.maxWait = 5L;
expected.minEvictableIdleTimeMillis = 7L;
expected.numTestsPerEvictionRun = 9;
expected.testOnBorrow = true;
expected.testOnReturn = true;
expected.testWhileIdle = true;
expected.timeBetweenEvictionRunsMillis = 11L;
expected.whenExhaustedAction = GenericObjectPool.WHEN_EXHAUSTED_GROW;
pool.setConfig(expected);
assertConfiguration(expected,pool);
}
public void testDebugInfo() throws Exception {
GenericObjectPool pool = new GenericObjectPool(new SimpleFactory());
pool.setMaxIdle(3);
assertNotNull(pool.debugInfo());
Object obj = pool.borrowObject();
assertNotNull(pool.debugInfo());
pool.returnObject(obj);
assertNotNull(pool.debugInfo());
}
public void testStartAndStopEvictor() throws Exception {
// set up pool without evictor
pool.setMaxIdle(6);
pool.setMaxActive(6);
pool.setNumTestsPerEvictionRun(6);
pool.setMinEvictableIdleTimeMillis(100L);
for(int j=0;j<2;j++) {
// populate the pool
{
Object[] active = new Object[6];
for(int i=0;i<6;i++) {
active[i] = pool.borrowObject();
}
for(int i=0;i<6;i++) {
pool.returnObject(active[i]);
}
}
// note that it stays populated
assertEquals("Should have 6 idle",6,pool.getNumIdle());
// start the evictor
pool.setTimeBetweenEvictionRunsMillis(50L);
// wait a second (well, .2 seconds)
try { Thread.sleep(200L); } catch(Exception e) { }
// assert that the evictor has cleared out the pool
assertEquals("Should have 0 idle",0,pool.getNumIdle());
// stop the evictor
pool.startEvictor(0L);
}
}
public void testEvictionWithNegativeNumTests() throws Exception {
// when numTestsPerEvictionRun is negative, it represents a fraction of the idle objects to test
pool.setMaxIdle(6);
pool.setMaxActive(6);
pool.setNumTestsPerEvictionRun(-2);
pool.setMinEvictableIdleTimeMillis(50L);
pool.setTimeBetweenEvictionRunsMillis(100L);
Object[] active = new Object[6];
for(int i=0;i<6;i++) {
active[i] = pool.borrowObject();
}
for(int i=0;i<6;i++) {
pool.returnObject(active[i]);
}
try { Thread.sleep(100L); } catch(Exception e) { }
assertTrue("Should at most 6 idle, found " + pool.getNumIdle(),pool.getNumIdle() <= 6);
try { Thread.sleep(100L); } catch(Exception e) { }
assertTrue("Should at most 3 idle, found " + pool.getNumIdle(),pool.getNumIdle() <= 3);
try { Thread.sleep(100L); } catch(Exception e) { }
assertTrue("Should be at most 2 idle, found " + pool.getNumIdle(),pool.getNumIdle() <= 2);
try { Thread.sleep(100L); } catch(Exception e) { }
assertEquals("Should be zero idle, found " + pool.getNumIdle(),0,pool.getNumIdle());
}
public void testEviction() throws Exception {
pool.setMaxIdle(500);
pool.setMaxActive(500);
pool.setNumTestsPerEvictionRun(100);
pool.setMinEvictableIdleTimeMillis(250L);
pool.setTimeBetweenEvictionRunsMillis(500L);
pool.setTestWhileIdle(true);
Object[] active = new Object[500];
for(int i=0;i<500;i++) {
active[i] = pool.borrowObject();
}
for(int i=0;i<500;i++) {
pool.returnObject(active[i]);
}
try { Thread.sleep(1000L); } catch(Exception e) { }
assertTrue("Should be less than 500 idle, found " + pool.getNumIdle(),pool.getNumIdle() < 500);
try { Thread.sleep(600L); } catch(Exception e) { }
assertTrue("Should be less than 400 idle, found " + pool.getNumIdle(),pool.getNumIdle() < 400);
try { Thread.sleep(600L); } catch(Exception e) { }
assertTrue("Should be less than 300 idle, found " + pool.getNumIdle(),pool.getNumIdle() < 300);
try { Thread.sleep(600L); } catch(Exception e) { }
assertTrue("Should be less than 200 idle, found " + pool.getNumIdle(),pool.getNumIdle() < 200);
try { Thread.sleep(600L); } catch(Exception e) { }
assertTrue("Should be less than 100 idle, found " + pool.getNumIdle(),pool.getNumIdle() < 100);
try { Thread.sleep(600L); } catch(Exception e) { }
assertEquals("Should be zero idle, found " + pool.getNumIdle(),0,pool.getNumIdle());
for(int i=0;i<500;i++) {
active[i] = pool.borrowObject();
}
for(int i=0;i<500;i++) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -