Search in sources :

Example 16 with Actor

use of actor4j.core.actors.Actor in project actor4j-core by relvaner.

the class SafetyFeature method test.

@Test(timeout = 2000)
public void test() {
    CountDownLatch testDone = new CountDownLatch(1);
    UUID dest = system.addActor(new ActorFactory() {

        @Override
        public Actor create() {
            return new Actor("SafetyFeatureActor") {

                @Override
                public void receive(ActorMessage<?> message) {
                    throw new NullPointerException();
                }

                @Override
                public void preRestart(Exception reason) {
                    super.preRestart(reason);
                    assertEquals(new NullPointerException().getMessage(), reason.getMessage());
                }

                @Override
                public void postRestart(Exception reason) {
                    super.postRestart(reason);
                    assertEquals(new NullPointerException().getMessage(), reason.getMessage());
                }
            };
        }
    });
    ErrorHandler errorHandler = system.underlyingImpl().getExecuterService().getSafetyManager().getErrorHandler();
    system.underlyingImpl().getExecuterService().getSafetyManager().setErrorHandler(new ErrorHandler() {

        @Override
        public void handle(Throwable t, String message, UUID uuid) {
            errorHandler.handle(t, message, uuid);
            assertEquals(new NullPointerException().getMessage(), t.getMessage());
            assertEquals("actor", message);
            assertEquals(dest, uuid);
            testDone.countDown();
        }
    });
    system.send(new ActorMessage<Object>(null, 0, system.SYSTEM_ID, dest));
    system.send(new ActorMessage<Object>(null, 0, system.SYSTEM_ID, dest));
    system.start();
    try {
        testDone.await();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    system.shutdown(true);
}
Also used : ErrorHandler(safety4j.ErrorHandler) CountDownLatch(java.util.concurrent.CountDownLatch) Actor(actor4j.core.actors.Actor) UUID(java.util.UUID) ActorFactory(actor4j.core.utils.ActorFactory) Test(org.junit.Test)

Aggregations

Actor (actor4j.core.actors.Actor)16 UUID (java.util.UUID)12 CountDownLatch (java.util.concurrent.CountDownLatch)10 Test (org.junit.Test)10 ActorFactory (actor4j.core.utils.ActorFactory)8 ActorMessage (actor4j.core.messages.ActorMessage)7 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)5 Consumer (java.util.function.Consumer)5 ActorSystem (actor4j.core.ActorSystem)3 PseudoActor (actor4j.core.actors.PseudoActor)3 ActorInitializationException (actor4j.core.exceptions.ActorInitializationException)3 ActorCell (actor4j.core.ActorCell)2 ActorDistributedGroupMember (actor4j.core.actors.ActorDistributedGroupMember)2 ActorGroupMember (actor4j.core.actors.ActorGroupMember)2 ResourceActor (actor4j.core.actors.ResourceActor)2 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)2 ActorThread (actor4j.core.ActorThread)1 ActorTimer (actor4j.core.ActorTimer)1 EmbeddedActor (actor4j.core.actors.EmbeddedActor)1 PersistentActor (actor4j.core.actors.PersistentActor)1