package com.linkedin.parseq; import com.linkedin.parseq.internal.PrioritizableRunnable; import com.linkedin.parseq.internal.SerialExecutor; import java.util.concurrent.TimeUnit; import org.testng.annotations.Test; public class TestCancellingPlanExceptionHandler extends BaseEngineTest { @Override protected void customizeEngine(EngineBuilder engineBuilder) { engineBuilder.setTaskQueueFactory(ThrowingTaskQueue::new); } @Test public void testThrowingTaskQueue() { Task<Integer> task = Task.value(1); runAndWaitException(task, CancellationException.class, 5, TimeUnit.SECONDS); } private static class ThrowingTaskQueue implements SerialExecutor.TaskQueue<PrioritizableRunnable> { @Override public void add(PrioritizableRunnable value) { } @Override public PrioritizableRunnable poll() { return () -> { throw new RuntimeException(); }; } } }