Repository: commons-pool Updated Branches: refs/heads/master a5c135123 -> d8992b5e2
[POOL-332] ObjectPool and KeyedObject pool should extend Closeable. Start cleaning up tests by managing pools with try-with-resource blocks. More to do. Any help appreciated. 'mvn clean verify' passes. Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/d8992b5e Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/d8992b5e Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/d8992b5e Branch: refs/heads/master Commit: d8992b5e2983dbd8d773db09744eb9d617de1b6e Parents: a5c1351 Author: Gary Gregory <ggreg...@apache.org> Authored: Tue Oct 31 15:45:14 2017 -0600 Committer: Gary Gregory <ggreg...@apache.org> Committed: Tue Oct 31 15:45:14 2017 -0600 ---------------------------------------------------------------------- .../commons/pool2/TestKeyedObjectPool.java | 5 +- .../org/apache/commons/pool2/TestPoolUtils.java | 208 +++++++++---------- 2 files changed, 102 insertions(+), 111 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-pool/blob/d8992b5e/src/test/java/org/apache/commons/pool2/TestKeyedObjectPool.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/pool2/TestKeyedObjectPool.java b/src/test/java/org/apache/commons/pool2/TestKeyedObjectPool.java index c972d67..ad95fac 100644 --- a/src/test/java/org/apache/commons/pool2/TestKeyedObjectPool.java +++ b/src/test/java/org/apache/commons/pool2/TestKeyedObjectPool.java @@ -414,13 +414,10 @@ public abstract class TestKeyedObjectPool { public void testToString() throws Exception { final FailingKeyedPooledObjectFactory factory = new FailingKeyedPooledObjectFactory(); - final KeyedObjectPool<Object,Object> pool = makeEmptyPool(factory); - try { + try (final KeyedObjectPool<Object,Object> pool = makeEmptyPool(factory)) { pool.toString(); } catch(final UnsupportedOperationException uoe) { return; // test not supported - } finally { - pool.close(); } } http://git-wip-us.apache.org/repos/asf/commons-pool/blob/d8992b5e/src/test/java/org/apache/commons/pool2/TestPoolUtils.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/pool2/TestPoolUtils.java b/src/test/java/org/apache/commons/pool2/TestPoolUtils.java index 0c9f0ed..10f09bb 100644 --- a/src/test/java/org/apache/commons/pool2/TestPoolUtils.java +++ b/src/test/java/org/apache/commons/pool2/TestPoolUtils.java @@ -110,11 +110,11 @@ public class TestPoolUtils { // Test that the minIdle check doesn't add too many idle objects @SuppressWarnings("unchecked") final PooledObjectFactory<Object> pof = createProxy(PooledObjectFactory.class, calledMethods); - final ObjectPool<Object> op = new GenericObjectPool<>(pof); - PoolUtils.checkMinIdle(op, 2, 100); - Thread.sleep(1000); - assertEquals(2, op.getNumIdle()); - op.close(); + try (final ObjectPool<Object> op = new GenericObjectPool<>(pof)) { + PoolUtils.checkMinIdle(op, 2, 100); + Thread.sleep(1000); + assertEquals(2, op.getNumIdle()); + } int makeObjectCount = 0; final Iterator<String> iter = calledMethods.iterator(); while (iter.hasNext()) { @@ -188,13 +188,13 @@ public class TestPoolUtils { @SuppressWarnings("unchecked") final KeyedPooledObjectFactory<Object,Object> kpof = createProxy(KeyedPooledObjectFactory.class, calledMethods); - final KeyedObjectPool<Object,Object> kop = - new GenericKeyedObjectPool<>(kpof); - PoolUtils.checkMinIdle(kop, key, 2, 100); - Thread.sleep(400); - assertEquals(2, kop.getNumIdle(key)); - assertEquals(2, kop.getNumIdle()); - kop.close(); + try (final KeyedObjectPool<Object,Object> kop = + new GenericKeyedObjectPool<>(kpof)) { + PoolUtils.checkMinIdle(kop, key, 2, 100); + Thread.sleep(400); + assertEquals(2, kop.getNumIdle(key)); + assertEquals(2, kop.getNumIdle()); + } int makeObjectCount = 0; final Iterator<String> iter = calledMethods.iterator(); while (iter.hasNext()) { @@ -463,16 +463,16 @@ public class TestPoolUtils { @Test public void testErodingPoolObjectPool() throws Exception { try { - PoolUtils.erodingPool((ObjectPool<Object>)null); + PoolUtils.erodingPool((ObjectPool<Object>) null); fail("PoolUtils.erodingPool(ObjectPool) must not allow a null pool."); - } catch(final IllegalArgumentException iae) { + } catch (final IllegalArgumentException iae) { // expected } try { - PoolUtils.erodingPool((ObjectPool<Object>)null, 1f); + PoolUtils.erodingPool((ObjectPool<Object>) null, 1f); fail("PoolUtils.erodingPool(ObjectPool, float) must not allow a null pool."); - } catch(final IllegalArgumentException iae) { + } catch (final IllegalArgumentException iae) { // expected } @@ -490,66 +490,63 @@ public class TestPoolUtils { }; try { - @SuppressWarnings({"unchecked", "unused"}) - final - Object o = PoolUtils.erodingPool(createProxy(ObjectPool.class, handler), -1f); + @SuppressWarnings({ "unchecked", "unused" }) + final Object o = PoolUtils.erodingPool(createProxy(ObjectPool.class, handler), -1f); fail("PoolUtils.erodingPool(ObjectPool, float) must not allow a non-positive factor."); - } catch(final IllegalArgumentException iae) { + } catch (final IllegalArgumentException iae) { // expected } // If the logic behind PoolUtils.erodingPool changes then this will need to be tweaked. final float factor = 0.01f; // about ~9 seconds until first discard - @SuppressWarnings("unchecked") - final ObjectPool<Object> pool = PoolUtils.erodingPool( - createProxy(ObjectPool.class, handler), factor); - final List<String> expectedMethods = new ArrayList<>(); - assertEquals(expectedMethods, calledMethods); - - pool.addObject(); - expectedMethods.add("addObject"); - - Object o = pool.borrowObject(); - expectedMethods.add("borrowObject"); - - assertEquals(expectedMethods, calledMethods); + try (@SuppressWarnings("unchecked") + final ObjectPool<Object> pool = PoolUtils.erodingPool(createProxy(ObjectPool.class, handler), factor)) { - pool.returnObject(o); - expectedMethods.add("returnObject"); - assertEquals(expectedMethods, calledMethods); + assertEquals(expectedMethods, calledMethods); - // the invocation handler always returns 1 - assertEquals(1, pool.getNumActive()); - expectedMethods.add("getNumActive"); - assertEquals(1, pool.getNumIdle()); - expectedMethods.add("getNumIdle"); + pool.addObject(); + expectedMethods.add("addObject"); - for (int i=0; i < 5; i ++) { - o = pool.borrowObject(); + Object o = pool.borrowObject(); expectedMethods.add("borrowObject"); - Thread.sleep(50); + assertEquals(expectedMethods, calledMethods); pool.returnObject(o); expectedMethods.add("returnObject"); - assertEquals(expectedMethods, calledMethods); - expectedMethods.clear(); - calledMethods.clear(); - } + // the invocation handler always returns 1 + assertEquals(1, pool.getNumActive()); + expectedMethods.add("getNumActive"); + assertEquals(1, pool.getNumIdle()); + expectedMethods.add("getNumIdle"); - Thread.sleep(10000); // 10 seconds + for (int i = 0; i < 5; i++) { + o = pool.borrowObject(); + expectedMethods.add("borrowObject"); + Thread.sleep(50); - o = pool.borrowObject(); - expectedMethods.add("borrowObject"); - pool.returnObject(o); - expectedMethods.add("getNumIdle"); - expectedMethods.add("invalidateObject"); - pool.clear(); - pool.close(); + pool.returnObject(o); + expectedMethods.add("returnObject"); + + assertEquals(expectedMethods, calledMethods); + + expectedMethods.clear(); + calledMethods.clear(); + } + + Thread.sleep(10000); // 10 seconds + + o = pool.borrowObject(); + expectedMethods.add("borrowObject"); + pool.returnObject(o); + expectedMethods.add("getNumIdle"); + expectedMethods.add("invalidateObject"); + pool.clear(); + } expectedMethods.add("clear"); expectedMethods.add("close"); assertEquals(expectedMethods, calledMethods); @@ -576,23 +573,23 @@ public class TestPoolUtils { @Test public void testErodingPoolKeyedObjectPool() throws Exception { try { - PoolUtils.erodingPool((KeyedObjectPool<Object,Object>)null); + PoolUtils.erodingPool((KeyedObjectPool<Object, Object>) null); fail("PoolUtils.erodingPool(KeyedObjectPool) must not allow a null pool."); - } catch(final IllegalArgumentException iae) { + } catch (final IllegalArgumentException iae) { // expected } try { - PoolUtils.erodingPool((KeyedObjectPool<Object,Object>)null, 1f); + PoolUtils.erodingPool((KeyedObjectPool<Object, Object>) null, 1f); fail("PoolUtils.erodingPool(KeyedObjectPool, float) must not allow a null pool."); - } catch(final IllegalArgumentException iae) { + } catch (final IllegalArgumentException iae) { // expected } try { - PoolUtils.erodingPool((KeyedObjectPool<Object,Object>)null, 1f, true); + PoolUtils.erodingPool((KeyedObjectPool<Object, Object>) null, 1f, true); fail("PoolUtils.erodingPool(KeyedObjectPool, float, boolean) must not allow a null pool."); - } catch(final IllegalArgumentException iae) { + } catch (final IllegalArgumentException iae) { // expected } @@ -610,77 +607,74 @@ public class TestPoolUtils { }; try { - @SuppressWarnings({"unchecked", "unused"}) - final - Object o = PoolUtils.erodingPool(createProxy(KeyedObjectPool.class, handler), 0f); + @SuppressWarnings({ "unchecked", "unused" }) + final Object o = PoolUtils.erodingPool(createProxy(KeyedObjectPool.class, handler), 0f); fail("PoolUtils.erodingPool(ObjectPool, float) must not allow a non-positive factor."); - } catch(final IllegalArgumentException iae) { + } catch (final IllegalArgumentException iae) { // expected } try { - @SuppressWarnings({"unchecked", "unused"}) - final - Object o = PoolUtils.erodingPool(createProxy(KeyedObjectPool.class, handler), 0f, false); + @SuppressWarnings({ "unchecked", "unused" }) + final Object o = PoolUtils.erodingPool(createProxy(KeyedObjectPool.class, handler), 0f, false); fail("PoolUtils.erodingPool(ObjectPool, float, boolean) must not allow a non-positive factor."); - } catch(final IllegalArgumentException iae) { + } catch (final IllegalArgumentException iae) { // expected } // If the logic behind PoolUtils.erodingPool changes then this will need to be tweaked. final float factor = 0.01f; // about ~9 seconds until first discard - @SuppressWarnings("unchecked") - final KeyedObjectPool<Object,Object> pool = - PoolUtils.erodingPool(createProxy(KeyedObjectPool.class, handler), factor); - final List<String> expectedMethods = new ArrayList<>(); - assertEquals(expectedMethods, calledMethods); - - final Object key = "key"; - - pool.addObject(key); - expectedMethods.add("addObject"); - - Object o = pool.borrowObject(key); - expectedMethods.add("borrowObject"); + try (@SuppressWarnings("unchecked") + final KeyedObjectPool<Object, Object> pool = PoolUtils.erodingPool(createProxy(KeyedObjectPool.class, handler), + factor)) { - assertEquals(expectedMethods, calledMethods); + assertEquals(expectedMethods, calledMethods); - pool.returnObject(key, o); - expectedMethods.add("returnObject"); - assertEquals(expectedMethods, calledMethods); + final Object key = "key"; - // the invocation handler always returns 1 - assertEquals(1, pool.getNumActive()); - expectedMethods.add("getNumActive"); - assertEquals(1, pool.getNumIdle()); - expectedMethods.add("getNumIdle"); + pool.addObject(key); + expectedMethods.add("addObject"); - for (int i=0; i < 5; i ++) { - o = pool.borrowObject(key); + Object o = pool.borrowObject(key); expectedMethods.add("borrowObject"); - Thread.sleep(50); + assertEquals(expectedMethods, calledMethods); pool.returnObject(key, o); expectedMethods.add("returnObject"); - assertEquals(expectedMethods, calledMethods); - expectedMethods.clear(); - calledMethods.clear(); - } + // the invocation handler always returns 1 + assertEquals(1, pool.getNumActive()); + expectedMethods.add("getNumActive"); + assertEquals(1, pool.getNumIdle()); + expectedMethods.add("getNumIdle"); - Thread.sleep(10000); // 10 seconds + for (int i = 0; i < 5; i++) { + o = pool.borrowObject(key); + expectedMethods.add("borrowObject"); + Thread.sleep(50); - o = pool.borrowObject(key); - expectedMethods.add("borrowObject"); - pool.returnObject(key, o); - expectedMethods.add("getNumIdle"); - expectedMethods.add("invalidateObject"); - pool.clear(); - pool.close(); + pool.returnObject(key, o); + expectedMethods.add("returnObject"); + + assertEquals(expectedMethods, calledMethods); + + expectedMethods.clear(); + calledMethods.clear(); + } + + Thread.sleep(10000); // 10 seconds + + o = pool.borrowObject(key); + expectedMethods.add("borrowObject"); + pool.returnObject(key, o); + expectedMethods.add("getNumIdle"); + expectedMethods.add("invalidateObject"); + pool.clear(); + } expectedMethods.add("clear"); expectedMethods.add("close"); assertEquals(expectedMethods, calledMethods);