use of co.paralleluniverse.fibers.Fiber in project quasar by puniverse.
the class ChannelTest method testPrimitiveChannelCloseException.
@Test
public void testPrimitiveChannelCloseException() throws Exception {
assumeThat(mailboxSize, not(equalTo(0)));
final IntChannel ch = Channels.newIntChannel(mailboxSize, policy);
Fiber fib = new Fiber("fiber", scheduler, new SuspendableRunnable() {
@Override
public void run() throws SuspendExecution, InterruptedException {
try {
for (int i = 1; i <= 5; i++) {
int m = ch.receiveInt();
assertThat(m, is(i));
}
} catch (QueueChannel.EOFException e) {
fail();
}
try {
int m = ch.receiveInt();
fail("m = " + m);
} catch (ProducerException e) {
assertThat(e.getCause().getMessage(), equalTo("foo"));
} catch (ReceivePort.EOFException e) {
fail();
}
assertTrue(ch.isClosed());
}
}).start();
Thread.sleep(50);
ch.send(1);
ch.send(2);
ch.send(3);
ch.send(4);
ch.send(5);
ch.close(new Exception("foo"));
ch.send(6);
ch.send(7);
fib.join();
}
use of co.paralleluniverse.fibers.Fiber in project quasar by puniverse.
the class ChannelTest method whenReceiveNotCalledFromOwnerThenThrowException3.
@Ignore
@Test
public void whenReceiveNotCalledFromOwnerThenThrowException3() 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 {
Fiber.sleep(100);
ch.send("a message");
boolean thrown = false;
try {
ch.receive();
} catch (Throwable e) {
thrown = true;
}
assertTrue(thrown);
}
}).start();
String m = ch.receive();
assertThat(m, equalTo("a message"));
fib.join();
}
use of co.paralleluniverse.fibers.Fiber in project quasar by puniverse.
the class ChannelTest method testChannelClose.
@Test
public void testChannelClose() throws Exception {
final Channel<Integer> ch = newChannel();
Fiber fib = new 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));
}
Integer m = ch.receive();
assertThat(m, nullValue());
assertTrue(ch.isClosed());
}
}).start();
Thread.sleep(50);
ch.send(1);
ch.send(2);
ch.send(3);
ch.send(4);
ch.send(5);
ch.close();
ch.send(6);
ch.send(7);
fib.join();
}
use of co.paralleluniverse.fibers.Fiber in project quasar by puniverse.
the class ChannelTest method testPrimitiveChannelClose.
@Test
public void testPrimitiveChannelClose() throws Exception {
assumeThat(mailboxSize, not(equalTo(0)));
final IntChannel ch = Channels.newIntChannel(mailboxSize, policy);
Fiber fib = new Fiber("fiber", scheduler, new SuspendableRunnable() {
@Override
public void run() throws SuspendExecution, InterruptedException {
try {
for (int i = 1; i <= 5; i++) {
int m = ch.receiveInt();
assertThat(m, is(i));
}
} catch (QueueChannel.EOFException e) {
fail();
}
try {
int m = ch.receiveInt();
fail("m = " + m);
} catch (QueueChannel.EOFException e) {
}
assertTrue(ch.isClosed());
}
}).start();
Thread.sleep(50);
ch.send(1);
ch.send(2);
ch.send(3);
ch.send(4);
ch.send(5);
ch.close();
ch.send(6);
ch.send(7);
fib.join();
}
use of co.paralleluniverse.fibers.Fiber in project quasar by puniverse.
the class TransferSelectorTest method testSelectSend1.
@Test
public void testSelectSend1() throws Exception {
final Channel<String> channel1 = newChannel();
final Channel<String> channel2 = newChannel();
final Channel<String> channel3 = newChannel();
Fiber fib = new Fiber("fiber", scheduler, new SuspendableRunnable() {
@Override
public void run() throws SuspendExecution, InterruptedException {
SelectAction<String> sa1 = select(send(channel1, "hi1"), send(channel2, "hi2"), send(channel3, "hi3"));
SelectAction<String> sa2 = select(send(channel1, "hi1"), send(channel2, "hi2"), send(channel3, "hi3"));
assertThat(sa1.index(), is(1));
assertThat(sa2.index(), is(0));
}
}).start();
Thread.sleep(200);
String m1 = channel2.receive();
assertThat(m1, equalTo("hi2"));
Thread.sleep(200);
String m2 = channel1.receive();
assertThat(m2, equalTo("hi1"));
fib.join();
}
Aggregations