X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-akka-raft%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fraft%2Fbehaviors%2FIsolatedLeaderTest.java;h=794a18d2d253d5f84dfc3258c026900ae2d03204;hb=HEAD;hp=e16d765cdea29a76b0a18440a3128c1a4f2529e6;hpb=e3998d55e33da9f6ecb69da75ecc71a047b6362b;p=controller.git 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..794a18d2d2 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,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 { - private final TestActorRef leaderActor = actorFactory.createTestActor( - Props.create(MessageCollectorActor.class), actorFactory.generateActorId("leader")); + private final ActorRef leaderActor = actorFactory.createActor( + MessageCollectorActor.props(), actorFactory.generateActorId("leader")); - private final TestActorRef 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)); + 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 - 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 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 )); + 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 - 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)); + 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(); } }