Add AbstractIdentifiablePayload unit tests
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / test / java / org / opendaylight / controller / cluster / datastore / persisted / ShardDataTreeSnapshotTest.java
index f25153f335aaf48bcf3e5d2b039fd499bbb1513d..d999620180357f9297568addbc9dd85bc05a7c2a 100644 (file)
@@ -8,14 +8,20 @@
 package org.opendaylight.controller.cluster.datastore.persisted;
 
 import static org.junit.Assert.assertEquals;
+
 import com.google.common.collect.ImmutableMap;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.Externalizable;
 import java.io.IOException;
 import java.io.ObjectInput;
+import java.io.ObjectInputStream;
 import java.io.ObjectOutput;
+import java.io.ObjectOutputStream;
 import java.util.Map;
 import java.util.Optional;
 import org.junit.Test;
+import org.opendaylight.controller.cluster.datastore.node.utils.stream.SerializationUtils;
 import org.opendaylight.controller.md.cluster.datastore.model.TestModel;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
@@ -31,14 +37,20 @@ public class ShardDataTreeSnapshotTest {
 
     @Test
     public void testShardDataTreeSnapshotWithNoMetadata() throws Exception {
-        NormalizedNode<?, ?> expectedNode = ImmutableContainerNodeBuilder.create().withNodeIdentifier(
-                new YangInstanceIdentifier.NodeIdentifier(TestModel.TEST_QNAME)).
-                withChild(ImmutableNodes.leafNode(TestModel.DESC_QNAME, "foo")).build();
+        NormalizedNode<?, ?> expectedNode = ImmutableContainerNodeBuilder.create()
+                .withNodeIdentifier(new YangInstanceIdentifier.NodeIdentifier(TestModel.TEST_QNAME))
+                .withChild(ImmutableNodes.leafNode(TestModel.DESC_QNAME, "foo")).build();
 
         MetadataShardDataTreeSnapshot snapshot = new MetadataShardDataTreeSnapshot(expectedNode);
-        byte[] serialized = snapshot.serialize();
+        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        try (final ObjectOutputStream out = new ObjectOutputStream(bos)) {
+            snapshot.serialize(out);
+        }
 
-        ShardDataTreeSnapshot deserialized = ShardDataTreeSnapshot.deserialize(serialized);
+        ShardDataTreeSnapshot deserialized;
+        try (final ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bos.toByteArray()))) {
+            deserialized = ShardDataTreeSnapshot.deserialize(in);
+        }
 
         Optional<NormalizedNode<?, ?>> actualNode = deserialized.getRootNode();
         assertEquals("rootNode present", true, actualNode.isPresent());
@@ -49,16 +61,22 @@ public class ShardDataTreeSnapshotTest {
 
     @Test
     public void testShardDataTreeSnapshotWithMetadata() throws Exception {
-        NormalizedNode<?, ?> expectedNode = ImmutableContainerNodeBuilder.create().withNodeIdentifier(
-                new YangInstanceIdentifier.NodeIdentifier(TestModel.TEST_QNAME)).
-                withChild(ImmutableNodes.leafNode(TestModel.DESC_QNAME, "foo")).build();
+        NormalizedNode<?, ?> expectedNode = ImmutableContainerNodeBuilder.create()
+                .withNodeIdentifier(new YangInstanceIdentifier.NodeIdentifier(TestModel.TEST_QNAME))
+                .withChild(ImmutableNodes.leafNode(TestModel.DESC_QNAME, "foo")).build();
 
-        Map<Class<? extends ShardDataTreeSnapshotMetadata>, ShardDataTreeSnapshotMetadata> expMetadata =
+        Map<Class<? extends ShardDataTreeSnapshotMetadata<?>>, ShardDataTreeSnapshotMetadata<?>> expMetadata =
                 ImmutableMap.of(TestShardDataTreeSnapshotMetadata.class, new TestShardDataTreeSnapshotMetadata("test"));
         MetadataShardDataTreeSnapshot snapshot = new MetadataShardDataTreeSnapshot(expectedNode, expMetadata);
-        byte[] serialized = snapshot.serialize();
+        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        try (final ObjectOutputStream out = new ObjectOutputStream(bos)) {
+            snapshot.serialize(out);
+        }
 
-        ShardDataTreeSnapshot deserialized = ShardDataTreeSnapshot.deserialize(serialized);
+        ShardDataTreeSnapshot deserialized;
+        try (final ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bos.toByteArray()))) {
+            deserialized = ShardDataTreeSnapshot.deserialize(in);
+        }
 
         Optional<NormalizedNode<?, ?>> actualNode = deserialized.getRootNode();
         assertEquals("rootNode present", true, actualNode.isPresent());
