Merge "Fixed for bug 1168 : Issue while update subnet"
[controller.git] / opendaylight / md-sal / sal-netconf-connector / src / test / java / org / opendaylight / controller / sal / connect / netconf / NetconfToRpcRequestTest.java
1 package org.opendaylight.controller.sal.connect.netconf;
2
3 import static junit.framework.Assert.assertEquals;
4 import static junit.framework.Assert.assertNotNull;
5 import static junit.framework.Assert.assertTrue;
6
7 import java.io.InputStream;
8 import java.util.Collections;
9 import java.util.List;
10 import java.util.Set;
11
12 import org.junit.Before;
13 import org.junit.Test;
14 import org.opendaylight.controller.netconf.api.NetconfMessage;
15 import org.opendaylight.controller.sal.connect.netconf.schema.mapping.NetconfMessageTransformer;
16 import org.opendaylight.controller.sal.connect.netconf.util.NetconfMessageTransformUtil;
17 import org.opendaylight.yangtools.yang.common.QName;
18 import org.opendaylight.yangtools.yang.data.api.CompositeNode;
19 import org.opendaylight.yangtools.yang.data.impl.ImmutableCompositeNode;
20 import org.opendaylight.yangtools.yang.data.impl.util.CompositeNodeBuilder;
21 import org.opendaylight.yangtools.yang.model.api.Module;
22 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
23 import org.opendaylight.yangtools.yang.model.parser.api.YangContextParser;
24 import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
25
26 /**
27  * Test case for reported bug 1355
28  *
29  * @author Lukas Sedlak
30  * @see <a
31  *      https://bugs.opendaylight.org/show_bug.cgi?id=1355</a>
32  */
33 public class NetconfToRpcRequestTest {
34
35     private String TEST_MODEL_NAMESPACE = "urn:opendaylight:params:xml:ns:yang:controller:md:sal:rpc-test";
36     private String REVISION = "2014-07-14";
37     private QName INPUT_QNAME = QName.create(TEST_MODEL_NAMESPACE, REVISION, "input");
38     private QName STREAM_NAME = QName.create(TEST_MODEL_NAMESPACE, REVISION, "stream-name");
39     private QName RPC_NAME = QName.create(TEST_MODEL_NAMESPACE, REVISION, "subscribe");
40
41     NetconfMessageTransformer messageTransformer;
42
43     @SuppressWarnings("deprecation")
44     @Before
45     public void setup() throws Exception {
46         final List<InputStream> modelsToParse = Collections
47             .singletonList(getClass().getResourceAsStream("/schemas/rpc-notification-subscription.yang"));
48         final YangContextParser parser = new YangParserImpl();
49         final Set<Module> modules = parser.parseYangModelsFromStreams(modelsToParse);
50         assertTrue(!modules.isEmpty());
51         final SchemaContext schemaContext = parser.resolveSchemaContext(modules);
52         assertNotNull(schemaContext);
53
54         messageTransformer = new NetconfMessageTransformer();
55         messageTransformer.onGlobalContextUpdated(schemaContext);
56     }
57
58     @Test
59     public void test() throws Exception {
60         final CompositeNodeBuilder<ImmutableCompositeNode> rootBuilder = ImmutableCompositeNode.builder();
61         rootBuilder.setQName(RPC_NAME);
62
63         final CompositeNodeBuilder<ImmutableCompositeNode> inputBuilder = ImmutableCompositeNode.builder();
64         inputBuilder.setQName(INPUT_QNAME);
65         inputBuilder.addLeaf(STREAM_NAME, "NETCONF");
66
67         rootBuilder.add(inputBuilder.toInstance());
68         final ImmutableCompositeNode root = rootBuilder.toInstance();
69
70         final CompositeNode flattenedNode = NetconfMessageTransformUtil.flattenInput(root);
71         assertNotNull(flattenedNode);
72         assertEquals(1, flattenedNode.size());
73
74         final List<CompositeNode> inputNode = flattenedNode.getCompositesByName(INPUT_QNAME);
75         assertNotNull(inputNode);
76         assertTrue(inputNode.isEmpty());
77
78         final NetconfMessage message = messageTransformer.toRpcRequest(RPC_NAME, root);
79         assertNotNull(message);
80     }
81 }