use of co.paralleluniverse.strands.SuspendableRunnable in project quasar by puniverse.
the class ChannelTest method sendMessageFromFiberToThread.
@Test
public void sendMessageFromFiberToThread() throws Exception {
final Channel<String> ch = newChannel();
Fiber fib = new Fiber("fiber", scheduler, new SuspendableRunnable() {
@Override
public void run() throws SuspendExecution, InterruptedException {
Fiber.sleep(100);
ch.send("a message");
}
}).start();
String m = ch.receive();
assertThat(m, equalTo("a message"));
fib.join();
}
use of co.paralleluniverse.strands.SuspendableRunnable in project quasar by puniverse.
the class ChannelTest method testChannelCloseExceptionWithSleep.
@Test
public void testChannelCloseExceptionWithSleep() throws Exception {
final Channel<Integer> ch = newChannel();
Fiber fib = new Fiber("fiber", scheduler, new SuspendableRunnable() {
@Override
public void run() throws SuspendExecution, InterruptedException {
for (int i = 1; i <= 5; i++) {
Integer m = ch.receive();
assertThat(m, equalTo(i));
}
try {
Integer m = ch.receive();
fail("m = " + m);
} catch (ProducerException e) {
assertThat(e.getCause().getMessage(), equalTo("foo"));
}
assertTrue(ch.isClosed());
}
}).start();
Thread.sleep(50);
ch.send(1);
ch.send(2);
ch.send(3);
ch.send(4);
ch.send(5);
Thread.sleep(50);
ch.close(new Exception("foo"));
ch.send(6);
ch.send(7);
fib.join();
}
use of co.paralleluniverse.strands.SuspendableRunnable in project quasar by puniverse.
the class ChannelTest method whenReceiveNotCalledFromOwnerThenThrowException1.
@Ignore
@Test
public void whenReceiveNotCalledFromOwnerThenThrowException1() throws Exception {
assumeTrue(Debug.isAssertionsEnabled());
final Channel<String> ch = newChannel();
Fiber fib1 = new Fiber("fiber", scheduler, new SuspendableRunnable() {
@Override
public void run() throws SuspendExecution, InterruptedException {
String m = ch.receive();
assertThat(m, equalTo("a message"));
}
}).start();
Fiber fib2 = new Fiber("fiber", scheduler, new SuspendableRunnable() {
@Override
public void run() throws SuspendExecution, InterruptedException {
Fiber.sleep(50);
ch.send("a message");
boolean thrown = false;
try {
ch.receive();
} catch (Throwable e) {
thrown = true;
}
assertTrue(thrown);
}
}).start();
fib1.join();
fib2.join();
}
use of co.paralleluniverse.strands.SuspendableRunnable in project quasar by puniverse.
the class ChannelTest method whenReceiveNotCalledFromOwnerThenThrowException2.
@Ignore
@Test
public void whenReceiveNotCalledFromOwnerThenThrowException2() throws Exception {
assumeTrue(Debug.isAssertionsEnabled());
final Channel<String> ch = newChannel();
Fiber fib = new Fiber("fiber", scheduler, new SuspendableRunnable() {
@Override
public void run() throws SuspendExecution, InterruptedException {
String m = ch.receive();
assertThat(m, equalTo("a message"));
}
}).start();
Thread.sleep(50);
ch.send("a message");
boolean thrown = false;
try {
ch.receive();
} catch (Throwable e) {
thrown = true;
}
assertTrue(thrown);
fib.join();
}
use of co.paralleluniverse.strands.SuspendableRunnable in project quasar by puniverse.
the class ChannelTest method sendMessageFromFiberToFiber.
@Test
public void sendMessageFromFiberToFiber() throws Exception {
final Channel<String> ch = newChannel();
Fiber fib1 = new Fiber("fiber", scheduler, new SuspendableRunnable() {
@Override
public void run() throws SuspendExecution, InterruptedException {
String m = ch.receive();
assertThat(m, equalTo("a message"));
}
}).start();
Fiber fib2 = new Fiber("fiber", scheduler, new SuspendableRunnable() {
@Override
public void run() throws SuspendExecution, InterruptedException {
Fiber.sleep(50);
ch.send("a message");
}
}).start();
fib1.join();
fib2.join();
}
Aggregations