Properly handle RequestVote in all states
[controller.git] / opendaylight / md-sal / sal-akka-raft / src / test / java / org / opendaylight / controller / cluster / raft / behaviors / LeaderTest.java
index d0497f3d0a0727cf5a86a5b7579e827c8acd0cc9..5684d6651ebf2fc797c4fd7f2ffb76a569a436bb 100644 (file)
@@ -1,5 +1,7 @@
 package org.opendaylight.controller.cluster.raft.behaviors;
 
+import akka.actor.ActorRef;
+import akka.actor.Props;
 import akka.testkit.JavaTestKit;
 import junit.framework.Assert;
 import org.junit.Test;
@@ -8,6 +10,7 @@ import org.opendaylight.controller.cluster.raft.RaftActorContext;
 import org.opendaylight.controller.cluster.raft.RaftState;
 import org.opendaylight.controller.cluster.raft.internal.messages.SendHeartBeat;
 import org.opendaylight.controller.cluster.raft.messages.AppendEntries;
+import org.opendaylight.controller.cluster.raft.utils.DoNothingActor;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -17,15 +20,18 @@ import static org.junit.Assert.assertEquals;
 
 public class LeaderTest extends AbstractRaftActorBehaviorTest {
 
+    private ActorRef leaderActor = getSystem().actorOf(Props.create(DoNothingActor.class));
+    private ActorRef senderActor = getSystem().actorOf(Props.create(DoNothingActor.class));
+
     @Test
     public void testHandleMessageForUnknownMessage() throws Exception {
         new JavaTestKit(getSystem()) {{
             Leader leader =
-                new Leader(new MockRaftActorContext(), Collections.EMPTY_LIST);
+                new Leader(createActorContext(), Collections.EMPTY_LIST);
 
             // handle message should return the Leader state when it receives an
             // unknown message
-            RaftState state = leader.handleMessage(getRef(), "foo");
+            RaftState state = leader.handleMessage(senderActor, "foo");
             Assert.assertEquals(RaftState.Leader, state);
         }};
     }
@@ -38,12 +44,14 @@ public class LeaderTest extends AbstractRaftActorBehaviorTest {
             new Within(duration("1 seconds")) {
                 protected void run() {
 
+                    ActorRef followerActor = getTestActor();
+
                     List<String> followers = new ArrayList();
 
-                    followers.add(getTestActor().path().toString());
+                    followers.add(followerActor.path().toString());
 
-                    Leader leader = new Leader(new MockRaftActorContext("test", getSystem(), getTestActor()), followers);
-                    leader.handleMessage(getRef(), new SendHeartBeat());
+                    Leader leader = new Leader(createActorContext(), followers);
+                    leader.handleMessage(senderActor, new SendHeartBeat());
 
                     final String out = new ExpectMsg<String>(duration("1 seconds"), "match hint") {
                         // do not put code outside this method, will run afterwards
@@ -72,4 +80,8 @@ public class LeaderTest extends AbstractRaftActorBehaviorTest {
     @Override protected RaftActorBehavior createBehavior(RaftActorContext actorContext) {
         return new Leader(actorContext, Collections.EMPTY_LIST);
     }
+
+    @Override protected RaftActorContext createActorContext() {
+        return new MockRaftActorContext("test", getSystem(), leaderActor);
+    }
 }