e26273e026cf6d098d6e7efb38ef2dd176c9d1e5
[controller.git] / opendaylight / md-sal / sal-binding-broker / src / test / java / org / opendaylight / controller / sal / binding / test / connect / dom / MappingServiceTest.java
1 package org.opendaylight.controller.sal.binding.test.connect.dom;
2
3 import static org.junit.Assert.*;
4
5 import java.io.InputStream;
6 import java.util.ArrayList;
7 import java.util.List;
8 import java.util.Map;
9 import java.util.Map.Entry;
10 import java.util.Set;
11
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeBuilder;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
16 import org.junit.Before;
17 import org.junit.Test;
18 import org.opendaylight.controller.sal.binding.impl.connect.dom.BindingIndependentMappingService;
19 import org.opendaylight.controller.sal.binding.impl.connect.dom.MappingServiceImpl;
20 import org.opendaylight.controller.sal.binding.test.AbstractDataServiceTest;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodesBuilder;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder;
25 import org.opendaylight.yangtools.sal.binding.generator.impl.ModuleContext;
26 import org.opendaylight.yangtools.yang.binding.Augmentation;
27 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
28 import org.opendaylight.yangtools.yang.common.QName;
29 import org.opendaylight.yangtools.yang.data.api.CompositeNode;
30 import org.opendaylight.yangtools.yang.model.api.Module;
31 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
32 import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
33
34 public class MappingServiceTest {
35
36     private static final QName NODES = QName.create("urn:opendaylight:inventory", "2013-08-19", "nodes");
37     private static final QName NODE = QName.create(NODES,"node");
38     private static final QName ID = QName.create(NODES,"id");
39     
40     BindingIndependentMappingService service;
41     private MappingServiceImpl impl;
42
43     @Before
44     public void setUp() {
45         impl = new MappingServiceImpl();
46         service = impl;
47     }
48
49     @Test
50     public void baDataToBiData() throws Exception {
51
52         String[] yangFiles = AbstractDataServiceTest.getModelFilenamesImpl();
53
54         SchemaContext ctx = AbstractDataServiceTest.getContext(yangFiles);
55
56         impl.onGlobalContextUpdated(ctx);
57
58         NodesBuilder nodes = new NodesBuilder();
59
60         List<Node> nodeList = new ArrayList<>();
61         nodeList.add(createChildNode("foo"));
62         nodeList.add(createChildNode("bar"));
63
64         nodes.setNode(nodeList);
65         Nodes nodesTO = nodes.build();
66         CompositeNode xmlNodes = service.toDataDom(nodesTO);
67         assertNotNull(xmlNodes);
68         List<CompositeNode> invNodes = xmlNodes.getCompositesByName(NODE);
69         assertNotNull(invNodes);
70         assertEquals(2, invNodes.size());
71     }
72
73     @Test
74     public void instanceIdentifierTest() throws Exception {
75
76         String[] yangFiles = AbstractDataServiceTest.getModelFilenamesImpl();
77         SchemaContext ctx = AbstractDataServiceTest.getContext(yangFiles);
78         impl.onGlobalContextUpdated(ctx);
79
80         NodeKey nodeKey = new NodeKey(new NodeId("foo"));
81         InstanceIdentifier<Node> path = InstanceIdentifier.builder().node(Nodes.class).child(Node.class, nodeKey).toInstance();
82         org.opendaylight.yangtools.yang.data.api.InstanceIdentifier result = service.toDataDom(path);
83         assertNotNull(result);
84         assertEquals(2, result.getPath().size());
85     }
86
87     private Node createChildNode(String id) {
88         NodeBuilder node = new NodeBuilder();
89         NodeId nodeId = new NodeId(id);
90
91         node.setId(nodeId);
92         node.setKey(new NodeKey(nodeId));
93
94         FlowCapableNodeBuilder aug = new FlowCapableNodeBuilder();
95         aug.setManufacturer(id);
96         node.addAugmentation(FlowCapableNode.class, aug.build());
97
98         return node.build();
99     }
100
101 }