import akka.japi.Effect;
import akka.remote.AssociationErrorEvent;
import akka.remote.InvalidAssociation;
-import akka.remote.ThisActorSystemQuarantinedEvent;
+import akka.remote.UniqueAddress;
+import akka.remote.artery.ThisActorSystemQuarantinedEvent;
import akka.testkit.javadsl.TestKit;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
+import org.junit.runner.RunWith;
import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
+import org.mockito.junit.MockitoJUnitRunner;
import scala.Option;
+@RunWith(MockitoJUnitRunner.StrictStubs.class)
public class QuarantinedMonitorActorTest {
private static final Address LOCAL = Address.apply("http", "local");
@Before
public void setUp() {
- MockitoAnnotations.initMocks(this);
system = ActorSystem.apply();
actor = system.actorOf(QuarantinedMonitorActor.props(callback));
}
public void testOnReceiveQuarantined() throws Exception {
final Throwable t = new RuntimeException("Remote has quarantined this system");
final InvalidAssociation cause = InvalidAssociation.apply(LOCAL, REMOTE, t, Option.apply(null));
- final ThisActorSystemQuarantinedEvent event = new ThisActorSystemQuarantinedEvent(LOCAL, REMOTE);
+ final UniqueAddress localAddress = new UniqueAddress(LOCAL, 1);
+ final UniqueAddress remoteAddress = new UniqueAddress(REMOTE, 2);
+ final ThisActorSystemQuarantinedEvent event = new ThisActorSystemQuarantinedEvent(localAddress, remoteAddress);
actor.tell(event, ActorRef.noSender());
verify(callback, timeout(1000)).apply();
}
+ @Test
+ public void testOnReceiveQuarantinedAsAssociation() throws Exception {
+ for (int i = 0; i < 9; i++) {
+ final Throwable t =
+ new RuntimeException("The remote system has a UID that has been quarantined. Association aborted.");
+ final InvalidAssociation cause = InvalidAssociation.apply(LOCAL, REMOTE, t, Option.apply(null));
+ final AssociationErrorEvent event =
+ new AssociationErrorEvent(cause, LOCAL, REMOTE, true, Logging.ErrorLevel());
+ actor.tell(event, ActorRef.noSender());
+ }
+
+ final Address local1 = Address.apply("http", "local1");
+ final Address remote1 = Address.apply("http", "remote1");
+ final Throwable t1 =
+ new RuntimeException("The remote system has a UID that has been quarantined. Association aborted.");
+ final InvalidAssociation cause1 = InvalidAssociation.apply(local1, remote1, t1, Option.apply(null));
+ final AssociationErrorEvent event1 =
+ new AssociationErrorEvent(cause1, local1, remote1, true, Logging.ErrorLevel());
+ actor.tell(event1, ActorRef.noSender());
+ verify(callback, timeout(1000)).apply();
+ }
+
@Test
public void testOnReceiveAnother() throws Exception {
final Address local = Address.apply("http", "local");
actor.tell(event, ActorRef.noSender());
verify(callback, never()).apply();
}
-
}
\ No newline at end of file