diff options
author | 2015-10-30 22:37:04 +0000 | |
---|---|---|
committer | 2015-11-02 16:55:33 +0000 | |
commit | 1aa49da5e5f9e98ce3a2a0b96f387f2990a2363f (patch) | |
tree | ffca8b78242da3ccfc99959ea890c0cbdbf3c8ae /src/test/java/com/google/devtools/build/lib/concurrent/AbstractQueueVisitorTest.java | |
parent | 5350b3154665ebb37e10e6261686eb646ea23220 (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.java | 43 |
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; + } + }); } } |