2 * Copyright (c) 2014, 2015 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.controller.cluster.datastore.util;
11 import com.google.common.collect.ImmutableSet;
12 import org.junit.Assert;
13 import org.junit.Test;
14 import org.opendaylight.controller.cluster.datastore.node.utils.serialization.QNameDeSerializationContext;
15 import org.opendaylight.controller.cluster.datastore.node.utils.serialization.QNameDeSerializationContextImpl;
16 import org.opendaylight.controller.cluster.datastore.node.utils.serialization.QNameSerializationContextImpl;
17 import org.opendaylight.controller.protobuff.messages.common.NormalizedNodeMessages;
18 import org.opendaylight.yangtools.yang.common.QName;
19 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
20 import java.util.ArrayList;
21 import java.util.Arrays;
22 import java.util.List;
24 public class InstanceIdentifierUtilsTest {
26 private static QName TEST_QNAME = QName
27 .create("(urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:store:test?revision=2014-03-13)test");
28 private static QName NODE_WITH_VALUE_QNAME = QName
29 .create("(urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:store:test?revision=2014-03-13)value");
30 private static QName NODE_WITH_PREDICATES_QNAME = QName
31 .create("(urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:store:test?revision=2014-03-13)pred");
32 private static QName NAME_QNAME = QName
33 .create("(urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:store:test?revision=2014-03-13)name");
36 public void testSerializationOfNodeIdentifier() {
37 YangInstanceIdentifier.PathArgument p1 = new YangInstanceIdentifier.NodeIdentifier(TEST_QNAME);
39 List<YangInstanceIdentifier.PathArgument> arguments = new ArrayList<>();
43 YangInstanceIdentifier expected = YangInstanceIdentifier.create(arguments);
45 NormalizedNodeMessages.InstanceIdentifier instanceIdentifier =
46 InstanceIdentifierUtils.toSerializable(expected);
48 YangInstanceIdentifier actual = InstanceIdentifierUtils.fromSerializable(instanceIdentifier);
50 Assert.assertEquals(expected.getLastPathArgument(), actual.getLastPathArgument());
54 public void testSerializationOfNodeWithValue() {
63 private static void withValue(Object value) {
64 YangInstanceIdentifier.PathArgument p1 = new YangInstanceIdentifier.NodeIdentifier(TEST_QNAME);
66 YangInstanceIdentifier.PathArgument p2 =
67 new YangInstanceIdentifier.NodeWithValue(NODE_WITH_VALUE_QNAME, value);
69 List<YangInstanceIdentifier.PathArgument> arguments = new ArrayList<>();
74 YangInstanceIdentifier expected = YangInstanceIdentifier.create(arguments);
76 NormalizedNodeMessages.InstanceIdentifier instanceIdentifier =
77 InstanceIdentifierUtils.toSerializable(expected);
79 YangInstanceIdentifier actual = InstanceIdentifierUtils.fromSerializable(instanceIdentifier);
81 Assert.assertEquals(expected.getLastPathArgument(), actual.getLastPathArgument());
85 public void testSerializationOfNodeIdentifierWithPredicates() {
87 withPredicates((short) 1);
88 withPredicates((long) 2);
94 private static void withPredicates(Object value) {
95 YangInstanceIdentifier.PathArgument p1 = new YangInstanceIdentifier.NodeIdentifier(TEST_QNAME);
97 YangInstanceIdentifier.PathArgument p2 = new YangInstanceIdentifier.NodeIdentifierWithPredicates(
98 NODE_WITH_PREDICATES_QNAME, NAME_QNAME, value);
100 List<YangInstanceIdentifier.PathArgument> arguments = new ArrayList<>();
105 YangInstanceIdentifier expected = YangInstanceIdentifier.create(arguments);
107 NormalizedNodeMessages.InstanceIdentifier instanceIdentifier =
108 InstanceIdentifierUtils.toSerializable(expected);
110 YangInstanceIdentifier actual = InstanceIdentifierUtils.fromSerializable(instanceIdentifier);
112 Assert.assertEquals(expected.getLastPathArgument(), actual.getLastPathArgument());
116 public void testAugmentationIdentifier() {
117 YangInstanceIdentifier.PathArgument p1 = new YangInstanceIdentifier.AugmentationIdentifier(
118 ImmutableSet.of(TEST_QNAME));
120 List<YangInstanceIdentifier.PathArgument> arguments = new ArrayList<>();
124 YangInstanceIdentifier expected = YangInstanceIdentifier.create(arguments);
126 NormalizedNodeMessages.InstanceIdentifier instanceIdentifier =
127 InstanceIdentifierUtils.toSerializable(expected);
129 YangInstanceIdentifier actual = InstanceIdentifierUtils.fromSerializable(instanceIdentifier);
131 Assert.assertEquals(expected.getLastPathArgument(), actual.getLastPathArgument());
136 public void testSerializationWithContext() {
137 List<YangInstanceIdentifier.PathArgument> arguments =
138 Arrays.<YangInstanceIdentifier.PathArgument>asList(
139 new YangInstanceIdentifier.NodeIdentifier(TEST_QNAME),
140 new YangInstanceIdentifier.NodeWithValue(NODE_WITH_VALUE_QNAME, 1),
141 new YangInstanceIdentifier.NodeIdentifierWithPredicates(
142 NODE_WITH_PREDICATES_QNAME, NAME_QNAME, 2));
144 YangInstanceIdentifier expected = YangInstanceIdentifier.create(arguments);
146 QNameSerializationContextImpl serializationContext = new QNameSerializationContextImpl();
148 NormalizedNodeMessages.InstanceIdentifier instanceIdentifier =
149 InstanceIdentifierUtils.toSerializable(expected, serializationContext);
151 QNameDeSerializationContext deserializationContext = new QNameDeSerializationContextImpl(
152 serializationContext.getCodes());
154 YangInstanceIdentifier actual = InstanceIdentifierUtils.fromSerializable(
155 instanceIdentifier, deserializationContext);
157 Assert.assertEquals(expected.getLastPathArgument(), actual.getLastPathArgument());