This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-pool.git
commit 9bdf2ee689fe7458f98b4221f2a78767a456edb7 Author: Gary Gregory <[email protected]> AuthorDate: Fri Aug 13 17:58:32 2021 -0400 Refactor so much duplication of the same pattern. --- src/test/java/org/apache/commons/pool2/Waiter.java | 17 +- .../org/apache/commons/pool2/WaiterFactory.java | 6 +- .../commons/pool2/impl/AtomicIntegerFactory.java | 31 +--- .../pool2/impl/TestAbandonedKeyedObjectPool.java | 7 +- .../pool2/impl/TestAbandonedObjectPool.java | 7 +- .../pool2/impl/TestGenericKeyedObjectPool.java | 178 ++++++--------------- .../commons/pool2/impl/TestGenericObjectPool.java | 162 +++++++------------ .../TestGenericObjectPoolFactoryCreateFailure.java | 13 +- .../pool2/performance/SleepingObjectFactory.java | 20 +-- 9 files changed, 137 insertions(+), 304 deletions(-) diff --git a/src/test/java/org/apache/commons/pool2/Waiter.java b/src/test/java/org/apache/commons/pool2/Waiter.java index 1b0f75b..78924ae 100644 --- a/src/test/java/org/apache/commons/pool2/Waiter.java +++ b/src/test/java/org/apache/commons/pool2/Waiter.java @@ -45,14 +45,10 @@ public class Waiter { } /** - * Wait for {@link #getLatency()} ms. + * Wait for {@link #getLatency()} milliseconds. */ public void doWait() { - try { - Thread.sleep(latency); - } catch (final InterruptedException ex) { - // ignore - } + sleepQuietly(latency); } @Override @@ -175,4 +171,13 @@ public class Waiter { buff.append("latency = " + latency + '\n'); return buff.toString(); } + + /** TODO Reuse Apache Commons Lang ThreadUtils */ + public static void sleepQuietly(final long millis) { + try { + Thread.sleep(millis); + } catch (final InterruptedException e) { + // be quiet + } + } } diff --git a/src/test/java/org/apache/commons/pool2/WaiterFactory.java b/src/test/java/org/apache/commons/pool2/WaiterFactory.java index 8bbfc91..05d7661 100644 --- a/src/test/java/org/apache/commons/pool2/WaiterFactory.java +++ b/src/test/java/org/apache/commons/pool2/WaiterFactory.java @@ -131,11 +131,7 @@ KeyedPooledObjectFactory<K,Waiter> { if (latency == 0) { return; } - try { - Thread.sleep(latency); - } catch (final InterruptedException ex) { - // ignore - } + Waiter.sleepQuietly(latency); } /** diff --git a/src/test/java/org/apache/commons/pool2/impl/AtomicIntegerFactory.java b/src/test/java/org/apache/commons/pool2/impl/AtomicIntegerFactory.java index e2e68ef..2f66560 100644 --- a/src/test/java/org/apache/commons/pool2/impl/AtomicIntegerFactory.java +++ b/src/test/java/org/apache/commons/pool2/impl/AtomicIntegerFactory.java @@ -20,6 +20,7 @@ import java.util.concurrent.atomic.AtomicInteger; import org.apache.commons.pool2.BasePooledObjectFactory; import org.apache.commons.pool2.PooledObject; +import org.apache.commons.pool2.Waiter; /** * Factory that sources PooledObjects that wrap AtomicIntegers. @@ -40,40 +41,24 @@ public class AtomicIntegerFactory @Override public void activateObject(final PooledObject<AtomicInteger> p) { p.getObject().incrementAndGet(); - try { - Thread.sleep(activateLatency); - } catch (final InterruptedException ex) { - // ignore - } + Waiter.sleepQuietly(activateLatency); } @Override public AtomicInteger create() { - try { - Thread.sleep(createLatency); - } catch (final InterruptedException ex) { - // ignore - } + Waiter.sleepQuietly(createLatency); return new AtomicInteger(0); } @Override public void destroyObject(final PooledObject<AtomicInteger> p) { - try { - Thread.sleep(destroyLatency); - } catch (final InterruptedException ex) { - // ignore - } + Waiter.sleepQuietly(destroyLatency); } @Override public void passivateObject(final PooledObject<AtomicInteger> p) { p.getObject().decrementAndGet(); - try { - Thread.sleep(passivateLatency); - } catch (final InterruptedException ex) { - // ignore - } + Waiter.sleepQuietly(passivateLatency); } /** @@ -117,11 +102,7 @@ public class AtomicIntegerFactory @Override public boolean validateObject(final PooledObject<AtomicInteger> instance) { - try { - Thread.sleep(validateLatency); - } catch (final InterruptedException ex) { - // ignore - } + Waiter.sleepQuietly(validateLatency); return instance.getObject().intValue() == 1; } diff --git a/src/test/java/org/apache/commons/pool2/impl/TestAbandonedKeyedObjectPool.java b/src/test/java/org/apache/commons/pool2/impl/TestAbandonedKeyedObjectPool.java index ea043ed..70a02f2 100644 --- a/src/test/java/org/apache/commons/pool2/impl/TestAbandonedKeyedObjectPool.java +++ b/src/test/java/org/apache/commons/pool2/impl/TestAbandonedKeyedObjectPool.java @@ -36,6 +36,7 @@ import javax.management.ObjectName; import org.apache.commons.pool2.DestroyMode; import org.apache.commons.pool2.KeyedPooledObjectFactory; import org.apache.commons.pool2.PooledObject; +import org.apache.commons.pool2.Waiter; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -126,11 +127,7 @@ public class TestAbandonedKeyedObjectPool { @Override public boolean validateObject(final Integer key, final PooledObject<PooledTestObject> obj) { - try { - Thread.sleep(validateLatency); - } catch (final Exception ex) { - // ignore - } + Waiter.sleepQuietly(validateLatency); return true; } } diff --git a/src/test/java/org/apache/commons/pool2/impl/TestAbandonedObjectPool.java b/src/test/java/org/apache/commons/pool2/impl/TestAbandonedObjectPool.java index 5207c00..b2e37f1 100644 --- a/src/test/java/org/apache/commons/pool2/impl/TestAbandonedObjectPool.java +++ b/src/test/java/org/apache/commons/pool2/impl/TestAbandonedObjectPool.java @@ -39,6 +39,7 @@ import org.apache.commons.pool2.DestroyMode; import org.apache.commons.pool2.PooledObject; import org.apache.commons.pool2.PooledObjectFactory; import org.apache.commons.pool2.TrackedUse; +import org.apache.commons.pool2.Waiter; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -206,11 +207,7 @@ public class TestAbandonedObjectPool { @Override public boolean validateObject(final PooledObject<PooledTestObject> obj) { - try { - Thread.sleep(validateLatency); - } catch (final Exception ex) { - // ignore - } + Waiter.sleepQuietly(validateLatency); return true; } } diff --git a/src/test/java/org/apache/commons/pool2/impl/TestGenericKeyedObjectPool.java b/src/test/java/org/apache/commons/pool2/impl/TestGenericKeyedObjectPool.java index 5800273..f4bf94f 100644 --- a/src/test/java/org/apache/commons/pool2/impl/TestGenericKeyedObjectPool.java +++ b/src/test/java/org/apache/commons/pool2/impl/TestGenericKeyedObjectPool.java @@ -198,12 +198,9 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool { } private void doWait(final long latency) { - try { - Thread.sleep(latency); - } catch (final InterruptedException ex) { - // ignore - } + Waiter.sleepQuietly(latency); } + @Override public PooledObject<String> makeObject(final K key) throws Exception { if (exceptionOnCreate) { @@ -336,11 +333,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool { @Override public boolean evict(final EvictionConfig config, final PooledObject<T> underTest, final int idleCount) { - try { - Thread.sleep(delay); - } catch (final InterruptedException e) { - // ignore - } + Waiter.sleepQuietly(delay); return super.evict(config, underTest, idleCount); } } @@ -403,11 +396,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool { public void run() { for(int i=0;i<_iter;i++) { final String key = _key == null ? String.valueOf(_random.nextInt(3)) : _key; - try { - Thread.sleep(_randomDelay ? _random.nextInt(_startDelay) : _startDelay); - } catch(final InterruptedException e) { - // ignored - } + Waiter.sleepQuietly(_randomDelay ? _random.nextInt(_startDelay) : _startDelay); T obj = null; try { obj = _pool.borrowObject(key); @@ -425,11 +414,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool { break; } - try { - Thread.sleep(_randomDelay ? _random.nextInt(_holdTime) : _holdTime); - } catch(final InterruptedException e) { - // ignored - } + Waiter.sleepQuietly(_randomDelay ? _random.nextInt(_holdTime) : _holdTime); try { _pool.returnObject(key,obj); } catch(final Exception e) { @@ -857,11 +842,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool { } for (final TestThread<T> testThread : threads) { while(!(testThread.complete())) { - try { - Thread.sleep(500L); - } catch(final InterruptedException e) { - // ignored - } + Waiter.sleepQuietly(500L); } if(testThread.failed()) { fail("Thread failed: " + threads.indexOf(testThread) + "\n" + @@ -994,16 +975,12 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool { } // Wait for threads to finish - for(int i=0;i<numThreads;i++) { - while(!(threads[i]).complete()) { - try { - Thread.sleep(500L); - } catch(final InterruptedException e) { - // ignored - } + for (int i = 0; i < numThreads; i++) { + while (!(threads[i]).complete()) { + Waiter.sleepQuietly(500L); } - if(threads[i].failed()) { - fail("Thread "+i+" failed: "+threads[i]._exception.toString()); + if (threads[i].failed()) { + fail("Thread " + i + " failed: " + threads[i]._exception.toString()); } } } @@ -1266,17 +1243,9 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool { for (int i = 0; i < 5; i++) { p.addObject("one"); } - try { - Thread.sleep(100); - } catch (final InterruptedException e) { - // ignore - } + Waiter.sleepQuietly(100); assertEquals(5, p.getNumIdle("one")); - try { - Thread.sleep(500); - } catch (final InterruptedException e) { - // ignore - } + Waiter.sleepQuietly(500); assertEquals(0, p.getNumIdle("one")); } } @@ -1316,17 +1285,17 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool { gkoPool.returnObject("",active[i]); } - try { Thread.sleep(1000L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(1000L); assertTrue(gkoPool.getNumIdle("") < 500, "Should be less than 500 idle, found " + gkoPool.getNumIdle("")); - try { Thread.sleep(600L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(600L); assertTrue(gkoPool.getNumIdle("") < 400, "Should be less than 400 idle, found " + gkoPool.getNumIdle("")); - try { Thread.sleep(600L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(600L); assertTrue(gkoPool.getNumIdle("") < 300,"Should be less than 300 idle, found " + gkoPool.getNumIdle("")); - try { Thread.sleep(600L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(600L); assertTrue(gkoPool.getNumIdle("") < 200, "Should be less than 200 idle, found " + gkoPool.getNumIdle("")); - try { Thread.sleep(600L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(600L); assertTrue(gkoPool.getNumIdle("") < 100 , "Should be less than 100 idle, found " + gkoPool.getNumIdle("")); - try { Thread.sleep(600L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(600L); assertEquals(0,gkoPool.getNumIdle(""),"Should be zero idle, found " + gkoPool.getNumIdle("")); for(int i=0;i<500;i++) { @@ -1336,17 +1305,17 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool { gkoPool.returnObject("",active[i]); } - try { Thread.sleep(1000L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(1000L); assertTrue(gkoPool.getNumIdle("") < 500,"Should be less than 500 idle, found " + gkoPool.getNumIdle("")); - try { Thread.sleep(600L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(600L); assertTrue(gkoPool.getNumIdle("") < 400,"Should be less than 400 idle, found " + gkoPool.getNumIdle("")); - try { Thread.sleep(600L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(600L); assertTrue(gkoPool.getNumIdle("") < 300,"Should be less than 300 idle, found " + gkoPool.getNumIdle("")); - try { Thread.sleep(600L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(600L); assertTrue(gkoPool.getNumIdle("") < 200,"Should be less than 200 idle, found " + gkoPool.getNumIdle("")); - try { Thread.sleep(600L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(600L); assertTrue(gkoPool.getNumIdle("") < 100,"Should be less than 100 idle, found " + gkoPool.getNumIdle("")); - try { Thread.sleep(600L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(600L); assertEquals(0,gkoPool.getNumIdle(""),"Should be zero idle, found " + gkoPool.getNumIdle("")); } @@ -1370,72 +1339,28 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool { gkoPool.returnObject("2", active2[i]); } - try { - Thread.sleep(1100L); - } catch (final InterruptedException e) { - // ignore - } + Waiter.sleepQuietly(1100L); assertTrue(gkoPool.getNumIdle() < 1000, "Should be less than 1000 idle, found " + gkoPool.getNumIdle()); final long sleepMillisPart2 = 600L; - try { - Thread.sleep(sleepMillisPart2); - } catch (final InterruptedException e) { - // ignore - } + Waiter.sleepQuietly(sleepMillisPart2); assertTrue(gkoPool.getNumIdle() < 900, "Should be less than 900 idle, found " + gkoPool.getNumIdle()); - try { - Thread.sleep(sleepMillisPart2); - } catch (final InterruptedException e) { - // ignore - } + Waiter.sleepQuietly(sleepMillisPart2); assertTrue(gkoPool.getNumIdle() < 800, "Should be less than 800 idle, found " + gkoPool.getNumIdle()); - try { - Thread.sleep(sleepMillisPart2); - } catch (final InterruptedException e) { - // ignore - } + Waiter.sleepQuietly(sleepMillisPart2); assertTrue(gkoPool.getNumIdle() < 700, "Should be less than 700 idle, found " + gkoPool.getNumIdle()); - try { - Thread.sleep(sleepMillisPart2); - } catch (final InterruptedException e) { - // ignore - } + Waiter.sleepQuietly(sleepMillisPart2); assertTrue(gkoPool.getNumIdle() < 600, "Should be less than 600 idle, found " + gkoPool.getNumIdle()); - try { - Thread.sleep(sleepMillisPart2); - } catch (final InterruptedException e) { - // ignore - } + Waiter.sleepQuietly(sleepMillisPart2); assertTrue(gkoPool.getNumIdle() < 500, "Should be less than 500 idle, found " + gkoPool.getNumIdle()); - try { - Thread.sleep(sleepMillisPart2); - } catch (final InterruptedException e) { - // ignore - } + Waiter.sleepQuietly(sleepMillisPart2); assertTrue(gkoPool.getNumIdle() < 400, "Should be less than 400 idle, found " + gkoPool.getNumIdle()); - try { - Thread.sleep(sleepMillisPart2); - } catch (final InterruptedException e) { - // ignore - } + Waiter.sleepQuietly(sleepMillisPart2); assertTrue(gkoPool.getNumIdle() < 300, "Should be less than 300 idle, found " + gkoPool.getNumIdle()); - try { - Thread.sleep(sleepMillisPart2); - } catch (final InterruptedException e) { - // ignore - } + Waiter.sleepQuietly(sleepMillisPart2); assertTrue(gkoPool.getNumIdle() < 200, "Should be less than 200 idle, found " + gkoPool.getNumIdle()); - try { - Thread.sleep(sleepMillisPart2); - } catch (final InterruptedException e) { - // ignore - } + Waiter.sleepQuietly(sleepMillisPart2); assertTrue(gkoPool.getNumIdle() < 100, "Should be less than 100 idle, found " + gkoPool.getNumIdle()); - try { - Thread.sleep(sleepMillisPart2); - } catch (final InterruptedException e) { - // ignore - } + Waiter.sleepQuietly(sleepMillisPart2); assertEquals(0, gkoPool.getNumIdle(), "Should be zero idle, found " + gkoPool.getNumIdle()); } @@ -2122,33 +2047,32 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool { gkoPool.setTimeBetweenEvictionRuns(Duration.ofMillis(100)); gkoPool.setTestWhileIdle(true); - - //Generate a random key + // Generate a random key final String key = "A"; gkoPool.preparePool(key); - try { Thread.sleep(150L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(150L); assertEquals(5, gkoPool.getNumIdle(), "Should be 5 idle, found " + gkoPool.getNumIdle()); final String[] active = new String[5]; active[0] = gkoPool.borrowObject(key); - try { Thread.sleep(150L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(150L); assertEquals(5, gkoPool.getNumIdle(), "Should be 5 idle, found " + gkoPool.getNumIdle()); - for(int i=1 ; i<5 ; i++) { + for (int i = 1; i < 5; i++) { active[i] = gkoPool.borrowObject(key); } - try { Thread.sleep(150L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(150L); assertEquals(5, gkoPool.getNumIdle(), "Should be 5 idle, found " + gkoPool.getNumIdle()); - for(int i=0 ; i<5 ; i++) { + for (int i = 0; i < 5; i++) { gkoPool.returnObject(key, active[i]); } - try { Thread.sleep(150L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(150L); assertEquals(10, gkoPool.getNumIdle(), "Should be 10 idle, found " + gkoPool.getNumIdle()); } @@ -2169,40 +2093,40 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool { assertEquals(5, gkoPool.getNumIdle(), "Should be 5 idle, found " + gkoPool.getNumIdle()); - try { Thread.sleep(150L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(150L); assertEquals(5, gkoPool.getNumIdle(), "Should be 5 idle, found " + gkoPool.getNumIdle()); final String[] active = new String[10]; - try { Thread.sleep(150L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(150L); assertEquals(5, gkoPool.getNumIdle(), "Should be 5 idle, found " + gkoPool.getNumIdle()); for(int i=0 ; i<5 ; i++) { active[i] = gkoPool.borrowObject(key); } - try { Thread.sleep(150L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(150L); assertEquals(5, gkoPool.getNumIdle(), "Should be 5 idle, found " + gkoPool.getNumIdle()); for(int i=0 ; i<5 ; i++) { gkoPool.returnObject(key, active[i]); } - try { Thread.sleep(150L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(150L); assertEquals(10, gkoPool.getNumIdle(), "Should be 10 idle, found " + gkoPool.getNumIdle()); for(int i=0 ; i<10 ; i++) { active[i] = gkoPool.borrowObject(key); } - try { Thread.sleep(150L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(150L); assertEquals(0, gkoPool.getNumIdle(), "Should be 0 idle, found " + gkoPool.getNumIdle()); for(int i=0 ; i<10 ; i++) { gkoPool.returnObject(key, active[i]); } - try { Thread.sleep(150L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(150L); assertEquals(10, gkoPool.getNumIdle(), "Should be 10 idle, found " + gkoPool.getNumIdle()); } @@ -2221,13 +2145,13 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool { //Generate a random key final String key = "A"; - try { Thread.sleep(150L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(150L); assertEquals(0, gkoPool.getNumIdle(), "Should be 0 idle, found " + gkoPool.getNumIdle()); final Object active = gkoPool.borrowObject(key); assertNotNull(active); - try { Thread.sleep(150L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(150L); assertEquals(5, gkoPool.getNumIdle(), "Should be 5 idle, found " + gkoPool.getNumIdle()); } diff --git a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java index dd417bd..430e7d3 100644 --- a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java +++ b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java @@ -225,11 +225,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool { } @Override public boolean validateObject(final PooledObject<Object> obj) { - try { - Thread.sleep(1000); - } catch (final InterruptedException e) { - // Ignore - } + Waiter.sleepQuietly(1000); return false; } @@ -316,11 +312,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool { } } private void doWait(final long latency) { - try { - Thread.sleep(latency); - } catch (final InterruptedException ex) { - // ignore - } + Waiter.sleepQuietly(latency); } public synchronized int getMakeCounter() { return makeCounter; @@ -521,11 +513,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool { _randomDelay ? (long)_random.nextInt(_startDelay) : _startDelay; final long holdTime = _randomDelay ? (long)_random.nextInt(_holdTime) : _holdTime; - try { - Thread.sleep(startDelay); - } catch(final InterruptedException e) { - // ignored - } + Waiter.sleepQuietly(startDelay); T obj = null; try { obj = _pool.borrowObject(); @@ -543,11 +531,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool { break; } - try { - Thread.sleep(holdTime); - } catch(final InterruptedException e) { - // ignored - } + Waiter.sleepQuietly(holdTime); try { _pool.returnObject(obj); } catch(final Exception e) { @@ -915,20 +899,16 @@ public class TestGenericObjectPool extends TestBaseObjectPool { }) private void runTestThreads(final int numThreads, final int iterations, final int delay, final GenericObjectPool testPool) { final TestThread[] threads = new TestThread[numThreads]; - for(int i=0;i<numThreads;i++) { - threads[i] = new TestThread<String>(testPool,iterations,delay); + for (int i = 0; i < numThreads; i++) { + threads[i] = new TestThread<String>(testPool, iterations, delay); final Thread t = new Thread(threads[i]); t.start(); } - for(int i=0;i<numThreads;i++) { - while(!(threads[i]).complete()) { - try { - Thread.sleep(500L); - } catch(final InterruptedException e) { - // ignored - } + for (int i = 0; i < numThreads; i++) { + while (!(threads[i]).complete()) { + Waiter.sleepQuietly(500L); } - if(threads[i].failed()) { + if (threads[i].failed()) { fail("Thread " + i + " failed: " + threads[i]._error.toString()); } } @@ -1534,17 +1514,17 @@ public class TestGenericObjectPool extends TestBaseObjectPool { genericObjectPool.returnObject(active[i]); } - try { Thread.sleep(1000L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(1000L); assertTrue(genericObjectPool.getNumIdle() < 500,"Should be less than 500 idle, found " + genericObjectPool.getNumIdle()); - try { Thread.sleep(600L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(600L); assertTrue(genericObjectPool.getNumIdle() < 400,"Should be less than 400 idle, found " + genericObjectPool.getNumIdle()); - try { Thread.sleep(600L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(600L); assertTrue(genericObjectPool.getNumIdle() < 300,"Should be less than 300 idle, found " + genericObjectPool.getNumIdle()); - try { Thread.sleep(600L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(600L); assertTrue(genericObjectPool.getNumIdle() < 200,"Should be less than 200 idle, found " + genericObjectPool.getNumIdle()); - try { Thread.sleep(600L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(600L); assertTrue(genericObjectPool.getNumIdle() < 100,"Should be less than 100 idle, found " + genericObjectPool.getNumIdle()); - try { Thread.sleep(600L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(600L); assertEquals(0,genericObjectPool.getNumIdle(),"Should be zero idle, found " + genericObjectPool.getNumIdle()); for (int i = 0; i < 500; i++) { @@ -1554,17 +1534,17 @@ public class TestGenericObjectPool extends TestBaseObjectPool { genericObjectPool.returnObject(active[i]); } - try { Thread.sleep(1000L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(1000L); assertTrue(genericObjectPool.getNumIdle() < 500,"Should be less than 500 idle, found " + genericObjectPool.getNumIdle()); - try { Thread.sleep(600L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(600L); assertTrue(genericObjectPool.getNumIdle() < 400,"Should be less than 400 idle, found " + genericObjectPool.getNumIdle()); - try { Thread.sleep(600L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(600L); assertTrue(genericObjectPool.getNumIdle() < 300,"Should be less than 300 idle, found " + genericObjectPool.getNumIdle()); - try { Thread.sleep(600L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(600L); assertTrue(genericObjectPool.getNumIdle() < 200,"Should be less than 200 idle, found " + genericObjectPool.getNumIdle()); - try { Thread.sleep(600L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(600L); assertTrue(genericObjectPool.getNumIdle() < 100,"Should be less than 100 idle, found " + genericObjectPool.getNumIdle()); - try { Thread.sleep(600L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(600L); assertEquals(0,genericObjectPool.getNumIdle(),"Should be zero idle, found " + genericObjectPool.getNumIdle()); } @@ -1683,12 +1663,12 @@ public class TestGenericObjectPool extends TestBaseObjectPool { // Eviction policy ignores first 1500 attempts to evict and then always // evicts. After 1s, there should have been two runs of 500 tests so no // evictions - try { Thread.sleep(1000L); } catch(final InterruptedException e) { } - assertEquals( 500, genericObjectPool.getNumIdle(),"Should be 500 idle"); + Waiter.sleepQuietly(1000L); + assertEquals(500, genericObjectPool.getNumIdle(), "Should be 500 idle"); // A further 1s wasn't enough so allow 2s for the evictor to clear out // all of the idle objects. - try { Thread.sleep(2000L); } catch(final InterruptedException e) { } - assertEquals( 0, genericObjectPool.getNumIdle(),"Should be 0 idle"); + Waiter.sleepQuietly(2000L); + assertEquals(0, genericObjectPool.getNumIdle(), "Should be 0 idle"); } @Test @@ -1767,13 +1747,13 @@ public class TestGenericObjectPool extends TestBaseObjectPool { genericObjectPool.returnObject(active[i]); } - try { Thread.sleep(100L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(100L); assertTrue(genericObjectPool.getNumIdle() <= 6,"Should at most 6 idle, found " + genericObjectPool.getNumIdle()); - try { Thread.sleep(100L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(100L); assertTrue(genericObjectPool.getNumIdle() <= 3,"Should at most 3 idle, found " + genericObjectPool.getNumIdle()); - try { Thread.sleep(100L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(100L); assertTrue(genericObjectPool.getNumIdle() <= 2,"Should be at most 2 idle, found " + genericObjectPool.getNumIdle()); - try { Thread.sleep(100L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(100L); assertEquals(0,genericObjectPool.getNumIdle(),"Should be zero idle, found " + genericObjectPool.getNumIdle()); } @@ -2184,30 +2164,18 @@ public class TestGenericObjectPool extends TestBaseObjectPool { t.start(); } // Give the threads a chance to start doing some work - try { - Thread.sleep(100); - } catch(final InterruptedException e) { - // ignored - } + Waiter.sleepQuietly(100L); for (int i = 0; i < numIter; i++) { String obj = null; try { - try { - Thread.sleep(delay); - } catch(final InterruptedException e) { - // ignored - } + Waiter.sleepQuietly(delay); obj = genericObjectPool.borrowObject(); // Under load, observed _numActive > _maxTotal if (genericObjectPool.getNumActive() > genericObjectPool.getMaxTotal()) { throw new IllegalStateException("Too many active objects"); } - try { - Thread.sleep(delay); - } catch(final InterruptedException e) { - // ignored - } + Waiter.sleepQuietly(delay); } catch (final Exception e) { // Shouldn't happen e.printStackTrace(); @@ -2223,17 +2191,13 @@ public class TestGenericObjectPool extends TestBaseObjectPool { } } - for(int i=0;i<numThreads;i++) { - while(!(threads[i]).complete()) { - try { - Thread.sleep(500L); - } catch(final InterruptedException e) { - // ignored - } + for (int i = 0; i < numThreads; i++) { + while (!(threads[i]).complete()) { + Waiter.sleepQuietly(500L); } - if(threads[i].failed()) { + if (threads[i].failed()) { threads[i]._error.printStackTrace(); - fail("Thread "+i+" failed: "+threads[i]._error.toString()); + fail("Thread " + i + " failed: " + threads[i]._error.toString()); } } } @@ -2301,30 +2265,18 @@ public class TestGenericObjectPool extends TestBaseObjectPool { t.start(); } // Give the threads a chance to start doing some work - try { - Thread.sleep(5000); - } catch(final InterruptedException e) { - // ignored - } + Waiter.sleepQuietly(5000); for (int i = 0; i < numIter; i++) { String obj = null; try { - try { - Thread.sleep(delay); - } catch(final InterruptedException e) { - // ignored - } + Waiter.sleepQuietly(delay); obj = genericObjectPool.borrowObject(); // Under load, observed _numActive > _maxTotal if (genericObjectPool.getNumActive() > genericObjectPool.getMaxTotal()) { throw new IllegalStateException("Too many active objects"); } - try { - Thread.sleep(delay); - } catch(final InterruptedException e) { - // ignored - } + Waiter.sleepQuietly(delay); } catch (final Exception e) { // Shouldn't happen e.printStackTrace(); @@ -2342,11 +2294,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool { for (int i = 0; i < numThreads; i++) { while(!(threads[i]).complete()) { - try { - Thread.sleep(500L); - } catch(final InterruptedException e) { - // ignored - } + Waiter.sleepQuietly(500L); } if(threads[i].failed()) { fail("Thread " + i + " failed: " + threads[i]._error.toString()); @@ -2434,27 +2382,27 @@ public class TestGenericObjectPool extends TestBaseObjectPool { genericObjectPool.setTimeBetweenEvictionRuns(Duration.ofMillis(100)); genericObjectPool.setTestWhileIdle(true); - try { Thread.sleep(150L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(150L); assertEquals(5, genericObjectPool.getNumIdle(), "Should be 5 idle, found " + genericObjectPool.getNumIdle()); final String[] active = new String[5]; active[0] = genericObjectPool.borrowObject(); - try { Thread.sleep(150L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(150L); assertEquals(5, genericObjectPool.getNumIdle(), "Should be 5 idle, found " + genericObjectPool.getNumIdle()); - for(int i=1 ; i<5 ; i++) { + for (int i = 1; i < 5; i++) { active[i] = genericObjectPool.borrowObject(); } - try { Thread.sleep(150L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(150L); assertEquals(5, genericObjectPool.getNumIdle(), "Should be 5 idle, found " + genericObjectPool.getNumIdle()); - for(int i=0 ; i<5 ; i++) { + for (int i = 0; i < 5; i++) { genericObjectPool.returnObject(active[i]); } - try { Thread.sleep(150L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(150L); assertEquals(10, genericObjectPool.getNumIdle(), "Should be 10 idle, found " + genericObjectPool.getNumIdle()); } @@ -2469,40 +2417,40 @@ public class TestGenericObjectPool extends TestBaseObjectPool { genericObjectPool.setTimeBetweenEvictionRuns(Duration.ofMillis(100)); genericObjectPool.setTestWhileIdle(true); - try { Thread.sleep(150L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(150L); assertEquals(5, genericObjectPool.getNumIdle(), "Should be 5 idle, found " + genericObjectPool.getNumIdle()); final String[] active = new String[10]; - try { Thread.sleep(150L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(150L); assertEquals(5, genericObjectPool.getNumIdle(), "Should be 5 idle, found " + genericObjectPool.getNumIdle()); for (int i = 0; i < 5; i++) { active[i] = genericObjectPool.borrowObject(); } - try { Thread.sleep(150L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(150L); assertEquals(5, genericObjectPool.getNumIdle(), "Should be 5 idle, found " + genericObjectPool.getNumIdle()); for(int i = 0 ; i < 5 ; i++) { genericObjectPool.returnObject(active[i]); } - try { Thread.sleep(150L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(150L); assertEquals(10, genericObjectPool.getNumIdle(), "Should be 10 idle, found " + genericObjectPool.getNumIdle()); for (int i = 0; i < 10; i++) { active[i] = genericObjectPool.borrowObject(); } - try { Thread.sleep(150L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(150L); assertEquals(0, genericObjectPool.getNumIdle(), "Should be 0 idle, found " + genericObjectPool.getNumIdle()); for (int i = 0; i < 10; i++) { genericObjectPool.returnObject(active[i]); } - try { Thread.sleep(150L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(150L); assertEquals(10, genericObjectPool.getNumIdle(), "Should be 10 idle, found " + genericObjectPool.getNumIdle()); } @@ -2855,7 +2803,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool { genericObjectPool.setTimeBetweenEvictionRuns(Duration.ofMillis(50)); // wait a second (well, .2 seconds) - try { Thread.sleep(200L); } catch(final InterruptedException e) { } + Waiter.sleepQuietly(200L); // assert that the evictor has cleared out the pool assertEquals(0,genericObjectPool.getNumIdle(),"Should have 0 idle"); diff --git a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPoolFactoryCreateFailure.java b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPoolFactoryCreateFailure.java index 0435252..e7a6fb1 100644 --- a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPoolFactoryCreateFailure.java +++ b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPoolFactoryCreateFailure.java @@ -26,6 +26,7 @@ import java.util.concurrent.atomic.AtomicBoolean; import org.apache.commons.pool2.BasePooledObjectFactory; import org.apache.commons.pool2.PooledObject; +import org.apache.commons.pool2.Waiter; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Timeout; @@ -79,7 +80,7 @@ public class TestGenericObjectPoolFactoryCreateFailure { failed.set(true); } else { // just to make sure, borrowObject has started waiting on queue - sleepIgnoreException(1000); + Waiter.sleepQuietly(1000); } pool.returnObject(obj); @@ -95,14 +96,6 @@ public class TestGenericObjectPoolFactoryCreateFailure { // System.out.println(msg); } - private static void sleepIgnoreException(final long millis) { - try { - Thread.sleep(millis); - } catch(final Throwable e) { - // ignore - } - } - @Test @Timeout(value = 10_000, unit = TimeUnit.MILLISECONDS) public void testBorrowObjectStuck() { @@ -129,7 +122,7 @@ public class TestGenericObjectPoolFactoryCreateFailure { // wait for object to be created while (!factory.created.get()) { - sleepIgnoreException(5); + Waiter.sleepQuietly((long) 5); } // now borrow diff --git a/src/test/java/org/apache/commons/pool2/performance/SleepingObjectFactory.java b/src/test/java/org/apache/commons/pool2/performance/SleepingObjectFactory.java index 08f5f89..bcf0165 100644 --- a/src/test/java/org/apache/commons/pool2/performance/SleepingObjectFactory.java +++ b/src/test/java/org/apache/commons/pool2/performance/SleepingObjectFactory.java @@ -19,6 +19,7 @@ package org.apache.commons.pool2.performance; import org.apache.commons.pool2.PooledObject; import org.apache.commons.pool2.PooledObjectFactory; +import org.apache.commons.pool2.Waiter; import org.apache.commons.pool2.impl.DefaultPooledObject; /** @@ -32,7 +33,7 @@ public class SleepingObjectFactory implements PooledObjectFactory<Integer> { @Override public void activateObject(final PooledObject<Integer> obj) throws Exception { debug("activateObject", obj); - sleep(10); + Waiter.sleepQuietly(10); } private void debug(final String method, final Object obj) { @@ -45,7 +46,7 @@ public class SleepingObjectFactory implements PooledObjectFactory<Integer> { @Override public void destroyObject(final PooledObject<Integer> obj) throws Exception { debug("destroyObject", obj); - sleep(250); + Waiter.sleepQuietly(250); } public boolean isDebug() { @@ -58,33 +59,24 @@ public class SleepingObjectFactory implements PooledObjectFactory<Integer> { // check for a specific object. final Integer obj = Integer.valueOf(counter++); debug("makeObject", obj); - sleep(500); + Waiter.sleepQuietly(500); return new DefaultPooledObject<>(obj); } @Override public void passivateObject(final PooledObject<Integer> obj) throws Exception { debug("passivateObject", obj); - sleep(10); + Waiter.sleepQuietly(10); } public void setDebug(final boolean b) { debug = b; } - private void sleep(final long millis) { - try { - Thread.sleep(millis); - } - catch (final InterruptedException e) { - // ignore - } - } - @Override public boolean validateObject(final PooledObject<Integer> obj) { debug("validateObject", obj); - sleep(30); + Waiter.sleepQuietly(30); return true; } }
