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%2FFollowerTest.java;h=227d1effa7e9b8b3bb65932fe8c25b1a2eecdbf5;hb=42b0a219eb651783d50caedbfec0718cd4d9558c;hp=b7c371dd39722986b7601bec8cce1e0127ec71d4;hpb=02bdbc1c781abc0b0b1d12dbfc1a19c316bebb98;p=controller.git diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/FollowerTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/FollowerTest.java index b7c371dd39..227d1effa7 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/FollowerTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/FollowerTest.java @@ -5,11 +5,12 @@ import akka.actor.Props; import akka.testkit.JavaTestKit; import junit.framework.Assert; import org.junit.Test; +import org.opendaylight.controller.cluster.raft.DefaultConfigParamsImpl; import org.opendaylight.controller.cluster.raft.MockRaftActorContext; import org.opendaylight.controller.cluster.raft.RaftActorContext; import org.opendaylight.controller.cluster.raft.RaftState; import org.opendaylight.controller.cluster.raft.ReplicatedLogEntry; -import org.opendaylight.controller.cluster.raft.internal.messages.ElectionTimeout; +import org.opendaylight.controller.cluster.raft.base.messages.ElectionTimeout; import org.opendaylight.controller.cluster.raft.messages.AppendEntries; import org.opendaylight.controller.cluster.raft.messages.AppendEntriesReply; import org.opendaylight.controller.cluster.raft.messages.RequestVote; @@ -41,12 +42,12 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { public void testThatAnElectionTimeoutIsTriggered(){ new JavaTestKit(getSystem()) {{ - new Within(duration("1 seconds")) { + new Within(DefaultConfigParamsImpl.HEART_BEAT_INTERVAL.$times(6)) { protected void run() { Follower follower = new Follower(createActorContext(getTestActor())); - final Boolean out = new ExpectMsg(duration("1 seconds"), "ElectionTimeout") { + final Boolean out = new ExpectMsg(DefaultConfigParamsImpl.HEART_BEAT_INTERVAL.$times(6), "ElectionTimeout") { // do not put code outside this method, will run afterwards protected Boolean match(Object in) { if (in instanceof ElectionTimeout) { @@ -157,17 +158,18 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { createActorContext(); context.setLastApplied(100); - setLastLogEntry((MockRaftActorContext) context, 0, 0, ""); + setLastLogEntry((MockRaftActorContext) context, 1, 100, new MockRaftActorContext.MockPayload("")); + ((MockRaftActorContext) context).getReplicatedLog().setSnapshotIndex(99); List entries = Arrays.asList( - (ReplicatedLogEntry) new MockRaftActorContext.MockReplicatedLogEntry(100, 101, - "foo") + (ReplicatedLogEntry) new MockRaftActorContext.MockReplicatedLogEntry(2, 101, + new MockRaftActorContext.MockPayload("foo")) ); // The new commitIndex is 101 AppendEntries appendEntries = - new AppendEntries(100, "leader-1", 0, 0, entries, 101); + new AppendEntries(2, "leader-1", 100, 1, entries, 101); RaftState raftState = createBehavior(context).handleMessage(getRef(), appendEntries); @@ -198,7 +200,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { // Set the last log entry term for the receiver to be greater than // what we will be sending as the prevLogTerm in AppendEntries MockRaftActorContext.SimpleReplicatedLog mockReplicatedLog = - setLastLogEntry(context, 20, 0, ""); + setLastLogEntry(context, 20, 0, new MockRaftActorContext.MockPayload("")); // AppendEntries is now sent with a bigger term // this will set the receivers term to be the same as the sender's term @@ -259,20 +261,20 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { MockRaftActorContext.SimpleReplicatedLog log = new MockRaftActorContext.SimpleReplicatedLog(); log.append( - new MockRaftActorContext.MockReplicatedLogEntry(1, 0, "zero")); + new MockRaftActorContext.MockReplicatedLogEntry(1, 0, new MockRaftActorContext.MockPayload("zero"))); log.append( - new MockRaftActorContext.MockReplicatedLogEntry(1, 1, "one")); + new MockRaftActorContext.MockReplicatedLogEntry(1, 1, new MockRaftActorContext.MockPayload("one"))); log.append( - new MockRaftActorContext.MockReplicatedLogEntry(1, 2, "two")); + new MockRaftActorContext.MockReplicatedLogEntry(1, 2, new MockRaftActorContext.MockPayload("two"))); context.setReplicatedLog(log); // Prepare the entries to be sent with AppendEntries List entries = new ArrayList<>(); entries.add( - new MockRaftActorContext.MockReplicatedLogEntry(1, 3, "three")); + new MockRaftActorContext.MockReplicatedLogEntry(1, 3, new MockRaftActorContext.MockPayload("three"))); entries.add( - new MockRaftActorContext.MockReplicatedLogEntry(1, 4, "four")); + new MockRaftActorContext.MockReplicatedLogEntry(1, 4, new MockRaftActorContext.MockPayload("four"))); // Send appendEntries with the same term as was set on the receiver // before the new behavior was created (1 in this case) @@ -339,20 +341,20 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { MockRaftActorContext.SimpleReplicatedLog log = new MockRaftActorContext.SimpleReplicatedLog(); log.append( - new MockRaftActorContext.MockReplicatedLogEntry(1, 0, "zero")); + new MockRaftActorContext.MockReplicatedLogEntry(1, 0, new MockRaftActorContext.MockPayload("zero"))); log.append( - new MockRaftActorContext.MockReplicatedLogEntry(1, 1, "one")); + new MockRaftActorContext.MockReplicatedLogEntry(1, 1, new MockRaftActorContext.MockPayload("one"))); log.append( - new MockRaftActorContext.MockReplicatedLogEntry(1, 2, "two")); + new MockRaftActorContext.MockReplicatedLogEntry(1, 2, new MockRaftActorContext.MockPayload("two"))); context.setReplicatedLog(log); // Prepare the entries to be sent with AppendEntries List entries = new ArrayList<>(); entries.add( - new MockRaftActorContext.MockReplicatedLogEntry(2, 2, "two-1")); + new MockRaftActorContext.MockReplicatedLogEntry(2, 2, new MockRaftActorContext.MockPayload("two-1"))); entries.add( - new MockRaftActorContext.MockReplicatedLogEntry(2, 3, "three")); + new MockRaftActorContext.MockReplicatedLogEntry(2, 3, new MockRaftActorContext.MockPayload("three"))); // Send appendEntries with the same term as was set on the receiver // before the new behavior was created (1 in this case) @@ -378,13 +380,13 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { assertEquals(4, log.last().getIndex() + 1); assertNotNull(log.get(2)); - - assertEquals("one", log.get(1).getData()); + assertEquals("one", log.get(1).getData().toString()); // Check that the entry at index 2 has the new data - assertEquals("two-1", log.get(2).getData()); + assertEquals("two-1", log.get(2).getData().toString()); + + assertEquals("three", log.get(3).getData().toString()); - assertEquals("three", log.get(3).getData()); assertNotNull(log.get(3)); // Also expect an AppendEntriesReply to be sent where success is false