X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-akka-raft%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fraft%2Fbehaviors%2FIsolatedLeaderTest.java;h=618bd4bb0d15d07ee41d27913151afaf6c9cedd1;hp=e16d765cdea29a76b0a18440a3128c1a4f2529e6;hb=e1eca73a5ae2ffae8dd78c6fe5281cd2f45d5ef3;hpb=e3998d55e33da9f6ecb69da75ecc71a047b6362b diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/IsolatedLeaderTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/IsolatedLeaderTest.java index e16d765cde..618bd4bb0d 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/IsolatedLeaderTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/IsolatedLeaderTest.java @@ -8,6 +8,7 @@ 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; @@ -22,7 +23,7 @@ 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 { private final TestActorRef leaderActor = actorFactory.createTestActor( Props.create(MessageCollectorActor.class), actorFactory.generateActorId("leader")); @@ -35,7 +36,7 @@ public class IsolatedLeaderTest extends AbstractLeaderTest { @Override @After public void tearDown() throws Exception { - if(isolatedLeader != null) { + if (isolatedLeader != null) { isolatedLeader.close(); } @@ -43,7 +44,7 @@ public class IsolatedLeaderTest extends AbstractLeaderTest { } @Override - protected RaftActorBehavior createBehavior(RaftActorContext actorContext) { + protected IsolatedLeader createBehavior(RaftActorContext actorContext) { return new IsolatedLeader(actorContext); } @@ -73,23 +74,24 @@ 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)); + 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 )); + isolatedLeader.lastIndex() - 1, isolatedLeader.lastTerm() - 1, (short)0 )); - assertEquals("Raft state", RaftState.Leader, behavior.state()); + assertEquals("Raft state", RaftState.Leader, newBehavior.state()); } @Test @@ -99,7 +101,7 @@ public class IsolatedLeaderTest extends AbstractLeaderTest { String followerAddress3 = "akka://test/user/$c"; String followerAddress4 = "akka://test/user/$d"; - MockRaftActorContext leaderActorContext = createActorContext(); + final MockRaftActorContext leaderActorContext = createActorContext(); Map peerAddresses = new HashMap<>(); peerAddresses.put("follower-1", followerAddress1); peerAddresses.put("follower-2", followerAddress2); @@ -108,29 +110,30 @@ 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 )); + 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 )); + 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 )); + isolatedLeader.lastIndex() - 1, isolatedLeader.lastTerm() - 1, (short)0 )); - assertEquals("Raft state", RaftState.Leader, behavior.state()); + assertEquals("Raft state", RaftState.Leader, newBehavior.state()); } @Test @@ -150,12 +153,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)); + 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(); } }