summaryrefslogtreecommitdiffstats
path: root/vespajlib/src/test/java/com/yahoo/concurrent/ReceiverTestCase.java
diff options
context:
space:
mode:
Diffstat (limited to 'vespajlib/src/test/java/com/yahoo/concurrent/ReceiverTestCase.java')
-rw-r--r--vespajlib/src/test/java/com/yahoo/concurrent/ReceiverTestCase.java59
1 files changed, 59 insertions, 0 deletions
diff --git a/vespajlib/src/test/java/com/yahoo/concurrent/ReceiverTestCase.java b/vespajlib/src/test/java/com/yahoo/concurrent/ReceiverTestCase.java
new file mode 100644
index 00000000000..88d5283f46a
--- /dev/null
+++ b/vespajlib/src/test/java/com/yahoo/concurrent/ReceiverTestCase.java
@@ -0,0 +1,59 @@
+// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.concurrent;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+import com.yahoo.collections.Tuple2;
+
+/**
+ * Check for com.yahoo.concurrent.Receiver.
+ *
+ * @author <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a>
+ */
+public class ReceiverTestCase {
+
+ private static class Worker implements Runnable {
+ private static final String HELLO_WORLD = "Hello, World!";
+ private final Receiver<String> receiver;
+ private final long timeToWait;
+
+ Worker(Receiver<String> receiver, long timeToWait) {
+ this.receiver = receiver;
+ this.timeToWait = timeToWait;
+ }
+
+ @Override
+ public void run() {
+ try {
+ Thread.sleep(timeToWait);
+ } catch (InterruptedException e) {
+ fail("Test was interrupted.");
+ }
+ receiver.put(HELLO_WORLD);
+ }
+ }
+
+ @Test
+ public void testPut() throws InterruptedException {
+ Receiver<String> receiver = new Receiver<>();
+ Worker runnable = new Worker(receiver, 0);
+ Thread worker = new Thread(runnable);
+ worker.start();
+ Tuple2<Receiver.MessageState, String> answer = receiver.get(1000L * 1000L * 1000L);
+ assertEquals(Receiver.MessageState.VALID, answer.first);
+ assertEquals(answer.second, Worker.HELLO_WORLD);
+ }
+
+ @Test
+ public void testTimeOut() throws InterruptedException {
+ Receiver<String> receiver = new Receiver<>();
+ Worker runnable = new Worker(receiver, 1000L * 1000L * 1000L);
+ Thread worker = new Thread(runnable);
+ worker.start();
+ Tuple2<Receiver.MessageState, String> answer = receiver.get(500L);
+ assertEquals(Receiver.MessageState.TIMEOUT, answer.first);
+ }
+
+}