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%2Fmessages%2FAppendEntriesTest.java;h=a7c3c8b9d5e97bde0e4b6fb431e105545eea754b;hb=refs%2Fchanges%2F09%2F83009%2F6;hp=5f5d73dbe6b126028fdce788d29f3a8cf7cc75c3;hpb=3927509ec3ecfa32a51b725d2b7155d425f5b877;p=controller.git diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/messages/AppendEntriesTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/messages/AppendEntriesTest.java index 5f5d73dbe6..a7c3c8b9d5 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/messages/AppendEntriesTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/messages/AppendEntriesTest.java @@ -7,20 +7,17 @@ */ package org.opendaylight.controller.cluster.raft.messages; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; + import java.util.Arrays; -import java.util.Collections; import java.util.Iterator; import org.apache.commons.lang.SerializationUtils; -import org.junit.Assert; import org.junit.Test; import org.opendaylight.controller.cluster.raft.MockRaftActorContext.MockPayload; import org.opendaylight.controller.cluster.raft.RaftVersions; import org.opendaylight.controller.cluster.raft.ReplicatedLogEntry; -import org.opendaylight.controller.cluster.raft.ReplicatedLogImplEntry; -import org.opendaylight.controller.protobuff.messages.cluster.raft.AppendEntriesMessages; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertSame; +import org.opendaylight.controller.cluster.raft.persisted.SimpleReplicatedLogEntry; /** * Unit tests for AppendEntries. @@ -31,57 +28,73 @@ public class AppendEntriesTest { @Test public void testSerialization() { - ReplicatedLogEntry entry1 = new ReplicatedLogImplEntry(1, 2, new MockPayload("payload1")); + ReplicatedLogEntry entry1 = new SimpleReplicatedLogEntry(1, 2, new MockPayload("payload1")); - ReplicatedLogEntry entry2 = new ReplicatedLogImplEntry(3, 4, new MockPayload("payload2")); + ReplicatedLogEntry entry2 = new SimpleReplicatedLogEntry(3, 4, new MockPayload("payload2")); - AppendEntries expected = new AppendEntries(5L, "node1", 7L, 8L, Arrays.asList(entry1, entry2), 10L, -1); + short payloadVersion = 5; + + // Without leader address + + AppendEntries expected = new AppendEntries(5L, "node1", 7L, 8L, Arrays.asList(entry1, entry2), 10L, + -1, payloadVersion, RaftVersions.CURRENT_VERSION, null); AppendEntries cloned = (AppendEntries) SerializationUtils.clone(expected); - verifyAppendEntries(expected, cloned); - } + verifyAppendEntries(expected, cloned, RaftVersions.CURRENT_VERSION); - @Test - public void testToAndFromSerializable() { - AppendEntries entries = new AppendEntries(5L, "node1", 7L, 8L, - Collections.emptyList(), 10L, -1); + // With leader address - assertSame("toSerializable", entries, entries.toSerializable()); - assertSame("fromSerializable", entries, - org.opendaylight.controller.cluster.raft.SerializationUtils.fromSerializable(entries)); + expected = new AppendEntries(5L, "node1", 7L, 8L, Arrays.asList(entry1, entry2), 10L, + -1, payloadVersion, RaftVersions.CURRENT_VERSION, "leader address"); + + cloned = (AppendEntries) SerializationUtils.clone(expected); + + verifyAppendEntries(expected, cloned, RaftVersions.CURRENT_VERSION); } @Test - public void testToAndFromLegacySerializable() { - ReplicatedLogEntry entry = new ReplicatedLogImplEntry(3, 4, new MockPayload("payload")); - AppendEntries entries = new AppendEntries(5L, "node1", 7L, 8L, Arrays.asList(entry), 10L, -1); + @Deprecated + public void testPreFluorineSerialization() { + ReplicatedLogEntry entry1 = new SimpleReplicatedLogEntry(1, 2, new MockPayload("payload1")); - Object serializable = entries.toSerializable(RaftVersions.HELIUM_VERSION); - Assert.assertTrue(serializable instanceof AppendEntriesMessages.AppendEntries); + ReplicatedLogEntry entry2 = new SimpleReplicatedLogEntry(3, 4, new MockPayload("payload2")); - AppendEntries entries2 = (AppendEntries) - org.opendaylight.controller.cluster.raft.SerializationUtils.fromSerializable(serializable); + short payloadVersion = 5; - verifyAppendEntries(entries, entries2); + AppendEntries expected = new AppendEntries(5L, "node1", 7L, 8L, Arrays.asList(entry1, entry2), 10L, + -1, payloadVersion, RaftVersions.BORON_VERSION, "leader address"); + + AppendEntries cloned = (AppendEntries) SerializationUtils.clone(expected); + + verifyAppendEntries(expected, cloned, RaftVersions.BORON_VERSION); } - private void verifyAppendEntries(AppendEntries expected, AppendEntries actual) { + private static void verifyAppendEntries(AppendEntries expected, AppendEntries actual, short recipientRaftVersion) { assertEquals("getLeaderId", expected.getLeaderId(), actual.getLeaderId()); assertEquals("getTerm", expected.getTerm(), actual.getTerm()); assertEquals("getLeaderCommit", expected.getLeaderCommit(), actual.getLeaderCommit()); assertEquals("getPrevLogIndex", expected.getPrevLogIndex(), actual.getPrevLogIndex()); assertEquals("getPrevLogTerm", expected.getPrevLogTerm(), actual.getPrevLogTerm()); assertEquals("getReplicatedToAllIndex", expected.getReplicatedToAllIndex(), actual.getReplicatedToAllIndex()); + assertEquals("getPayloadVersion", expected.getPayloadVersion(), actual.getPayloadVersion()); assertEquals("getEntries size", expected.getEntries().size(), actual.getEntries().size()); Iterator iter = expected.getEntries().iterator(); - for(ReplicatedLogEntry e: actual.getEntries()) { + for (ReplicatedLogEntry e: actual.getEntries()) { verifyReplicatedLogEntry(iter.next(), e); } + + if (recipientRaftVersion >= RaftVersions.FLUORINE_VERSION) { + assertEquals("getLeaderAddress", expected.getLeaderAddress(), actual.getLeaderAddress()); + assertEquals("getLeaderRaftVersion", RaftVersions.CURRENT_VERSION, actual.getLeaderRaftVersion()); + } else { + assertFalse(actual.getLeaderAddress().isPresent()); + assertEquals("getLeaderRaftVersion", RaftVersions.BORON_VERSION, actual.getLeaderRaftVersion()); + } } - private void verifyReplicatedLogEntry(ReplicatedLogEntry expected, ReplicatedLogEntry actual) { + private static void verifyReplicatedLogEntry(ReplicatedLogEntry expected, ReplicatedLogEntry actual) { assertEquals("getIndex", expected.getIndex(), actual.getIndex()); assertEquals("getTerm", expected.getTerm(), actual.getTerm()); assertEquals("getData", expected.getData().toString(), actual.getData().toString());