Bump yangtools to 4.0.1
[controller.git] / opendaylight / md-sal / sal-clustering-commons / src / test / java / org / opendaylight / controller / cluster / datastore / node / utils / stream / SerializationUtilsTest.java
index 50d06ada231c23ca611d1ad0234288ed9bedfce3..04da2a6956fb1a3837b2ad7f821448c2ffa3ffa8 100644 (file)
@@ -7,12 +7,16 @@
  */
 package org.opendaylight.controller.cluster.datastore.node.utils.stream;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
 import com.google.common.collect.ImmutableSet;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.DataInputStream;
 import java.io.DataOutput;
 import java.io.DataOutputStream;
+import java.io.IOException;
 import java.nio.charset.Charset;
 import java.util.Arrays;
 import java.util.Set;
@@ -21,14 +25,14 @@ import java.util.stream.Collectors;
 import javax.xml.transform.dom.DOMSource;
 import org.custommonkey.xmlunit.Diff;
 import org.custommonkey.xmlunit.XMLUnit;
-import org.junit.Assert;
 import org.junit.Test;
 import org.opendaylight.yangtools.util.xml.UntrustedXML;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.schema.AnyXmlNode;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode;
 import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode;
+import org.opendaylight.yangtools.yang.data.api.schema.DOMSourceAnyxmlNode;
 import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
 import org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode;
 import org.opendaylight.yangtools.yang.data.api.schema.LeafSetNode;
