You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2021/08/13 21:58:36 UTC
[commons-pool] 02/02: Refactor so much duplication of the same
pattern.
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 <ga...@gmail.com>
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;
}
}