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%2FRaftActorTest.java;h=14bfd1d348b69dc76332fc35ec8f8f94dd80e8db;hb=68fb550b416dddd0a50e0110add0a4ae9b706758;hp=f71cb984b3e414bf879669cc64535e2d3d64c78c;hpb=3b2b1027ba6ab7bb1669466d1b7bdc0249809a08;p=controller.git diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorTest.java index f71cb984b3..14bfd1d348 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorTest.java @@ -98,10 +98,11 @@ public class RaftActorTest extends AbstractActorTest { InMemorySnapshotStore.clear(); } - public static class MockRaftActor extends RaftActor implements RaftActorRecoveryCohort { + public static class MockRaftActor extends RaftActor implements RaftActorRecoveryCohort, RaftActorSnapshotCohort { private final RaftActor actorDelegate; - private final RaftActorRecoveryCohort cohortDelegate; + private final RaftActorRecoveryCohort recoveryCohortDelegate; + private final RaftActorSnapshotCohort snapshotCohortDelegate; private final CountDownLatch recoveryComplete = new CountDownLatch(1); private final List state; private ActorRef roleChangeNotifier; @@ -139,7 +140,8 @@ public class RaftActorTest extends AbstractActorTest { super(id, peerAddresses, config); state = new ArrayList<>(); this.actorDelegate = mock(RaftActor.class); - this.cohortDelegate = mock(RaftActorRecoveryCohort.class); + this.recoveryCohortDelegate = mock(RaftActorRecoveryCohort.class); + this.snapshotCohortDelegate = mock(RaftActorSnapshotCohort.class); if(dataPersistenceProvider == null){ setPersistence(true); } else { @@ -210,6 +212,11 @@ public class RaftActorTest extends AbstractActorTest { return this; } + @Override + protected RaftActorSnapshotCohort getRaftActorSnapshotCohort() { + return this; + } + @Override public void startLogRecoveryBatch(int maxBatchSize) { } @@ -237,7 +244,7 @@ public class RaftActorTest extends AbstractActorTest { @Override public void applyRecoverySnapshot(byte[] bytes) { - cohortDelegate.applyRecoverySnapshot(bytes); + recoveryCohortDelegate.applyRecoverySnapshot(bytes); try { Object data = toObject(bytes); if (data instanceof List) { @@ -248,17 +255,20 @@ public class RaftActorTest extends AbstractActorTest { } } - @Override protected void createSnapshot() { + @Override + public void createSnapshot(ActorRef actorRef) { LOG.info("{}: createSnapshot called", persistenceId()); - actorDelegate.createSnapshot(); + snapshotCohortDelegate.createSnapshot(actorRef); } - @Override protected void applySnapshot(byte [] snapshot) { + @Override + public void applySnapshot(byte [] snapshot) { LOG.info("{}: applySnapshot called", persistenceId()); - actorDelegate.applySnapshot(snapshot); + snapshotCohortDelegate.applySnapshot(snapshot); } - @Override protected void onStateChanged() { + @Override + protected void onStateChanged() { actorDelegate.onStateChanged(); } @@ -293,7 +303,6 @@ public class RaftActorTest extends AbstractActorTest { public ReplicatedLog getReplicatedLog(){ return this.getRaftActorContext().getReplicatedLog(); } - } @@ -408,11 +417,11 @@ public class RaftActorTest extends AbstractActorTest { // add more entries after snapshot is taken List entries = new ArrayList<>(); ReplicatedLogEntry entry2 = new MockRaftActorContext.MockReplicatedLogEntry(1, 5, - new MockRaftActorContext.MockPayload("F")); + new MockRaftActorContext.MockPayload("F", 2)); ReplicatedLogEntry entry3 = new MockRaftActorContext.MockReplicatedLogEntry(1, 6, - new MockRaftActorContext.MockPayload("G")); + new MockRaftActorContext.MockPayload("G", 3)); ReplicatedLogEntry entry4 = new MockRaftActorContext.MockReplicatedLogEntry(1, 7, - new MockRaftActorContext.MockPayload("H")); + new MockRaftActorContext.MockPayload("H", 4)); entries.add(entry2); entries.add(entry3); entries.add(entry4); @@ -442,6 +451,7 @@ public class RaftActorTest extends AbstractActorTest { RaftActorContext context = ref.underlyingActor().getRaftActorContext(); assertEquals("Journal log size", snapshotUnappliedEntries.size() + entries.size(), context.getReplicatedLog().size()); + assertEquals("Journal data size", 10, context.getReplicatedLog().dataSize()); assertEquals("Last index", lastIndex, context.getReplicatedLog().lastIndex()); assertEquals("Last applied", lastAppliedToState, context.getLastApplied()); assertEquals("Commit index", lastAppliedToState, context.getCommitIndex()); @@ -525,7 +535,7 @@ public class RaftActorTest extends AbstractActorTest { mockRaftActor.onReceiveRecover(new SnapshotOffer(new SnapshotMetadata(persistenceId, 100, 100), snapshot)); - verify(mockRaftActor.cohortDelegate).applyRecoverySnapshot(eq(snapshotBytes.toByteArray())); + verify(mockRaftActor.recoveryCohortDelegate).applyRecoverySnapshot(eq(snapshotBytes.toByteArray())); mockRaftActor.onReceiveRecover(new ReplicatedLogImplEntry(0, 1, new MockRaftActorContext.MockPayload("A"))); @@ -592,7 +602,7 @@ public class RaftActorTest extends AbstractActorTest { mockRaftActor.onReceiveRecover(new SnapshotOffer(new SnapshotMetadata(persistenceId, 100, 100), snapshot)); - verify(mockRaftActor.cohortDelegate, times(0)).applyRecoverySnapshot(any(byte[].class)); + verify(mockRaftActor.recoveryCohortDelegate, times(0)).applyRecoverySnapshot(any(byte[].class)); mockRaftActor.onReceiveRecover(new ReplicatedLogImplEntry(0, 1, new MockRaftActorContext.MockPayload("A"))); @@ -819,7 +829,7 @@ public class RaftActorTest extends AbstractActorTest { mockRaftActor.getRaftActorContext().getSnapshotManager().capture(lastEntry, replicatedToAllIndex); - verify(mockRaftActor.actorDelegate).createSnapshot(); + verify(mockRaftActor.snapshotCohortDelegate).createSnapshot(any(ActorRef.class)); mockRaftActor.onReceiveCommand(new CaptureSnapshotReply(snapshotBytes.toByteArray())); @@ -916,7 +926,7 @@ public class RaftActorTest extends AbstractActorTest { mockRaftActor.onReceiveCommand(new ApplySnapshot(snapshot)); - verify(mockRaftActor.actorDelegate).applySnapshot(eq(snapshot.getState())); + verify(mockRaftActor.snapshotCohortDelegate).applySnapshot(eq(snapshot.getState())); assertTrue("The replicatedLog should have changed", oldReplicatedLog != mockRaftActor.getReplicatedLog()); @@ -1140,7 +1150,7 @@ public class RaftActorTest extends AbstractActorTest { .capture(new MockRaftActorContext.MockReplicatedLogEntry(1, 6, new MockRaftActorContext.MockPayload("x")), 4); - verify(leaderActor.actorDelegate).createSnapshot(); + verify(leaderActor.snapshotCohortDelegate).createSnapshot(any(ActorRef.class)); assertEquals(8, leaderActor.getReplicatedLog().size()); @@ -1239,7 +1249,7 @@ public class RaftActorTest extends AbstractActorTest { new MockRaftActorContext.MockReplicatedLogEntry(1, 5, new MockRaftActorContext.MockPayload("D")), 4); - verify(followerActor.actorDelegate).createSnapshot(); + verify(followerActor.snapshotCohortDelegate).createSnapshot(any(ActorRef.class)); assertEquals(6, followerActor.getReplicatedLog().size());