3 * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
5 * This program and the accompanying materials are made available under the
6 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
7 * and is available at http://www.eclipse.org/legal/epl-v10.html
11 package org.opendaylight.controller.cluster.datastore.util;
13 import org.junit.Assert;
14 import org.junit.Test;
15 import org.opendaylight.controller.cluster.datastore.node.utils.serialization.QNameDeSerializationContext;
16 import org.opendaylight.controller.cluster.datastore.node.utils.serialization.QNameDeSerializationContextImpl;
17 import org.opendaylight.controller.cluster.datastore.node.utils.serialization.QNameSerializationContextImpl;
18 import org.opendaylight.controller.protobuff.messages.common.NormalizedNodeMessages;
19 import org.opendaylight.yangtools.yang.common.QName;
20 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
21 import java.util.ArrayList;
22 import java.util.Arrays;
23 import java.util.HashSet;
24 import java.util.List;
26 public class InstanceIdentifierUtilsTest {
28 private static QName TEST_QNAME = QName
29 .create("(urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:store:test?revision=2014-03-13)test");
30 private static QName NODE_WITH_VALUE_QNAME = QName
31 .create("(urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:store:test?revision=2014-03-13)value");
32 private static QName NODE_WITH_PREDICATES_QNAME = QName
33 .create("(urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:store:test?revision=2014-03-13)pred");
34 private static QName NAME_QNAME = QName
35 .create("(urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:store:test?revision=2014-03-13)name");
38 public void testSerializationOfNodeIdentifier() {
39 YangInstanceIdentifier.PathArgument p1 = new YangInstanceIdentifier.NodeIdentifier(TEST_QNAME);
41 List<YangInstanceIdentifier.PathArgument> arguments = new ArrayList<>();
45 YangInstanceIdentifier expected = YangInstanceIdentifier.create(arguments);
47 NormalizedNodeMessages.InstanceIdentifier instanceIdentifier =
48 InstanceIdentifierUtils.toSerializable(expected);
50 YangInstanceIdentifier actual = InstanceIdentifierUtils.fromSerializable(instanceIdentifier);
52 Assert.assertEquals(expected.getLastPathArgument(), actual.getLastPathArgument());
56 public void testSerializationOfNodeWithValue() {
65 private void withValue(Object value) {
66 YangInstanceIdentifier.PathArgument p1 = new YangInstanceIdentifier.NodeIdentifier(TEST_QNAME);
68 YangInstanceIdentifier.PathArgument p2 =
69 new YangInstanceIdentifier.NodeWithValue(NODE_WITH_VALUE_QNAME, value);
71 List<YangInstanceIdentifier.PathArgument> arguments = new ArrayList<>();
76 YangInstanceIdentifier expected = YangInstanceIdentifier.create(arguments);
78 NormalizedNodeMessages.InstanceIdentifier instanceIdentifier =
79 InstanceIdentifierUtils.toSerializable(expected);
81 YangInstanceIdentifier actual = InstanceIdentifierUtils.fromSerializable(instanceIdentifier);
83 Assert.assertEquals(expected.getLastPathArgument(), actual.getLastPathArgument());
87 public void testSerializationOfNodeIdentifierWithPredicates() {
89 withPredicates((short) 1);
90 withPredicates((long) 2);
96 private void withPredicates(Object value) {
97 YangInstanceIdentifier.PathArgument p1 = new YangInstanceIdentifier.NodeIdentifier(TEST_QNAME);
99 YangInstanceIdentifier.PathArgument p2 = new YangInstanceIdentifier.NodeIdentifierWithPredicates(
100 NODE_WITH_PREDICATES_QNAME, NAME_QNAME, value);
102 List<YangInstanceIdentifier.PathArgument> arguments = new ArrayList<>();
107 YangInstanceIdentifier expected = YangInstanceIdentifier.create(arguments);
109 NormalizedNodeMessages.InstanceIdentifier instanceIdentifier =
110 InstanceIdentifierUtils.toSerializable(expected);
112 YangInstanceIdentifier actual = InstanceIdentifierUtils.fromSerializable(instanceIdentifier);
114 Assert.assertEquals(expected.getLastPathArgument(), actual.getLastPathArgument());
118 public void testAugmentationIdentifier() {
119 YangInstanceIdentifier.PathArgument p1 = new YangInstanceIdentifier.AugmentationIdentifier(new HashSet(
120 Arrays.asList(TEST_QNAME)));
122 List<YangInstanceIdentifier.PathArgument> arguments = new ArrayList<>();
126 YangInstanceIdentifier expected = YangInstanceIdentifier.create(arguments);
128 NormalizedNodeMessages.InstanceIdentifier instanceIdentifier =
129 InstanceIdentifierUtils.toSerializable(expected);
131 YangInstanceIdentifier actual = InstanceIdentifierUtils.fromSerializable(instanceIdentifier);
133 Assert.assertEquals(expected.getLastPathArgument(), actual.getLastPathArgument());
138 public void testSerializationWithContext() {
139 List<YangInstanceIdentifier.PathArgument> arguments =
140 Arrays.<YangInstanceIdentifier.PathArgument>asList(
141 new YangInstanceIdentifier.NodeIdentifier(TEST_QNAME),
142 new YangInstanceIdentifier.NodeWithValue(NODE_WITH_VALUE_QNAME, 1),
143 new YangInstanceIdentifier.NodeIdentifierWithPredicates(
144 NODE_WITH_PREDICATES_QNAME, NAME_QNAME, 2));
146 YangInstanceIdentifier expected = YangInstanceIdentifier.create(arguments);
148 QNameSerializationContextImpl serializationContext = new QNameSerializationContextImpl();
150 NormalizedNodeMessages.InstanceIdentifier instanceIdentifier =
151 InstanceIdentifierUtils.toSerializable(expected, serializationContext);
153 QNameDeSerializationContext deserializationContext = new QNameDeSerializationContextImpl(
154 serializationContext.getCodes());
156 YangInstanceIdentifier actual = InstanceIdentifierUtils.fromSerializable(
157 instanceIdentifier, deserializationContext);
159 Assert.assertEquals(expected.getLastPathArgument(), actual.getLastPathArgument());