@@ -68,15 +86,15 @@ public class ShardDataTreeSnapshotTest {
     }
 
     @Test
+    @Deprecated
     public void testPreBoronShardDataTreeSnapshot() throws Exception {
-        NormalizedNode<?, ?> expectedNode = ImmutableContainerNodeBuilder.create().withNodeIdentifier(
-                new YangInstanceIdentifier.NodeIdentifier(TestModel.TEST_QNAME)).
-                withChild(ImmutableNodes.leafNode(TestModel.DESC_QNAME, "foo")).build();
+        NormalizedNode<?, ?> expectedNode = ImmutableContainerNodeBuilder.create()
+                .withNodeIdentifier(new YangInstanceIdentifier.NodeIdentifier(TestModel.TEST_QNAME))
+                .withChild(ImmutableNodes.leafNode(TestModel.DESC_QNAME, "foo")).build();
 
-        PreBoronShardDataTreeSnapshot snapshot = new PreBoronShardDataTreeSnapshot(expectedNode);
-        byte[] serialized = snapshot.serialize();
+        byte[] serialized = SerializationUtils.serializeNormalizedNode(expectedNode);
 
-        ShardDataTreeSnapshot deserialized = ShardDataTreeSnapshot.deserialize(serialized);
+        ShardDataTreeSnapshot deserialized = ShardDataTreeSnapshot.deserializePreCarbon(serialized);
 
         Optional<NormalizedNode<?, ?>> actualNode = deserialized.getRootNode();
         assertEquals("rootNode present", true, actualNode.isPresent());
@@ -84,7 +102,8 @@ public class ShardDataTreeSnapshotTest {
         assertEquals("Deserialized type", PreBoronShardDataTreeSnapshot.class, deserialized.getClass());
     }
 
-    static class TestShardDataTreeSnapshotMetadata extends ShardDataTreeSnapshotMetadata {
+    static class TestShardDataTreeSnapshotMetadata
+            extends ShardDataTreeSnapshotMetadata<TestShardDataTreeSnapshotMetadata> {
         private static final long serialVersionUID = 1L;
 
         private final String data;
@@ -93,6 +112,11 @@ public class ShardDataTreeSnapshotTest {
             this.data = data;
         }
 
+        @Override
+        public Class<TestShardDataTreeSnapshotMetadata> getType() {
+            return TestShardDataTreeSnapshotMetadata.class;
+        }
+
         @Override
         protected Externalizable externalizableProxy() {
             return new Proxy(data);
@@ -105,13 +129,14 @@ public class ShardDataTreeSnapshotTest {
 
         @Override
         public boolean equals(Object obj) {
-            return data.equals(((TestShardDataTreeSnapshotMetadata)obj).data);
+            return obj instanceof TestShardDataTreeSnapshotMetadata
+                    && data.equals(((TestShardDataTreeSnapshotMetadata)obj).data);
         }
 
-
         private static class Proxy implements Externalizable {
             private String data;
 
+            @SuppressWarnings("checkstyle:RedundantModifier")
             public Proxy() {
             }