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%2FRecoveryIntegrationTest.java;h=2ef77c162e72c54df841e8501eda299cc0d56ba3;hb=d0755da7907c23b46ff706e96f8da64d588612f7;hp=de6a4909c3c46ec5aac42a8455c69c2f2b446644;hpb=12fcdfe39aa26dcba7fd3bb4d4c68e3d02e65c51;p=controller.git diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RecoveryIntegrationTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RecoveryIntegrationTest.java index de6a4909c3..2ef77c162e 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RecoveryIntegrationTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RecoveryIntegrationTest.java @@ -204,6 +204,51 @@ public class RecoveryIntegrationTest extends AbstractRaftActorIntegrationTest { assertEquals("Follower state", expFollowerState, follower2Underlying.getState()); } + @Test + public void testRecoveryDeleteEntries() { + send2InitialPayloads(); + + sendPayloadData(leaderActor, "two"); + + // This should trigger a snapshot. + sendPayloadData(leaderActor, "three"); + + MessageCollectorActor.expectFirstMatching(leaderCollectorActor, SaveSnapshotSuccess.class); + MessageCollectorActor.expectMatching(leaderCollectorActor, ApplyJournalEntries.class, 2); + + // Disconnect follower from leader + killActor(follower1Actor); + + // Send another payloads + sendPayloadData(leaderActor, "four"); + sendPayloadData(leaderActor, "five"); + + verifyRaftState(leaderActor, raftState -> { + assertEquals("leader journal last index", 5, leaderContext.getReplicatedLog().lastIndex()); + }); + + // Remove entries started from 4 index + leaderActor.underlyingActor().getReplicatedLog().removeFromAndPersist(4); + + verifyRaftState(leaderActor, raftState -> { + assertEquals("leader journal last index", 3, leaderContext.getReplicatedLog().lastIndex()); + }); + + // Send new payloads + final MockPayload payload4 = sendPayloadData(leaderActor,"newFour"); + final MockPayload payload5 = sendPayloadData(leaderActor,"newFive"); + + verifyRaftState(leaderActor, raftState -> { + assertEquals("leader journal last index", 5, leaderContext.getReplicatedLog().lastIndex()); + }); + + reinstateLeaderActor(); + + assertEquals("Leader last index", 5 , leaderActor.underlyingActor().getReplicatedLog().lastIndex()); + assertEquals(payload4 ,leaderActor.underlyingActor().getReplicatedLog().get(4).getData()); + assertEquals(payload5 ,leaderActor.underlyingActor().getReplicatedLog().get(5).getData()); + } + private void reinstateLeaderActor() { killActor(leaderActor);