+++ /dev/null
-/*
- * Copyright (c) 2014, 2015 Cisco Systems, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-package org.opendaylight.controller.cluster.datastore.node.utils.serialization;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import com.google.common.base.Optional;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-import org.opendaylight.controller.cluster.datastore.util.TestModel;
-import org.opendaylight.controller.protobuff.messages.common.NormalizedNodeMessages;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
-import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class NormalizedNodeSerializerTest {
- private static final Logger LOG = LoggerFactory.getLogger(NormalizedNodeSerializerTest.class);
-
- @Rule
- public ExpectedException expectedException = ExpectedException.none();
-
- @Test
- public void testSerializeDeSerialize() {
-
- // This test basically serializes and deSerializes a largish document
- // which contains most of the types of nodes that go into a normalized
- // node and uses several value types as well. It is in general a good
- // sanity test which could be augmented with specific unit tests.
-
- long start = System.nanoTime();
-
- NormalizedNode<?, ?> expectedNode =
- TestModel.createDocumentOne(TestModel.createTestContext());
-
- NormalizedNodeMessages.Node expected = NormalizedNodeSerializer
- .serialize(expectedNode);
-
- LOG.info("Serialize Time = {}", (System.nanoTime() - start) / 1000000);
-
- LOG.info("Serialized Size = {}", expected.getSerializedSize());
-
- LOG.info(expected.toString());
-
- start = System.nanoTime();
-
- NormalizedNode<?, ?> actualNode =
- NormalizedNodeSerializer.deSerialize(expected);
-
- LOG.info("DeSerialize Time = {}", (System.nanoTime() - start) / 1000000);
-
- // Compare the original normalized node to the normalized node that was
- // created by serializing the original node and deSerializing it back.
- assertEquals(expectedNode, actualNode);
-
- byte[] binaryData = new byte[5];
- for (byte i = 0; i < 5; i++) {
- binaryData[i] = i;
- }
-
- ContainerNode node1 = TestModel.createBaseTestContainerBuilder()
- .withChild(ImmutableNodes.leafNode(TestModel.SOME_BINARY_DATA_QNAME, binaryData))
- .build();
-
- NormalizedNodeMessages.Node serializedNode1 = NormalizedNodeSerializer
- .serialize(node1);
-
- ContainerNode node2 =
- (ContainerNode) NormalizedNodeSerializer.deSerialize(serializedNode1);
-
-
- // FIXME: This will not work due to BUG 2326. Once that is fixed we can uncomment this assertion
- // assertEquals(node1, node2);
-
- Optional<DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?>> child =
- node2.getChild(new YangInstanceIdentifier.NodeIdentifier(TestModel.SOME_BINARY_DATA_QNAME));
-
- Object value = child.get().getValue();
-
- assertTrue("value should be of type byte[]", value instanceof byte[]);
-
- byte[] bytesValue = (byte[]) value;
-
- for (byte i = 0; i < 5; i++) {
- assertEquals(i, bytesValue[i]);
- }
-
- }
-
- @Test(expected = NullPointerException.class)
- public void testSerializeNullNormalizedNode() {
- assertNotNull(NormalizedNodeSerializer.serialize(null));
- }
-
- @Test
- public void testDeSerializeNullProtocolBufferNode() {
- expectedException.expect(NullPointerException.class);
- expectedException.expectMessage("node should not be null");
-
- NormalizedNodeSerializer.deSerialize(null);
- }
-
- @Test
- public void testDeSerializePathArgumentNullNode() {
- expectedException.expect(NullPointerException.class);
- expectedException.expectMessage("node should not be null");
-
- NormalizedNodeSerializer
- .deSerialize(null, NormalizedNodeMessages.PathArgument.getDefaultInstance());
- }
-
- @Test
- public void testDeSerializePathArgumentNullPathArgument() {
- expectedException.expect(NullPointerException.class);
- expectedException.expectMessage("pathArgument should not be null");
-
- NormalizedNodeSerializer.deSerialize(NormalizedNodeMessages.Node.getDefaultInstance() , null);
- }
-
- @Test
- public void testDeSerializePathArgument() {
-
- NormalizedNodeMessages.Node.Builder nodeBuilder = NormalizedNodeMessages.Node.newBuilder();
-
- nodeBuilder.addCode("urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:store:test1");
- nodeBuilder.addCode("urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:store:test");
-
-
- nodeBuilder.addCode("2014-04-13");
- nodeBuilder.addCode("2014-05-13");
- nodeBuilder.addCode("2014-03-13");
-
- nodeBuilder.addCode("dummy1");
- nodeBuilder.addCode("dummy2");
- nodeBuilder.addCode("dummy3");
- nodeBuilder.addCode("capability");
-
-
-
- NormalizedNodeMessages.PathArgument.Builder pathBuilder = NormalizedNodeMessages.PathArgument.newBuilder();
-
- pathBuilder.setIntType(PathArgumentType.NODE_IDENTIFIER.ordinal());
-
- NormalizedNodeMessages.QName.Builder qnameBuilder = NormalizedNodeMessages.QName.newBuilder();
- qnameBuilder.setNamespace(1);
- qnameBuilder.setRevision(4);
- qnameBuilder.setLocalName(8);
-
- pathBuilder.setNodeType(qnameBuilder);
-
- YangInstanceIdentifier.PathArgument pathArgument =
- NormalizedNodeSerializer
- .deSerialize(nodeBuilder.build(), pathBuilder.build());
-
- assertNotNull(pathArgument);
-
- assertEquals("urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:store:test",
- pathArgument.getNodeType().getNamespace().toString());
- assertEquals("2014-03-13", pathArgument.getNodeType().getFormattedRevision());
- assertEquals("capability", pathArgument.getNodeType().getLocalName());
- }
-}