import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
-import com.google.common.base.Optional;
+
import java.io.Serializable;
+import java.util.Arrays;
+import java.util.Optional;
+import java.util.OptionalInt;
import org.apache.commons.lang.SerializationUtils;
import org.junit.Test;
import org.opendaylight.controller.cluster.raft.RaftVersions;
-import org.opendaylight.controller.protobuff.messages.cluster.raft.InstallSnapshotMessages;
+import org.opendaylight.controller.cluster.raft.persisted.ServerConfigurationPayload;
+import org.opendaylight.controller.cluster.raft.persisted.ServerInfo;
/**
* Unit tests for InstallSnapshot.
@Test
public void testSerialization() {
byte[] data = new byte[1000];
- int j = 0;
- for(int i = 0; i < data.length; i++) {
+ for (int i = 0, j = 0; i < data.length; i++) {
data[i] = (byte)j;
- if(++j >= 255) {
+ if (++j >= 255) {
j = 0;
}
}
- InstallSnapshot expected = new InstallSnapshot(3L, "leaderId", 11L, 2L, data, 5, 6, Optional.<Integer>of(54321));
+ ServerConfigurationPayload serverConfig = new ServerConfigurationPayload(Arrays.asList(
+ new ServerInfo("leader", true), new ServerInfo("follower", false)));
+ InstallSnapshot expected = new InstallSnapshot(3L, "leaderId", 11L, 2L, data, 5, 6, OptionalInt.of(54321),
+ Optional.of(serverConfig));
Object serialized = expected.toSerializable(RaftVersions.CURRENT_VERSION);
assertEquals("Serialized type", InstallSnapshot.class, serialized.getClass());
- InstallSnapshot actual = InstallSnapshot.fromSerializable(SerializationUtils.clone((Serializable) serialized));
- verifyInstallSnapshot(expected, actual);
+ var bytes = SerializationUtils.serialize((Serializable) serialized);
+ assertEquals(1302, bytes.length);
+ var actual = (InstallSnapshot) SerializationUtils.deserialize(bytes);
- expected = new InstallSnapshot(3L, "leaderId", 11L, 2L, data, 5, 6);
- actual = InstallSnapshot.fromSerializable(SerializationUtils.clone(
- (Serializable) expected.toSerializable(RaftVersions.CURRENT_VERSION)));
verifyInstallSnapshot(expected, actual);
- }
-
- @Test
- public void testSerializationWithPreBoronVersion() {
- byte[] data = {0,1,2,3,4,5,7,8,9};
- InstallSnapshot expected = new InstallSnapshot(3L, "leaderId", 11L, 2L, data, 5, 6, Optional.<Integer>of(54321));
-
- Object serialized = expected.toSerializable(RaftVersions.LITHIUM_VERSION);
- assertEquals("Serialized type", InstallSnapshot.SERIALIZABLE_CLASS, serialized.getClass());
- InstallSnapshot actual = InstallSnapshot.fromSerializable(SerializationUtils.clone((Serializable) serialized));
+ expected = new InstallSnapshot(3L, "leaderId", 11L, 2L, data, 5, 6);
+ bytes = SerializationUtils.serialize((Serializable) expected.toSerializable(RaftVersions.CURRENT_VERSION));
+ assertEquals(1165, bytes.length);
+ actual = (InstallSnapshot) SerializationUtils.deserialize(bytes);
verifyInstallSnapshot(expected, actual);
}
- @Test
- public void testIsSerializedType() {
- assertEquals("isSerializedType", true, InstallSnapshot.isSerializedType(
- InstallSnapshotMessages.InstallSnapshot.newBuilder().build()));
- assertEquals("isSerializedType", true, InstallSnapshot.isSerializedType(new InstallSnapshot()));
- assertEquals("isSerializedType", false, InstallSnapshot.isSerializedType(new Object()));
- }
-
- private static void verifyInstallSnapshot(InstallSnapshot expected, InstallSnapshot actual) {
+ private static void verifyInstallSnapshot(final InstallSnapshot expected, final InstallSnapshot actual) {
assertEquals("getTerm", expected.getTerm(), actual.getTerm());
assertEquals("getChunkIndex", expected.getChunkIndex(), actual.getChunkIndex());
assertEquals("getTotalChunks", expected.getTotalChunks(), actual.getTotalChunks());
assertEquals("getLeaderId", expected.getLeaderId(), actual.getLeaderId());
assertEquals("getChunkIndex", expected.getChunkIndex(), actual.getChunkIndex());
assertArrayEquals("getData", expected.getData(), actual.getData());
+
assertEquals("getLastChunkHashCode present", expected.getLastChunkHashCode().isPresent(),
actual.getLastChunkHashCode().isPresent());
- if(expected.getLastChunkHashCode().isPresent()) {
- assertEquals("getLastChunkHashCode", expected.getLastChunkHashCode().get(),
- actual.getLastChunkHashCode().get());
+ if (expected.getLastChunkHashCode().isPresent()) {
+ assertEquals("getLastChunkHashCode", expected.getLastChunkHashCode(),
+ actual.getLastChunkHashCode());
+ }
+
+ assertEquals("getServerConfig present", expected.getServerConfig().isPresent(),
+ actual.getServerConfig().isPresent());
+ if (expected.getServerConfig().isPresent()) {
+ assertEquals("getServerConfig", expected.getServerConfig().get().getServerConfig(),
+ actual.getServerConfig().get().getServerConfig());
}
}
}