Make Netty-3 dependency optional
[controller.git] / opendaylight / md-sal / sal-akka-raft / src / test / java / org / opendaylight / controller / cluster / raft / behaviors / IsolatedLeaderTest.java
index 0eb58d427afa33c62a8c73c4e77b3aeb21db84a4..794a18d2d253d5f84dfc3258c026900ae2d03204 100644 (file)
@@ -8,9 +8,8 @@
 package org.opendaylight.controller.cluster.raft.behaviors;
 
 import static org.junit.Assert.assertEquals;
+
 import akka.actor.ActorRef;
-import akka.actor.Props;
-import akka.testkit.TestActorRef;
 import java.util.HashMap;
 import java.util.Map;
 import org.junit.After;
@@ -22,20 +21,20 @@ import org.opendaylight.controller.cluster.raft.RaftState;
 import org.opendaylight.controller.cluster.raft.messages.AppendEntriesReply;
 import org.opendaylight.controller.cluster.raft.utils.MessageCollectorActor;
 
-public class IsolatedLeaderTest  extends AbstractLeaderTest {
+public class IsolatedLeaderTest extends AbstractLeaderTest<IsolatedLeader> {
 
-    private final TestActorRef<MessageCollectorActor> leaderActor = actorFactory.createTestActor(
-            Props.create(MessageCollectorActor.class), actorFactory.generateActorId("leader"));
+    private final ActorRef leaderActor = actorFactory.createActor(
+            MessageCollectorActor.props(), actorFactory.generateActorId("leader"));
 
-    private final TestActorRef<MessageCollectorActor> senderActor = actorFactory.createTestActor(
-            Props.create(MessageCollectorActor.class), actorFactory.generateActorId("sender"));
+    private final ActorRef senderActor = actorFactory.createActor(
+            MessageCollectorActor.props(), actorFactory.generateActorId("sender"));
 
     private AbstractLeader isolatedLeader;
 
     @Override
     @After
-    public void tearDown() throws Exception {
-        if(isolatedLeader != null) {
+    public void tearDown() {
+        if (isolatedLeader != null) {
             isolatedLeader.close();
         }
 
@@ -43,7 +42,7 @@ public class IsolatedLeaderTest  extends AbstractLeaderTest {
     }
 
     @Override
-    protected RaftActorBehavior createBehavior(RaftActorContext actorContext) {
+    protected IsolatedLeader createBehavior(final RaftActorContext actorContext) {
         return new IsolatedLeader(actorContext);
     }
 
@@ -53,7 +52,7 @@ public class IsolatedLeaderTest  extends AbstractLeaderTest {
     }
 
     @Override
-    protected MockRaftActorContext createActorContext(ActorRef actor) {
+    protected MockRaftActorContext createActorContext(final ActorRef actor) {
         DefaultConfigParamsImpl configParams = new DefaultConfigParamsImpl();
         configParams.setElectionTimeoutFactor(100000);
         MockRaftActorContext context = new MockRaftActorContext("isolated-leader", getSystem(), actor);
@@ -62,7 +61,7 @@ public class IsolatedLeaderTest  extends AbstractLeaderTest {
     }
 
     @Test
-    public void testHandleMessageWithThreeMembers() throws Exception {
+    public void testHandleMessageWithThreeMembers() {
         String followerAddress1 = "akka://test/user/$a";
         String followerAddress2 = "akka://test/user/$b";
 
@@ -73,33 +72,34 @@ public class IsolatedLeaderTest  extends AbstractLeaderTest {
         leaderActorContext.setPeerAddresses(peerAddresses);
 
         isolatedLeader = new IsolatedLeader(leaderActorContext);
+        leaderActorContext.setCurrentBehavior(isolatedLeader);
         assertEquals("Raft state", RaftState.IsolatedLeader, isolatedLeader.state());
 
         // in a 3 node cluster, even if 1 follower is returns a reply, the isolatedLeader is not isolated
-        RaftActorBehavior behavior = isolatedLeader.handleMessage(senderActor,
+        RaftActorBehavior newBehavior = isolatedLeader.handleMessage(senderActor,
                 new AppendEntriesReply("follower-1", isolatedLeader.lastTerm() - 1, true,
                         isolatedLeader.lastIndex() - 1, isolatedLeader.lastTerm() - 1, (short)0));
 
-        assertEquals("Raft state", RaftState.Leader, behavior.state());
+        assertEquals("Raft state", RaftState.Leader, newBehavior.state());
 
         isolatedLeader.close();
-        isolatedLeader = (AbstractLeader) behavior;
+        isolatedLeader = (AbstractLeader) newBehavior;
 
-        behavior = isolatedLeader.handleMessage(senderActor,
+        newBehavior = isolatedLeader.handleMessage(senderActor,
                 new AppendEntriesReply("follower-2", isolatedLeader.lastTerm() - 1, true,
-                        isolatedLeader.lastIndex() -1, isolatedLeader.lastTerm() -1, (short)0 ));
+                        isolatedLeader.lastIndex() - 1, isolatedLeader.lastTerm() - 1, (short) 0));
 
-        assertEquals("Raft state", RaftState.Leader, behavior.state());
+        assertEquals("Raft state", RaftState.Leader, newBehavior.state());
     }
 
     @Test
-    public void testHandleMessageWithFiveMembers() throws Exception {
+    public void testHandleMessageWithFiveMembers() {
         String followerAddress1 = "akka://test/user/$a";
         String followerAddress2 = "akka://test/user/$b";
         String followerAddress3 = "akka://test/user/$c";
         String followerAddress4 = "akka://test/user/$d";
 
-        MockRaftActorContext leaderActorContext = createActorContext();
+        final MockRaftActorContext leaderActorContext = createActorContext();
         Map<String, String> peerAddresses = new HashMap<>();
         peerAddresses.put("follower-1", followerAddress1);
         peerAddresses.put("follower-2", followerAddress2);
@@ -108,33 +108,34 @@ public class IsolatedLeaderTest  extends AbstractLeaderTest {
         leaderActorContext.setPeerAddresses(peerAddresses);
 
         isolatedLeader = new IsolatedLeader(leaderActorContext);
+        leaderActorContext.setCurrentBehavior(isolatedLeader);
         assertEquals("Raft state", RaftState.IsolatedLeader, isolatedLeader.state());
 
         // in a 5 member cluster, atleast 2 followers need to be active and return a reply
-        RaftActorBehavior behavior = isolatedLeader.handleMessage(senderActor,
+        RaftActorBehavior newBehavior = isolatedLeader.handleMessage(senderActor,
                 new AppendEntriesReply("follower-1", isolatedLeader.lastTerm() - 1, true,
-                        isolatedLeader.lastIndex() -1, isolatedLeader.lastTerm() -1, (short)0 ));
+                        isolatedLeader.lastIndex() - 1, isolatedLeader.lastTerm() - 1, (short) 0));
 
-        assertEquals("Raft state", RaftState.IsolatedLeader, behavior.state());
+        assertEquals("Raft state", RaftState.IsolatedLeader, newBehavior.state());
 
-        behavior = isolatedLeader.handleMessage(senderActor,
+        newBehavior = isolatedLeader.handleMessage(senderActor,
                 new AppendEntriesReply("follower-2", isolatedLeader.lastTerm() - 1, true,
-                        isolatedLeader.lastIndex() -1, isolatedLeader.lastTerm() -1, (short)0 ));
+                        isolatedLeader.lastIndex() - 1, isolatedLeader.lastTerm() - 1, (short) 0));
 
-        assertEquals("Raft state", RaftState.Leader, behavior.state());
+        assertEquals("Raft state", RaftState.Leader, newBehavior.state());
 
         isolatedLeader.close();
-        isolatedLeader = (AbstractLeader) behavior;
+        isolatedLeader = (AbstractLeader) newBehavior;
 
-        behavior = isolatedLeader.handleMessage(senderActor,
+        newBehavior = isolatedLeader.handleMessage(senderActor,
                 new AppendEntriesReply("follower-3", isolatedLeader.lastTerm() - 1, true,
-                        isolatedLeader.lastIndex() -1, isolatedLeader.lastTerm() -1, (short)0 ));
+                        isolatedLeader.lastIndex() - 1, isolatedLeader.lastTerm() - 1, (short) 0));
 
-        assertEquals("Raft state", RaftState.Leader, behavior.state());
+        assertEquals("Raft state", RaftState.Leader, newBehavior.state());
     }
 
     @Test
-    public void testHandleMessageFromAnotherLeader() throws Exception {
+    public void testHandleMessageFromAnotherLeader() {
         String followerAddress1 = "akka://test/user/$a";
         String followerAddress2 = "akka://test/user/$b";
 
@@ -150,12 +151,12 @@ public class IsolatedLeaderTest  extends AbstractLeaderTest {
         // if an append-entries reply is received by the isolated-leader, and that reply
         // has a term  > than its own term, then IsolatedLeader switches to Follower
         // bowing itself to another leader in the cluster
-        RaftActorBehavior behavior = isolatedLeader.handleMessage(senderActor,
+        RaftActorBehavior newBehavior = isolatedLeader.handleMessage(senderActor,
                 new AppendEntriesReply("follower-1", isolatedLeader.lastTerm() + 1, true,
                         isolatedLeader.lastIndex() + 1, isolatedLeader.lastTerm() + 1, (short)0));
 
-        assertEquals("Raft state", RaftState.Follower, behavior.state());
+        assertEquals("Raft state", RaftState.Follower, newBehavior.state());
 
-        behavior.close();
+        newBehavior.close();
     }
 }