Improve leader election convergence
[controller.git] / opendaylight / md-sal / sal-akka-raft / src / test / java / org / opendaylight / controller / cluster / raft / behaviors / PartitionedCandidateOnStartupElectionScenarioTest.java
index 7ab76d271a31d7b7cd82aa1559c4507800088819..082defda94c14b7f336104427b0c41b4e814c0c0 100644 (file)
@@ -17,6 +17,7 @@ import org.opendaylight.controller.cluster.raft.MockRaftActorContext.MockReplica
 import org.opendaylight.controller.cluster.raft.MockRaftActorContext.SimpleReplicatedLog;
 import org.opendaylight.controller.cluster.raft.RaftState;
 import org.opendaylight.controller.cluster.raft.base.messages.ElectionTimeout;
+import org.opendaylight.controller.cluster.raft.base.messages.TimeoutNow;
 import org.opendaylight.controller.cluster.raft.messages.RequestVote;
 import org.opendaylight.controller.cluster.raft.messages.RequestVoteReply;
 
@@ -61,7 +62,7 @@ public class PartitionedCandidateOnStartupElectionScenarioTest extends AbstractL
         member3Actor.expectMessageClass(RequestVote.class, 1);
         member3Actor.expectBehaviorStateChange();
 
-        member1ActorRef.tell(new ElectionTimeout(), ActorRef.noSender());
+        member1ActorRef.tell(TimeoutNow.INSTANCE, ActorRef.noSender());
 
         member2Actor.waitForExpectedMessages(RequestVote.class);
         member3Actor.waitForExpectedMessages(RequestVote.class);
@@ -118,7 +119,7 @@ public class PartitionedCandidateOnStartupElectionScenarioTest extends AbstractL
             member3Actor.clear();
             member3Actor.expectMessageClass(RequestVoteReply.class, 1);
 
-            member3ActorRef.tell(new ElectionTimeout(), ActorRef.noSender());
+            member3ActorRef.tell(ElectionTimeout.INSTANCE, ActorRef.noSender());
 
             member1Actor.waitForExpectedMessages(RequestVote.class);
             member2Actor.waitForExpectedMessages(RequestVote.class);
@@ -181,13 +182,14 @@ public class PartitionedCandidateOnStartupElectionScenarioTest extends AbstractL
 
         Candidate member3Behavior = new Candidate(member3Context);
         member3Actor.behavior = member3Behavior;
+        member3Context.setCurrentBehavior(member3Behavior);
 
         // Send several additional ElectionTimeouts to Candidate member 3. Each ElectionTimeout will
         // start a new term so Candidate member 3's current term will be greater than the leader's
         // current term.
 
         for(int i = 0; i < numCandidateElections - 1; i++) {
-            member3ActorRef.tell(new ElectionTimeout(), ActorRef.noSender());
+            member3ActorRef.tell(ElectionTimeout.INSTANCE, ActorRef.noSender());
         }
 
         member1Actor.waitForExpectedMessages(RequestVote.class);
@@ -218,8 +220,8 @@ public class PartitionedCandidateOnStartupElectionScenarioTest extends AbstractL
         DefaultConfigParamsImpl member2ConfigParams = newConfigParams();
         member2Context.setConfigParams(member2ConfigParams);
 
-        Follower member2Behavior = new Follower(member2Context);
-        member2Actor.behavior = member2Behavior;
+        member2Actor.behavior = new Follower(member2Context);
+        member2Context.setCurrentBehavior(member2Actor.behavior);
 
         // Create member 1's behavior as Leader.
 
@@ -250,5 +252,6 @@ public class PartitionedCandidateOnStartupElectionScenarioTest extends AbstractL
         member2Context.getTermInformation().update(3, member1Context.getId());
 
         testLog.info("setupInitialMember1AndMember2Behaviors ending");
+
     }
 }