@@ -47,11 +51,11 @@ public class SerializationUtilsTest {
     private static final QName CONTAINER_Q_NAME = QName.create("ns-1", "2017-03-17", "container1");
 
     @Test
-    public void testSerializeDeserializeNodes() {
+    public void testSerializeDeserializeNodes() throws IOException {
         final NormalizedNode<?, ?> normalizedNode = createNormalizedNode();
-        final byte[] bytes = SerializationUtils.serializeNormalizedNode(normalizedNode);
-        Assert.assertEquals(normalizedNode, SerializationUtils.deserializeNormalizedNode(bytes));
-
+        final byte[] bytes = serializeNormalizedNode(normalizedNode);
+        assertEquals(10564, bytes.length);
+        assertEquals(normalizedNode, deserializeNormalizedNode(bytes));
     }
 
     @Test
@@ -59,20 +63,21 @@ public class SerializationUtilsTest {
         final ByteArrayInputStream is =
                 new ByteArrayInputStream("<xml><data/></xml>".getBytes(Charset.defaultCharset()));
         final Document parse = UntrustedXML.newDocumentBuilder().parse(is);
-        final AnyXmlNode anyXmlNode = Builders.anyXmlBuilder()
+        final DOMSourceAnyxmlNode anyXmlNode = Builders.anyXmlBuilder()
                 .withNodeIdentifier(id("anyXmlNode"))
                 .withValue(new DOMSource(parse))
                 .build();
-        final byte[] bytes = SerializationUtils.serializeNormalizedNode(anyXmlNode);
-        final NormalizedNode<?, ?> deserialized = SerializationUtils.deserializeNormalizedNode(bytes);
+        final byte[] bytes = serializeNormalizedNode(anyXmlNode);
+        assertEquals(113, bytes.length);
+        final NormalizedNode<?, ?> deserialized = deserializeNormalizedNode(bytes);
         final DOMSource value = (DOMSource) deserialized.getValue();
         final Diff diff = XMLUnit.compareXML((Document) anyXmlNode.getValue().getNode(),
                 value.getNode().getOwnerDocument());
-        Assert.assertTrue(diff.toString(), diff.similar());
+        assertTrue(diff.toString(), diff.similar());
     }
 
     @Test
-    public void testSerializeDeserializePath() {
+    public void testSerializeDeserializePath() throws IOException {
         final ByteArrayOutputStream bos = new ByteArrayOutputStream();
         final DataOutput out = new DataOutputStream(bos);
         final YangInstanceIdentifier path = YangInstanceIdentifier.builder()
@@ -81,27 +86,64 @@ public class SerializationUtilsTest {
                 .node(listId("list1", "keyName1", "keyValue1"))
                 .node(leafSetId("leafSer1", "leafSetValue1"))
                 .build();
-        SerializationUtils.serializePath(path, out);
+        SerializationUtils.writePath(out, path);
+
+        final byte[] bytes = bos.toByteArray();
+        assertEquals(119, bytes.length);
+
         final YangInstanceIdentifier deserialized =
-                SerializationUtils.deserializePath(new DataInputStream(new ByteArrayInputStream(bos.toByteArray())));
-        Assert.assertEquals(path, deserialized);
+                SerializationUtils.readPath(new DataInputStream(new ByteArrayInputStream(bytes)));
+        assertEquals(path, deserialized);
     }
 
     @Test
-    public void testSerializeDeserializePathAndNode() {
+    public void testSerializeDeserializePathAndNode() throws IOException {
         final ByteArrayOutputStream bos = new ByteArrayOutputStream();
         final DataOutput out = new DataOutputStream(bos);
         final NormalizedNode<?, ?> node = createNormalizedNode();
         final YangInstanceIdentifier path = YangInstanceIdentifier.create(id("container1"));
-        SerializationUtils.serializePathAndNode(path, node, out);
-        final DataInputStream in = new DataInputStream(new ByteArrayInputStream(bos.toByteArray()));
+        SerializationUtils.writeNodeAndPath(out, path, node);
+
+        final byte[] bytes = bos.toByteArray();
+        assertEquals(10566, bytes.length);
+
+        final DataInputStream in = new DataInputStream(new ByteArrayInputStream(bytes));
         final AtomicBoolean applierCalled = new AtomicBoolean(false);
-        SerializationUtils.deserializePathAndNode(in, applierCalled, (instance, deserializedPath, deserializedNode) -> {
-            Assert.assertEquals(path, deserializedPath);
-            Assert.assertEquals(node, deserializedNode);
+        SerializationUtils.readNodeAndPath(in, applierCalled, (instance, deserializedPath, deserializedNode) -> {
+            assertEquals(path, deserializedPath);
+            assertEquals(node, deserializedNode);
             applierCalled.set(true);
         });
-        Assert.assertTrue(applierCalled.get());
+        assertTrue(applierCalled.get());
+    }
+
+    @Test
+    public void testSerializeDeserializeAugmentNoref() throws IOException {
+        final YangInstanceIdentifier expected = YangInstanceIdentifier.create(
+            AugmentationIdentifier.create(ImmutableSet.of(
+                QName.create("foo", "leaf1"),
+                QName.create("bar", "leaf2"))));
+
+        final ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        final DataOutput out = new DataOutputStream(bos);
+        SerializationUtils.writePath(out, expected);
+
+        final byte[] bytes = bos.toByteArray();
+        assertEquals(37, bytes.length);
+
+        final DataInputStream in = new DataInputStream(new ByteArrayInputStream(bytes));
+        final YangInstanceIdentifier read = SerializationUtils.readPath(in);
+        assertEquals(expected, read);
+    }
+
+    private static NormalizedNode<?, ?> deserializeNormalizedNode(final byte[] bytes) throws IOException {
+        return SerializationUtils.readNormalizedNode(new DataInputStream(new ByteArrayInputStream(bytes))).get();
+    }
+
+    private static byte[] serializeNormalizedNode(final NormalizedNode<?, ?> node) throws IOException {
+        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        SerializationUtils.writeNormalizedNode(new DataOutputStream(bos), node);
+        return bos.toByteArray();
     }
 
     private static NormalizedNode<?, ?> createNormalizedNode() {
@@ -123,7 +165,7 @@ public class SerializationUtilsTest {
         final LeafNode<String> stringLeaf = createLeaf("stringLeaf", "stringValue");
         final LeafNode<String> longStringLeaf = createLeaf("longStringLeaf", getLongString());
         final LeafNode<QName> qNameLeaf = createLeaf("stringLeaf", QName.create("base", "qName"));
-        final LeafNode<YangInstanceIdentifier> idLeaf = createLeaf("stringLeaf", YangInstanceIdentifier.EMPTY);
+        final LeafNode<YangInstanceIdentifier> idLeaf = createLeaf("stringLeaf", YangInstanceIdentifier.empty());
         final MapEntryNode entry1 = Builders.mapEntryBuilder()
                 .withNodeIdentifier(listId("mapNode", "key", "key1"))
                 .withChild(stringLeaf)
@@ -205,7 +247,7 @@ public class SerializationUtilsTest {
     private static YangInstanceIdentifier.NodeIdentifierWithPredicates listId(final String listName,
                                                                               final String keyName,
                                                                               final Object keyValue) {
-        return new YangInstanceIdentifier.NodeIdentifierWithPredicates(QName.create(CONTAINER_Q_NAME, listName),
+        return YangInstanceIdentifier.NodeIdentifierWithPredicates.of(QName.create(CONTAINER_Q_NAME, listName),
                 QName.create(CONTAINER_Q_NAME, keyName), keyValue);
     }
 
@@ -227,4 +269,4 @@ public class SerializationUtilsTest {
         }
         return builder.toString();
     }
-}
\ No newline at end of file
+}