corda/sgx-jvm/avian/test/CompletionServiceTest.java
Andras Slemmer 9bb3d6b972 Add 'sgx-jvm/avian/' from commit '09e4fe60d01f4f4bfb6b2976973bb4913ef61edc'
git-subtree-dir: sgx-jvm/avian
git-subtree-mainline: f978eab8d1
git-subtree-split: 09e4fe60d0
2017-03-13 12:18:24 +00:00

55 lines
1.7 KiB
Java

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorCompletionService;
import java.util.concurrent.TimeUnit;
public class CompletionServiceTest {
public static void main(String args[]) throws InterruptedException, ExecutionException {
Executor dumbExecutor = new Executor() {
@Override
public void execute(Runnable task) {
new Thread(task).start();
}
};
pollNoResultTest(dumbExecutor);
pollTimeoutNoResultTest(dumbExecutor);
takeTest(dumbExecutor);
}
private static void verify(boolean val) {
if (! val) {
throw new RuntimeException();
}
}
private static void pollNoResultTest(Executor executor) {
ExecutorCompletionService<Object> ecs = new ExecutorCompletionService<Object>(executor);
verify(ecs.poll() == null);
}
private static void pollTimeoutNoResultTest(Executor executor) throws InterruptedException {
long delayTime = 0;
ExecutorCompletionService<Object> ecs = new ExecutorCompletionService<Object>(executor);
long startTime = System.currentTimeMillis();
verify(ecs.poll(delayTime, TimeUnit.MILLISECONDS) == null);
verify(System.currentTimeMillis() - startTime >= delayTime);
}
private static void takeTest(Executor executor) throws InterruptedException, ExecutionException {
ExecutorCompletionService<Object> ecs = new ExecutorCompletionService<Object>(executor);
final Object result = new Object();
ecs.submit(new Callable<Object>() {
@Override
public Object call() throws Exception {
return result;
}
});
verify(ecs.take().get() == result);
}
}