Search in sources :

Example 36 with Fiber

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();
}
Also used : SuspendableRunnable(co.paralleluniverse.strands.SuspendableRunnable) Fiber(co.paralleluniverse.fibers.Fiber) QueueCapacityExceededException(co.paralleluniverse.strands.queues.QueueCapacityExceededException) Test(org.junit.Test)

Example 37 with Fiber

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();
}
Also used : SuspendableRunnable(co.paralleluniverse.strands.SuspendableRunnable) Fiber(co.paralleluniverse.fibers.Fiber) Ignore(org.junit.Ignore) Test(org.junit.Test)

Example 38 with Fiber

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();
}
Also used : SuspendableRunnable(co.paralleluniverse.strands.SuspendableRunnable) Fiber(co.paralleluniverse.fibers.Fiber) Test(org.junit.Test)

Example 39 with Fiber

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();
}
Also used : SuspendableRunnable(co.paralleluniverse.strands.SuspendableRunnable) Fiber(co.paralleluniverse.fibers.Fiber) Test(org.junit.Test)

Example 40 with Fiber

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();
}
Also used : SuspendableRunnable(co.paralleluniverse.strands.SuspendableRunnable) Fiber(co.paralleluniverse.fibers.Fiber) Test(org.junit.Test)

Aggregations

Fiber (co.paralleluniverse.fibers.Fiber)105 Test (org.junit.Test)88 SuspendableRunnable (co.paralleluniverse.strands.SuspendableRunnable)73 SuspendExecution (co.paralleluniverse.fibers.SuspendExecution)20 Strand (co.paralleluniverse.strands.Strand)8 IntChannel (co.paralleluniverse.strands.channels.IntChannel)4 QueueCapacityExceededException (co.paralleluniverse.strands.queues.QueueCapacityExceededException)4 ExecutionException (java.util.concurrent.ExecutionException)3 Ignore (org.junit.Ignore)3 Timeout (co.paralleluniverse.strands.Timeout)2 Channel (co.paralleluniverse.strands.channels.Channel)2 ReceivePort (co.paralleluniverse.strands.channels.ReceivePort)2 TimeoutException (java.util.concurrent.TimeoutException)2 ActorRef (co.paralleluniverse.actors.ActorRef)1 AbstractServerHandler (co.paralleluniverse.actors.behaviors.AbstractServerHandler)1 ServerActor (co.paralleluniverse.actors.behaviors.ServerActor)1 Function2 (co.paralleluniverse.common.util.Function2)1 Pair (co.paralleluniverse.common.util.Pair)1 FiberScheduler (co.paralleluniverse.fibers.FiberScheduler)1 FiberWriter (co.paralleluniverse.fibers.FiberWriter)1