From 300b2ea4d3ae8e001b6239806faada16b8d61de0 Mon Sep 17 00:00:00 2001 From: Maros Marsalek Date: Tue, 24 Nov 2015 16:25:59 +0100 Subject: [PATCH] Fix get and get-config ordering for netconf-mdsal Change-Id: Ic31c3d44d89674240d77809041e29a2c7dd50638 Signed-off-by: Maros Marsalek --- .../mdsal/connector/ops/get/AbstractGet.java | 2 +- .../ops/NetconfMDSalMappingTest.java | 18 +++++++++++ .../editConfig_merge_multiple_keys_1.xml | 30 +++++++++++++++++++ ...itConfig_merge_multiple_keys_1_control.xml | 21 +++++++++++++ .../yang/mdsal-netconf-mapping-test.yang | 24 +++++++++++++++ 5 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 opendaylight/netconf/mdsal-netconf-connector/src/test/resources/messages/mapping/editConfigs/editConfig_merge_multiple_keys_1.xml create mode 100644 opendaylight/netconf/mdsal-netconf-connector/src/test/resources/messages/mapping/editConfigs/editConfig_merge_multiple_keys_1_control.xml diff --git a/opendaylight/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/controller/netconf/mdsal/connector/ops/get/AbstractGet.java b/opendaylight/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/controller/netconf/mdsal/connector/ops/get/AbstractGet.java index d028a89e36..984e50dc19 100644 --- a/opendaylight/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/controller/netconf/mdsal/connector/ops/get/AbstractGet.java +++ b/opendaylight/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/controller/netconf/mdsal/connector/ops/get/AbstractGet.java @@ -85,7 +85,7 @@ public abstract class AbstractGet extends AbstractSingletonNetconfOperation { final NormalizedNodeStreamWriter nnStreamWriter = XMLStreamNormalizedNodeStreamWriter.create(xmlWriter, schemaContext.getCurrentContext(), getSchemaPath(dataRoot)); - final NormalizedNodeWriter nnWriter = NormalizedNodeWriter.forStreamWriter(nnStreamWriter); + final NormalizedNodeWriter nnWriter = NormalizedNodeWriter.forStreamWriter(nnStreamWriter, true); writeRootElement(xmlWriter, nnWriter, (ContainerNode) data); return result.getNode(); diff --git a/opendaylight/netconf/mdsal-netconf-connector/src/test/java/org/opendaylight/controller/netconf/mdsal/connector/ops/NetconfMDSalMappingTest.java b/opendaylight/netconf/mdsal-netconf-connector/src/test/java/org/opendaylight/controller/netconf/mdsal/connector/ops/NetconfMDSalMappingTest.java index b4f5a9756b..587375db7a 100644 --- a/opendaylight/netconf/mdsal-netconf-connector/src/test/java/org/opendaylight/controller/netconf/mdsal/connector/ops/NetconfMDSalMappingTest.java +++ b/opendaylight/netconf/mdsal-netconf-connector/src/test/java/org/opendaylight/controller/netconf/mdsal/connector/ops/NetconfMDSalMappingTest.java @@ -187,6 +187,24 @@ public class NetconfMDSalMappingTest { } + @Test + public void testKeyOrder() throws Exception { + verifyResponse(edit("messages/mapping/editConfigs/editConfig_merge_multiple_keys_1.xml"), RPC_REPLY_OK); + verifyResponse(commit(), RPC_REPLY_OK); + final Document configRunning = getConfigRunning(); + final String responseAsString = XmlUtil.toString(configRunning); + verifyResponse(configRunning, XmlFileLoader.xmlFileToDocument("messages/mapping/editConfigs/editConfig_merge_multiple_keys_1_control.xml")); + + final int key3 = responseAsString.indexOf("key3"); + final int key1 = responseAsString.indexOf("key1"); + final int key2 = responseAsString.indexOf("key2"); + + assertTrue(String.format("Key ordering invalid, should be key3(%d) < key1(%d) < key2(%d)", key3, key1, key2), + key3 < key1 && key1 < key2); + + deleteDatastore(); + } + @Test public void testMultipleEditsWithMerge() throws Exception { diff --git a/opendaylight/netconf/mdsal-netconf-connector/src/test/resources/messages/mapping/editConfigs/editConfig_merge_multiple_keys_1.xml b/opendaylight/netconf/mdsal-netconf-connector/src/test/resources/messages/mapping/editConfigs/editConfig_merge_multiple_keys_1.xml new file mode 100644 index 0000000000..6b9ce731c5 --- /dev/null +++ b/opendaylight/netconf/mdsal-netconf-connector/src/test/resources/messages/mapping/editConfigs/editConfig_merge_multiple_keys_1.xml @@ -0,0 +1,30 @@ + + + + + + + + set + + merge + + + + + 22 + 2 + 1 + 11 + 3 + + + + + \ No newline at end of file diff --git a/opendaylight/netconf/mdsal-netconf-connector/src/test/resources/messages/mapping/editConfigs/editConfig_merge_multiple_keys_1_control.xml b/opendaylight/netconf/mdsal-netconf-connector/src/test/resources/messages/mapping/editConfigs/editConfig_merge_multiple_keys_1_control.xml new file mode 100644 index 0000000000..01a86617a0 --- /dev/null +++ b/opendaylight/netconf/mdsal-netconf-connector/src/test/resources/messages/mapping/editConfigs/editConfig_merge_multiple_keys_1_control.xml @@ -0,0 +1,21 @@ + + + + + + + 3 + 1 + 2 + 22 + 11 + + + + \ No newline at end of file diff --git a/opendaylight/netconf/mdsal-netconf-connector/src/test/resources/yang/mdsal-netconf-mapping-test.yang b/opendaylight/netconf/mdsal-netconf-connector/src/test/resources/yang/mdsal-netconf-mapping-test.yang index 399ae4b3bc..831638826c 100644 --- a/opendaylight/netconf/mdsal-netconf-connector/src/test/resources/yang/mdsal-netconf-mapping-test.yang +++ b/opendaylight/netconf/mdsal-netconf-connector/src/test/resources/yang/mdsal-netconf-mapping-test.yang @@ -7,6 +7,30 @@ module config { container mapping-nodes { + list multiple-keys { + key "key3 key1 key2"; + + leaf value1 { + type string; + } + + leaf key1 { + type string; + } + + leaf value2 { + type string; + } + + leaf key2 { + type string; + } + + leaf key3 { + type string; + } + } + list mapping-node{ key "id"; leaf id { -- 2.36.6