X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-netconf-connector%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fconnect%2Fnetconf%2FNetconfToRpcRequestTest.java;h=aa5f59be8d8702b1a0101ef66ae80e4adc6747ee;hp=3425739afdb2bdf674c06ebf8c6f46506df4e30d;hb=ccfab2e4f9599c13c58d9fa62a3275b17d3d6caa;hpb=dd32d3d246ebad8b7c76afb93239a4462f329a6b diff --git a/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/NetconfToRpcRequestTest.java b/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/NetconfToRpcRequestTest.java index 3425739afd..aa5f59be8d 100644 --- a/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/NetconfToRpcRequestTest.java +++ b/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/NetconfToRpcRequestTest.java @@ -3,7 +3,10 @@ package org.opendaylight.controller.sal.connect.netconf; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; +import static org.opendaylight.controller.sal.connect.netconf.util.NetconfMessageTransformUtil.toId; +import static org.opendaylight.controller.sal.connect.netconf.util.NetconfMessageTransformUtil.toPath; +import com.google.common.collect.Sets; import java.io.InputStream; import java.util.Collections; import java.util.List; @@ -13,13 +16,12 @@ import org.junit.Test; import org.opendaylight.controller.netconf.api.NetconfMessage; import org.opendaylight.controller.netconf.util.xml.XmlUtil; import org.opendaylight.controller.sal.connect.netconf.schema.mapping.NetconfMessageTransformer; -import org.opendaylight.controller.sal.connect.netconf.util.NetconfMessageTransformUtil; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.common.RpcResult; -import org.opendaylight.yangtools.yang.data.api.CompositeNode; -import org.opendaylight.yangtools.yang.data.api.Node; -import org.opendaylight.yangtools.yang.data.impl.ImmutableCompositeNode; -import org.opendaylight.yangtools.yang.data.impl.util.CompositeNodeBuilder; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; +import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; +import org.opendaylight.yangtools.yang.data.api.schema.LeafNode; +import org.opendaylight.yangtools.yang.data.impl.schema.Builders; +import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeAttrBuilder; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.parser.api.YangContextParser; @@ -48,7 +50,6 @@ public class NetconfToRpcRequestTest { private final static QName GET_QNAME = QName.create(CONFIG_TEST_NAMESPACE, CONFIG_TEST_REVISION, "get"); private final static QName GET_CONFIG_QNAME = QName.create(CONFIG_TEST_NAMESPACE, CONFIG_TEST_REVISION, "get-config"); - static SchemaContext notifCtx; static SchemaContext cfgCtx; static NetconfMessageTransformer messageTransformer; @@ -61,187 +62,29 @@ public class NetconfToRpcRequestTest { final Set notifModules = parser.parseYangModelsFromStreams(modelsToParse); assertTrue(!notifModules.isEmpty()); - notifCtx = parser.resolveSchemaContext(notifModules); - assertNotNull(notifCtx); - modelsToParse = Collections .singletonList(NetconfToRpcRequestTest.class.getResourceAsStream("/schemas/config-test-rpc.yang")); parser = new YangParserImpl(); final Set configModules = parser.parseYangModelsFromStreams(modelsToParse); - cfgCtx = parser.resolveSchemaContext(configModules); + cfgCtx = parser.resolveSchemaContext(Sets.union(configModules, notifModules)); assertNotNull(cfgCtx); - messageTransformer = new NetconfMessageTransformer(); - } - - @Test - public void testIsDataEditOperation() throws Exception { - messageTransformer.onGlobalContextUpdated(cfgCtx); - - final CompositeNodeBuilder rootBuilder = ImmutableCompositeNode.builder(); - rootBuilder.setQName(EDIT_CONFIG_QNAME); - - final CompositeNodeBuilder inputBuilder = ImmutableCompositeNode.builder(); - inputBuilder.setQName(QName.create(CONFIG_TEST_NAMESPACE, CONFIG_TEST_REVISION, "input")); - - final CompositeNodeBuilder targetBuilder = ImmutableCompositeNode.builder(); - targetBuilder.setQName(QName.create(CONFIG_TEST_NAMESPACE, CONFIG_TEST_REVISION, "target")); - targetBuilder.addLeaf(QName.create(CONFIG_TEST_NAMESPACE, CONFIG_TEST_REVISION, "running"), null); - - final CompositeNodeBuilder configBuilder = ImmutableCompositeNode.builder(); - configBuilder.setQName(QName.create(CONFIG_TEST_NAMESPACE, CONFIG_TEST_REVISION, "config")); - - final CompositeNodeBuilder anyxmlTopBuilder = ImmutableCompositeNode.builder(); - anyxmlTopBuilder.setQName(QName.create(CONFIG_TEST_NAMESPACE, CONFIG_TEST_REVISION, "top")); - - final CompositeNodeBuilder anyxmlInterfBuilder = ImmutableCompositeNode.builder(); - anyxmlInterfBuilder.setQName(QName.create(CONFIG_TEST_NAMESPACE, CONFIG_TEST_REVISION, "interface")); - - anyxmlInterfBuilder.addLeaf(QName.create(CONFIG_TEST_NAMESPACE, CONFIG_TEST_REVISION, "name"), "Ethernet0/0"); - anyxmlInterfBuilder.addLeaf(QName.create(CONFIG_TEST_NAMESPACE, CONFIG_TEST_REVISION, "mtu"), "1500"); - - anyxmlTopBuilder.add(anyxmlInterfBuilder.toInstance()); - configBuilder.add(anyxmlTopBuilder.toInstance()); - - inputBuilder.add(targetBuilder.toInstance()); - inputBuilder.add(configBuilder.toInstance()); - - rootBuilder.add(inputBuilder.toInstance()); - final ImmutableCompositeNode root = rootBuilder.toInstance(); - - final NetconfMessage message = messageTransformer.toRpcRequest(EDIT_CONFIG_QNAME, root); - assertNotNull(message); - - final Document xmlDoc = message.getDocument(); - org.w3c.dom.Node rpcChild = xmlDoc.getFirstChild(); - assertEquals(rpcChild.getLocalName(), "rpc"); - - final org.w3c.dom.Node editConfigNode = rpcChild.getFirstChild(); - assertEquals(editConfigNode.getLocalName(), "edit-config"); - - final org.w3c.dom.Node targetNode = editConfigNode.getFirstChild(); - assertEquals(targetNode.getLocalName(), "target"); - - final org.w3c.dom.Node runningNode = targetNode.getFirstChild(); - assertEquals(runningNode.getLocalName(), "running"); - - final org.w3c.dom.Node configNode = targetNode.getNextSibling(); - assertEquals(configNode.getLocalName(), "config"); - - final org.w3c.dom.Node topNode = configNode.getFirstChild(); - assertEquals(topNode.getLocalName(), "top"); - - final org.w3c.dom.Node interfaceNode = topNode.getFirstChild(); - assertEquals(interfaceNode.getLocalName(), "interface"); - - final org.w3c.dom.Node nameNode = interfaceNode.getFirstChild(); - assertEquals(nameNode.getLocalName(), "name"); - - final org.w3c.dom.Node mtuNode = nameNode.getNextSibling(); - assertEquals(mtuNode.getLocalName(), "mtu"); - } - - @Test - public void testIsGetOperation() throws Exception { - messageTransformer.onGlobalContextUpdated(cfgCtx); - - final CompositeNodeBuilder rootBuilder = ImmutableCompositeNode.builder(); - rootBuilder.setQName(GET_QNAME); - - final CompositeNodeBuilder inputBuilder = ImmutableCompositeNode.builder(); - inputBuilder.setQName(QName.create(CONFIG_TEST_NAMESPACE, CONFIG_TEST_REVISION, "input")); - - rootBuilder.add(inputBuilder.toInstance()); - final ImmutableCompositeNode root = rootBuilder.toInstance(); - - final NetconfMessage message = messageTransformer.toRpcRequest(GET_QNAME, root); - assertNotNull(message); - - final Document xmlDoc = message.getDocument(); - final org.w3c.dom.Node rpcChild = xmlDoc.getFirstChild(); - assertEquals(rpcChild.getLocalName(), "rpc"); - - final org.w3c.dom.Node get = rpcChild.getFirstChild(); - assertEquals(get.getLocalName(), "get"); + messageTransformer = new NetconfMessageTransformer(cfgCtx, true); } - @Test - public void testIsGetConfigOperation() throws Exception { - messageTransformer.onGlobalContextUpdated(cfgCtx); - - final CompositeNodeBuilder rootBuilder = ImmutableCompositeNode.builder(); - rootBuilder.setQName(GET_CONFIG_QNAME); - - final CompositeNodeBuilder inputBuilder = ImmutableCompositeNode.builder(); - inputBuilder.setQName(QName.create(CONFIG_TEST_NAMESPACE, CONFIG_TEST_REVISION, "input")); - - final CompositeNodeBuilder sourceBuilder = ImmutableCompositeNode.builder(); - sourceBuilder.setQName(QName.create(CONFIG_TEST_NAMESPACE, CONFIG_TEST_REVISION, "source")); - sourceBuilder.addLeaf(QName.create(CONFIG_TEST_NAMESPACE, CONFIG_TEST_REVISION, "running"), null); - - final CompositeNodeBuilder anyxmlFilterBuilder = ImmutableCompositeNode.builder(); - anyxmlFilterBuilder.setQName(QName.create(CONFIG_TEST_NAMESPACE, CONFIG_TEST_REVISION, "filter")); - - final CompositeNodeBuilder anyxmlTopBuilder = ImmutableCompositeNode.builder(); - anyxmlTopBuilder.setQName(QName.create(CONFIG_TEST_NAMESPACE, CONFIG_TEST_REVISION, "top")); - anyxmlTopBuilder.addLeaf(QName.create(CONFIG_TEST_NAMESPACE, CONFIG_TEST_REVISION, "users"), null); - - anyxmlFilterBuilder.add(anyxmlTopBuilder.toInstance()); - - inputBuilder.add(sourceBuilder.toInstance()); - inputBuilder.add(anyxmlFilterBuilder.toInstance()); - rootBuilder.add(inputBuilder.toInstance()); - final ImmutableCompositeNode root = rootBuilder.toInstance(); - - final NetconfMessage message = messageTransformer.toRpcRequest(GET_CONFIG_QNAME, root); - assertNotNull(message); - - final Document xmlDoc = message.getDocument(); - final org.w3c.dom.Node rpcChild = xmlDoc.getFirstChild(); - assertEquals(rpcChild.getLocalName(), "rpc"); - - final org.w3c.dom.Node getConfig = rpcChild.getFirstChild(); - assertEquals(getConfig.getLocalName(), "get-config"); - - final org.w3c.dom.Node sourceNode = getConfig.getFirstChild(); - assertEquals(sourceNode.getLocalName(), "source"); - - final org.w3c.dom.Node runningNode = sourceNode.getFirstChild(); - assertEquals(runningNode.getLocalName(), "running"); - - final org.w3c.dom.Node filterNode = sourceNode.getNextSibling(); - assertEquals(filterNode.getLocalName(), "filter"); - - final org.w3c.dom.Node topNode = filterNode.getFirstChild(); - assertEquals(topNode.getLocalName(), "top"); - - final org.w3c.dom.Node usersNode = topNode.getFirstChild(); - assertEquals(usersNode.getLocalName(), "users"); + private LeafNode buildLeaf(final QName running, final Object value) { + return Builders.leafBuilder().withNodeIdentifier(toId(running)).withValue(value).build(); } @Test public void testUserDefinedRpcCall() throws Exception { - messageTransformer.onGlobalContextUpdated(notifCtx); - - final CompositeNodeBuilder rootBuilder = ImmutableCompositeNode.builder(); - rootBuilder.setQName(SUBSCRIBE_RPC_NAME); - - final CompositeNodeBuilder inputBuilder = ImmutableCompositeNode.builder(); - inputBuilder.setQName(INPUT_QNAME); - inputBuilder.addLeaf(STREAM_NAME, "NETCONF"); + final DataContainerNodeAttrBuilder rootBuilder = Builders.containerBuilder(); + rootBuilder.withNodeIdentifier(toId(SUBSCRIBE_RPC_NAME)); - rootBuilder.add(inputBuilder.toInstance()); - final ImmutableCompositeNode root = rootBuilder.toInstance(); + rootBuilder.withChild(buildLeaf(STREAM_NAME, "NETCONF")); + final ContainerNode root = rootBuilder.build(); - final CompositeNode flattenedNode = NetconfMessageTransformUtil.flattenInput(root); - assertNotNull(flattenedNode); - assertEquals(1, flattenedNode.size()); - - final List inputNode = flattenedNode.getCompositesByName(INPUT_QNAME); - assertNotNull(inputNode); - assertTrue(inputNode.isEmpty()); - - final NetconfMessage message = messageTransformer.toRpcRequest(SUBSCRIBE_RPC_NAME, root); + final NetconfMessage message = messageTransformer.toRpcRequest(toPath(SUBSCRIBE_RPC_NAME), root); assertNotNull(message); final Document xmlDoc = message.getDocument(); @@ -256,7 +99,8 @@ public class NetconfToRpcRequestTest { } - @Test + // The edit config defined in yang has no output + @Test(expected = IllegalArgumentException.class) public void testRpcResponse() throws Exception { final NetconfMessage response = new NetconfMessage(XmlUtil.readXmlToDocument( "\n" + @@ -265,9 +109,8 @@ public class NetconfToRpcRequestTest { "\n" + "\n" )); - final RpcResult compositeNodeRpcResult = messageTransformer.toRpcResult(response, SUBSCRIBE_RPC_NAME); - final Node dataNode = compositeNodeRpcResult.getResult().getValue().get(0); - assertEquals("module schema", dataNode.getValue()); + + messageTransformer.toRpcResult(response, toPath(EDIT_CONFIG_QNAME)); } }