Add QuarantinedMonitorActor unit test 13/53613/4
authorAndrej Mak <andrej.mak@pantheon.tech>
Tue, 21 Mar 2017 14:08:38 +0000 (15:08 +0100)
committerTom Pantelis <tompantelis@gmail.com>
Thu, 23 Mar 2017 11:21:24 +0000 (11:21 +0000)
Change-Id: I4e007dd15b1a632b8204812a49a6149615901af4
Signed-off-by: Andrej Mak <andrej.mak@pantheon.tech>
opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/common/actor/QuarantinedMonitorActorTest.java [new file with mode: 0644]

diff --git a/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/common/actor/QuarantinedMonitorActorTest.java b/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/common/actor/QuarantinedMonitorActorTest.java
new file mode 100644 (file)
index 0000000..bf5b9fc
--- /dev/null
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017 Pantheon Technologies s.r.o. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.controller.cluster.common.actor;
+
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.timeout;
+import static org.mockito.Mockito.verify;
+
+import akka.actor.ActorRef;
+import akka.actor.ActorSystem;
+import akka.actor.Address;
+import akka.event.Logging;
+import akka.japi.Effect;
+import akka.remote.AssociationErrorEvent;
+import akka.remote.InvalidAssociation;
+import akka.testkit.JavaTestKit;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import scala.Option;
+
+public class QuarantinedMonitorActorTest {
+
+    private static final Address LOCAL = Address.apply("http", "local");
+    private static final Address REMOTE = Address.apply("http", "remote");
+
+    @Mock
+    private Effect callback;
+    private ActorSystem system;
+    private ActorRef actor;
+
+    @Before
+    public void setUp() throws Exception {
+        MockitoAnnotations.initMocks(this);
+        system = ActorSystem.apply();
+        actor = system.actorOf(QuarantinedMonitorActor.props(callback));
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        JavaTestKit.shutdownActorSystem(system);
+    }
+
+    @Test
+    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 AssociationErrorEvent event = new AssociationErrorEvent(cause, LOCAL, REMOTE, true, Logging.ErrorLevel());
+        actor.tell(event, ActorRef.noSender());
+        verify(callback, timeout(1000)).apply();
+    }
+
+    @Test
+    public void testOnReceiveAnother() throws Exception {
+        final Address local = Address.apply("http", "local");
+        final Address remote = Address.apply("http", "remote");
+        final Throwable t = new RuntimeException("Another exception");
+        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());
+        verify(callback, never()).apply();
+    }
+
+}
\ No newline at end of file