X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-clustering-commons%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fnode%2Futils%2Fstream%2FSerializationUtilsTest.java;h=04da2a6956fb1a3837b2ad7f821448c2ffa3ffa8;hb=3b20b51fb44d75c53b872fda99aa0f61b829371c;hp=25b4f2a3e88b36ea9c7a2975548718c396b40f56;hpb=35dfbc096623d860b6e24b2d17ac6e2c6a3dca1c;p=controller.git diff --git a/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/SerializationUtilsTest.java b/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/SerializationUtilsTest.java index 25b4f2a3e8..04da2a6956 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/SerializationUtilsTest.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/SerializationUtilsTest.java @@ -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 = serializeNormalizedNode(normalizedNode); - Assert.assertEquals(normalizedNode, SerializationUtils.deserializeNormalizedNode(bytes)); - + assertEquals(10564, bytes.length); + assertEquals(normalizedNode, deserializeNormalizedNode(bytes)); } @Test @@ -59,20 +63,21 @@ public class SerializationUtilsTest { final ByteArrayInputStream is = new ByteArrayInputStream("".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 = serializeNormalizedNode(anyXmlNode); - final NormalizedNode deserialized = SerializationUtils.deserializeNormalizedNode(bytes); + 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,32 +86,63 @@ 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) { + private static byte[] serializeNormalizedNode(final NormalizedNode node) throws IOException { ByteArrayOutputStream bos = new ByteArrayOutputStream(); - SerializationUtils.serializeNormalizedNode(node, new DataOutputStream(bos)); + SerializationUtils.writeNormalizedNode(new DataOutputStream(bos), node); return bos.toByteArray(); } @@ -129,7 +165,7 @@ public class SerializationUtilsTest { final LeafNode stringLeaf = createLeaf("stringLeaf", "stringValue"); final LeafNode longStringLeaf = createLeaf("longStringLeaf", getLongString()); final LeafNode qNameLeaf = createLeaf("stringLeaf", QName.create("base", "qName")); - final LeafNode idLeaf = createLeaf("stringLeaf", YangInstanceIdentifier.EMPTY); + final LeafNode idLeaf = createLeaf("stringLeaf", YangInstanceIdentifier.empty()); final MapEntryNode entry1 = Builders.mapEntryBuilder() .withNodeIdentifier(listId("mapNode", "key", "key1")) .withChild(stringLeaf) @@ -211,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); } @@ -233,4 +269,4 @@ public class SerializationUtilsTest { } return builder.toString(); } -} \ No newline at end of file +}