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=38f1defb9f420fdf7769fd2a5270feb9476b3544;hb=HEAD;hp=abde51bde592951b404835b7d3529b5c8150257a;hpb=669ca536b9d889c65e91da66af61988f9d4271dd;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 abde51bde5..38f1defb9f 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 @@ -8,18 +8,15 @@ package org.opendaylight.controller.cluster.raft.messages; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertSame; -import java.util.Arrays; -import java.util.Collections; + import java.util.Iterator; -import org.apache.commons.lang.SerializationUtils; -import org.junit.Assert; +import java.util.List; +import org.apache.commons.lang3.SerializationUtils; 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 org.opendaylight.controller.cluster.raft.persisted.SimpleReplicatedLogEntry; /** * Unit tests for AppendEntries. @@ -27,59 +24,58 @@ import org.opendaylight.controller.protobuff.messages.cluster.raft.AppendEntries * @author Thomas Pantelis */ 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); + short payloadVersion = 5; - AppendEntries cloned = (AppendEntries) SerializationUtils.clone(expected); + // Without leader address - verifyAppendEntries(expected, cloned); - } + var expected = new AppendEntries(5L, "node1", 7L, 8L, List.of(entry1, entry2), 10L, -1, payloadVersion, + RaftVersions.CURRENT_VERSION, null); - @Test - public void testToAndFromSerializable() { - AppendEntries entries = new AppendEntries(5L, "node1", 7L, 8L, - Collections.emptyList(), 10L); + var bytes = SerializationUtils.serialize(expected); + assertEquals(285, bytes.length); + var cloned = (AppendEntries) SerializationUtils.deserialize(bytes); - assertSame("toSerializable", entries, entries.toSerializable()); - assertSame("fromSerializable", entries, - org.opendaylight.controller.cluster.raft.SerializationUtils.fromSerializable(entries)); - } + 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); + // With leader address - Object serializable = entries.toSerializable(RaftVersions.HELIUM_VERSION); - Assert.assertTrue(serializable instanceof AppendEntriesMessages.AppendEntries); + expected = new AppendEntries(5L, "node1", 7L, 8L, List.of(entry1, entry2), 10L, -1, payloadVersion, + RaftVersions.CURRENT_VERSION, "leader address"); - AppendEntries entries2 = (AppendEntries) - org.opendaylight.controller.cluster.raft.SerializationUtils.fromSerializable(serializable); + bytes = SerializationUtils.serialize(expected); + assertEquals(301, bytes.length); + cloned = (AppendEntries) SerializationUtils.deserialize(bytes); - verifyAppendEntries(entries, entries2); + verifyAppendEntries(expected, cloned, RaftVersions.CURRENT_VERSION); } - private void verifyAppendEntries(AppendEntries expected, AppendEntries actual) { + private static void verifyAppendEntries(final AppendEntries expected, final AppendEntries actual, + final 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); } + + assertEquals("getLeaderAddress", expected.leaderAddress(), actual.leaderAddress()); + assertEquals("getLeaderRaftVersion", RaftVersions.CURRENT_VERSION, actual.getLeaderRaftVersion()); } - private void verifyReplicatedLogEntry(ReplicatedLogEntry expected, ReplicatedLogEntry actual) { + private static void verifyReplicatedLogEntry(final ReplicatedLogEntry expected, final ReplicatedLogEntry actual) { assertEquals("getIndex", expected.getIndex(), actual.getIndex()); assertEquals("getTerm", expected.getTerm(), actual.getTerm()); assertEquals("getData", expected.getData().toString(), actual.getData().toString());