aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/concurrent/AbstractQueueVisitorTest.java
diff options
context:
space:
mode:
authorGravatar Mark Schaller <mschaller@google.com>2015-10-30 22:37:04 +0000
committerGravatar Florian Weikert <fwe@google.com>2015-11-02 16:55:33 +0000
commit1aa49da5e5f9e98ce3a2a0b96f387f2990a2363f (patch)
treeffca8b78242da3ccfc99959ea890c0cbdbf3c8ae /src/test/java/com/google/devtools/build/lib/concurrent/AbstractQueueVisitorTest.java
parent5350b3154665ebb37e10e6261686eb646ea23220 (diff)
Introduce ErrorClassifier
Changes the AbstractQueueVisitor strategy for varying its response to unhandled exceptions from inheritance to composition. This will help with a forthcoming switch from inheritance to delegation for ValueVisitor's use of AbstractQueueVisitor. -- MOS_MIGRATED_REVID=106730708
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/concurrent/AbstractQueueVisitorTest.java')
-rw-r--r--src/test/java/com/google/devtools/build/lib/concurrent/AbstractQueueVisitorTest.java43
1 files changed, 19 insertions, 24 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/concurrent/AbstractQueueVisitorTest.java b/src/test/java/com/google/devtools/build/lib/concurrent/AbstractQueueVisitorTest.java
index 2c62bec0b0..7bc6912e95 100644
--- a/src/test/java/com/google/devtools/build/lib/concurrent/AbstractQueueVisitorTest.java
+++ b/src/test/java/com/google/devtools/build/lib/concurrent/AbstractQueueVisitorTest.java
@@ -23,6 +23,7 @@ import static org.junit.Assert.fail;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import com.google.common.util.concurrent.Uninterruptibles;
+import com.google.devtools.build.lib.concurrent.ErrorClassifier.ErrorClassification;
import com.google.devtools.build.lib.testutil.TestThread;
import com.google.devtools.build.lib.testutil.TestUtils;
@@ -342,7 +343,8 @@ public class AbstractQueueVisitorTest {
ThreadPoolExecutor executor = new ThreadPoolExecutor(3, 3, 0, TimeUnit.SECONDS,
new LinkedBlockingQueue<Runnable>());
- final QueueVisitorWithCriticalError visitor = new QueueVisitorWithCriticalError(executor);
+ final AbstractQueueVisitor visitor =
+ createQueueVisitorWithErrorClassification(executor, ErrorClassification.CRITICAL);
final CountDownLatch latch1 = new CountDownLatch(1);
final AtomicBoolean wasInterrupted = new AtomicBoolean(false);
@@ -381,7 +383,8 @@ public class AbstractQueueVisitorTest {
public void javaErrorConsideredCriticalNoMatterWhat() throws Exception {
ThreadPoolExecutor executor = new ThreadPoolExecutor(2, 2, 0, TimeUnit.SECONDS,
new LinkedBlockingQueue<Runnable>());
- QueueVisitorWithoutCriticalError visitor = new QueueVisitorWithoutCriticalError(executor);
+ AbstractQueueVisitor visitor =
+ createQueueVisitorWithErrorClassification(executor, ErrorClassification.NOT_CRITICAL);
final CountDownLatch latch = new CountDownLatch(1);
final AtomicBoolean sleepFinished = new AtomicBoolean(false);
final AtomicBoolean sleepInterrupted = new AtomicBoolean(false);
@@ -533,27 +536,19 @@ public class AbstractQueueVisitorTest {
}
}
- private static class QueueVisitorWithCriticalError extends AbstractQueueVisitor {
-
- public QueueVisitorWithCriticalError(ThreadPoolExecutor executor) {
- super(/*concurrent=*/ true, executor, true, /*failFastOnException=*/ false, true);
- }
-
- @Override
- protected ErrorClassification classifyError(Throwable e) {
- return ErrorClassification.CRITICAL;
- }
- }
-
- private static class QueueVisitorWithoutCriticalError extends AbstractQueueVisitor {
-
- public QueueVisitorWithoutCriticalError(ThreadPoolExecutor executor) {
- super(/*concurrent=*/ true, executor, true, /*failFastOnException=*/ false, true);
- }
-
- @Override
- protected ErrorClassification classifyError(Throwable e) {
- return ErrorClassification.NOT_CRITICAL;
- }
+ private static AbstractQueueVisitor createQueueVisitorWithErrorClassification(
+ ThreadPoolExecutor executor, final ErrorClassification classification) {
+ return new AbstractQueueVisitor(
+ /*concurrent=*/ true,
+ executor,
+ /*shutdownOnCompletion=*/ true,
+ /*failFastOnException=*/ false,
+ /*failFastOnInterrupt=*/ true,
+ new ErrorClassifier() {
+ @Override
+ protected ErrorClassification classifyException(Exception e) {
+ return classification;
+ }
+ });
}
}