import org.junit.Before;
import org.junit.Test;
import org.opendaylight.controller.cluster.raft.persisted.ApplyJournalEntries;
+import org.opendaylight.controller.cluster.raft.persisted.Snapshot;
import org.opendaylight.controller.cluster.raft.utils.InMemoryJournal;
import org.opendaylight.controller.cluster.raft.utils.InMemorySnapshotStore;
import org.opendaylight.controller.cluster.raft.utils.MessageCollectorActor;
@Test
- public void testJournalReplayAfterSnapshotWithSingleNode() throws Exception {
+ public void testJournalReplayAfterSnapshotWithSingleNode() {
String persistenceId = factory.generateActorId("singleNode");
TestActorRef<AbstractRaftActorIntegrationTest.TestRaftActor> singleNodeActorRef =
ActorRef singleNodeCollectorActor = singleNodeActorRef.underlyingActor().collectorActor();
final RaftActorContext singleNodeContext = singleNodeActorRef.underlyingActor().getRaftActorContext();
+ InMemoryJournal.addWriteMessagesCompleteLatch(persistenceId, 6, ApplyJournalEntries.class);
final MockRaftActorContext.MockPayload payload0 = sendPayloadData(singleNodeActorRef, "zero");
final MockRaftActorContext.MockPayload payload1 = sendPayloadData(singleNodeActorRef, "one");
assertEquals("Incorrect State after snapshot success is received ", Lists.newArrayList(payload0, payload1,
payload2, payload3, payload4, payload5), singleNodeActorRef.underlyingActor().getState());
+ InMemoryJournal.waitForWriteMessagesComplete(persistenceId);
+
// we get 2 log entries (4 and 5 indexes) and 3 ApplyJournalEntries (for 3, 4, and 5 indexes)
assertEquals(5, InMemoryJournal.get(persistenceId).size());
List<Snapshot> persistedSnapshots = InMemorySnapshotStore.getSnapshots(persistenceId, Snapshot.class);
assertEquals(1, persistedSnapshots.size());
- @SuppressWarnings("unchecked")
- List<Object> snapshottedState = (List<Object>)MockRaftActor.toObject(persistedSnapshots.get(0).getState());
+ List<Object> snapshottedState = MockRaftActor.fromState(persistedSnapshots.get(0).getState());
assertEquals("Incorrect Snapshot", Lists.newArrayList(payload0, payload1, payload2, payload3),
snapshottedState);