1 package org.opendaylight.yangtools.it.yang.runtime.tests;
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertFalse;
5 import static org.junit.Assert.assertNotNull;
6 import static org.junit.Assert.assertTrue;
8 import java.util.HashSet;
11 import org.junit.Before;
12 import org.junit.Test;
13 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.LinkId;
14 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
15 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopologyBuilder;
16 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
17 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId;
18 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TpId;
19 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.link.attributes.Source;
20 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.link.attributes.SourceBuilder;
21 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
22 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyBuilder;
23 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey;
24 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Link;
25 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.LinkBuilder;
26 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.LinkKey;
27 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
28 import org.opendaylight.yangtools.yang.binding.util.DataObjectReadingUtil;
30 import com.google.common.base.Optional;
31 import com.google.common.collect.ImmutableList;
33 public class BindingReadingTest {
35 private static final TopologyId TOPOLOGY_FOO_ID = new TopologyId("foo:topo");
36 private static final TopologyId TOPOLOGY_BAR_ID = new TopologyId("bar:topo");
37 private static final TopologyId TOPOLOGY_BAZ_ID = new TopologyId("baz:topo");
38 private static final LinkId LINK_BAR_ID = new LinkId("bar:link:1");
39 private static final NodeId SOURCE_NODE_ID = new NodeId("node:id");
40 private static final TpId SOURCE_TP_ID = new TpId("source:tp");
41 private static final InstanceIdentifier<NetworkTopology> NETWORK_TOPOLOGY_PATH = InstanceIdentifier.builder(
42 NetworkTopology.class).toInstance();
43 private NetworkTopology networkModel;
44 private Link linkModel;
46 private static final InstanceIdentifier<Topology> TOPOLOGY_BAR_PATH = InstanceIdentifier.builder(NETWORK_TOPOLOGY_PATH) //
47 .child(Topology.class, new TopologyKey(TOPOLOGY_BAR_ID)) //
50 private static final InstanceIdentifier<Link> LINK_BAR_PATH = InstanceIdentifier.builder(NETWORK_TOPOLOGY_PATH) //
51 .child(Topology.class, new TopologyKey(TOPOLOGY_BAR_ID)) //
52 .child(Link.class, new LinkKey(LINK_BAR_ID)) //
55 private static final InstanceIdentifier<Link> WILDCARDED_LINK_PATH = InstanceIdentifier
56 .builder(NETWORK_TOPOLOGY_PATH) //
57 .child(Topology.class) //
61 private static final InstanceIdentifier<Source> ABSOLUTE_SOURCE_PATH = InstanceIdentifier.builder(TOPOLOGY_BAR_PATH)
62 .child(Link.class, new LinkKey(LINK_BAR_ID)) //
63 .child(Source.class) //
66 private static final InstanceIdentifier<Source> WILDCARDED_SOURCE_PATH = InstanceIdentifier
67 .builder(NETWORK_TOPOLOGY_PATH).child(Topology.class) //
68 .child(Link.class, new LinkKey(LINK_BAR_ID)) //
69 .child(Source.class) //
74 * Creates network topology model with three topologies:
76 * Where bar has 1 link, and baz has 2 links.
80 public void createTopology() {
81 linkModel = new LinkBuilder() //
82 .setLinkId(LINK_BAR_ID) //
83 .setSource(new SourceBuilder() //
84 .setSourceNode(SOURCE_NODE_ID) //
85 .setSourceTp(SOURCE_TP_ID) //
88 networkModel = new NetworkTopologyBuilder().setTopology(ImmutableList.<Topology> builder() //
89 .add(new TopologyBuilder() //
90 .setTopologyId(TOPOLOGY_FOO_ID) //
91 .setServerProvided(true) //
93 .add(new TopologyBuilder() //
94 .setTopologyId(TOPOLOGY_BAR_ID) //
95 .setServerProvided(false) //
96 .setLink(ImmutableList.<Link> builder() //
100 .add(new TopologyBuilder() //
102 .add(new TopologyBuilder() //
103 .setTopologyId(TOPOLOGY_BAZ_ID)//
104 .setLink(ImmutableList.<Link> builder() //
105 .add(new LinkBuilder().setLinkId(new LinkId("link:2")).build()) //
106 .add(new LinkBuilder().setLinkId(new LinkId("link:3")).build()) //
114 public void testContainerRead() {
115 Optional<Source> source = DataObjectReadingUtil.readData(linkModel, Source.class);
116 assertNotNull(source);
117 assertEquals(linkModel.getSource(), source.get());
121 public void testInstanceIdentifierRead() {
122 Map<InstanceIdentifier<Source>, Source> source = DataObjectReadingUtil.readData(networkModel,
123 NETWORK_TOPOLOGY_PATH, ABSOLUTE_SOURCE_PATH);
124 assertNotNull(source);
125 Source potentialSource = source.get(ABSOLUTE_SOURCE_PATH);
126 assertEquals(linkModel.getSource(), potentialSource);
130 public void testInstanceIdentifierReadWildcarded() {
131 Topology topology = DataObjectReadingUtil.readData(networkModel, NETWORK_TOPOLOGY_PATH, TOPOLOGY_BAR_PATH).get(
133 Map<InstanceIdentifier<Source>, Source> source = DataObjectReadingUtil.readData(topology, TOPOLOGY_BAR_PATH,
134 WILDCARDED_SOURCE_PATH);
135 assertNotNull(source);
136 Source potentialSource = source.get(ABSOLUTE_SOURCE_PATH);
137 assertEquals(linkModel.getSource(), potentialSource);
141 public void testInstanceIdentifierReadNonExistingValue() {
142 InstanceIdentifier<Source> sourcePath = InstanceIdentifier.builder(NETWORK_TOPOLOGY_PATH) //
143 .child(Topology.class, new TopologyKey(TOPOLOGY_BAZ_ID)) //
144 .child(Link.class, new LinkKey(LINK_BAR_ID)) //
145 .child(Source.class) //
147 Map<InstanceIdentifier<Source>, Source> source = DataObjectReadingUtil.readData(networkModel,
148 NETWORK_TOPOLOGY_PATH, sourcePath);
149 assertNotNull(source);
150 assertTrue(source.isEmpty());
154 public void testWildcardedListRead() {
155 Topology topology = DataObjectReadingUtil.readData(networkModel, NETWORK_TOPOLOGY_PATH, TOPOLOGY_BAR_PATH).get(TOPOLOGY_BAR_PATH);
157 Map<InstanceIdentifier<Link>, Link> potentialLinks = DataObjectReadingUtil.readData(topology, TOPOLOGY_BAR_PATH, WILDCARDED_LINK_PATH);
158 assertFalse(potentialLinks.isEmpty());
159 assertEquals(1, potentialLinks.size());
160 assertEquals(linkModel, potentialLinks.get(LINK_BAR_PATH));
164 public void testTwoWildcardsListRead() {
166 Map<InstanceIdentifier<Link>, Link> potentialLinks = DataObjectReadingUtil.readData(networkModel, NETWORK_TOPOLOGY_PATH, WILDCARDED_LINK_PATH);
167 assertFalse(potentialLinks.isEmpty());
168 assertEquals(3, potentialLinks.size());
169 assertEquals(linkModel, potentialLinks.get(LINK_BAR_PATH));
170 HashSet<Link> allLinks = new HashSet<>(potentialLinks.values());
171 assertEquals(3, allLinks.size());
172 for(InstanceIdentifier<Link> key : potentialLinks.keySet()) {
173 assertFalse("Returned instance identifier must not be wildcarded.", key.isWildcarded());