Yangtools891Test does not need XML 32/86632/2
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 30 Dec 2019 15:18:44 +0000 (16:18 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Mon, 30 Dec 2019 16:13:06 +0000 (17:13 +0100)
This migrates the test to not use XML parsing for simple data
structures and defines them statically.

Change-Id: Iaf97f4853349b74efb21d1600bd72c4ea35c325a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/Yangtools891Test.java
yang/yang-data-codec-xml/src/test/resources/yangtools891/baz-top.xml [deleted file]
yang/yang-data-codec-xml/src/test/resources/yangtools891/grouping-with-leafref-invalid.xml [deleted file]
yang/yang-data-codec-xml/src/test/resources/yangtools891/grouping-with-leafref-valid.xml [deleted file]
yang/yang-data-codec-xml/src/test/resources/yangtools891/grouping-with-list-invalid.xml [deleted file]
yang/yang-data-codec-xml/src/test/resources/yangtools891/grouping-with-list-valid.xml [deleted file]

index b40652cf6bdc5e721b63b92e3654f53170935dd4..4a6846787c167ce2bd7865ed1b701d9bc7dbbb72 100644 (file)
@@ -7,18 +7,15 @@
  */
 package org.opendaylight.yangtools.yang.data.codec.xml;
 
-import java.io.InputStream;
-import javax.xml.stream.XMLStreamReader;
 import org.junit.AfterClass;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
-import org.opendaylight.yangtools.util.xml.UntrustedXML;
 import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
+import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeConfiguration;
@@ -26,30 +23,28 @@ import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification
 import org.opendaylight.yangtools.yang.data.impl.leafref.LeafRefContext;
 import org.opendaylight.yangtools.yang.data.impl.leafref.LeafRefDataValidationFailedException;
 import org.opendaylight.yangtools.yang.data.impl.leafref.LeafRefValidation;
-import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter;
-import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult;
+import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
+import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
 import org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeFactory;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
 
 public class Yangtools891Test {
-    private static final String FOO = "foo";
-    private static final String FOO_NS = "urn:opendaylight:params:xml:ns:yang:foo";
-    private static final String FOO_REV = "2018-07-27";
-    private static final QName FOO_TOP = QName.create(FOO_NS, FOO_REV, "foo-top");
+    private static final QName FOO_TOP = QName.create("urn:opendaylight:params:xml:ns:yang:foo", "2018-07-27",
+        "foo-top");
+    private static final QName CONTAINER_IN_LIST = QName.create(FOO_TOP, "container-in-list");
+    private static final QName LIST_IN_GROUPING = QName.create(FOO_TOP, "list-in-grouping");
+    private static final QName NAME = QName.create(FOO_TOP, "name");
+    private static final QName REF = QName.create(FOO_TOP, "ref");
     private static final YangInstanceIdentifier FOO_TOP_ID = YangInstanceIdentifier.of(FOO_TOP);
-    private static final String BAZ = "baz";
-    private static final String BAZ_NS = "urn:opendaylight:params:xml:ns:yang:baz";
-    private static final String BAZ_REV = "2018-07-27";
-    private static final QName BAZ_TOP = QName.create(BAZ_NS, BAZ_REV, "baz-top");
+    private static final QName BAZ_TOP = QName.create("urn:opendaylight:params:xml:ns:yang:baz", "2018-07-27",
+        "baz-top");
+    private static final QName BAZ_NAME = QName.create(BAZ_TOP, "name");
+    private static final QName LIST_IN_CONTAINER = QName.create(BAZ_TOP, "list-in-container");
     private static final YangInstanceIdentifier BAZ_TOP_ID = YangInstanceIdentifier.of(BAZ_TOP);
 
     private static SchemaContext schemaContext;
     private static LeafRefContext leafRefContext;
-    private static ContainerSchemaNode fooTopNode;
-    private static ContainerSchemaNode bazTopNode;
 
     private DataTree dataTree;
 
@@ -62,25 +57,31 @@ public class Yangtools891Test {
     public static void beforeClass() {
         schemaContext = YangParserTestUtils.parseYangResourceDirectory("/yangtools891");
         leafRefContext = LeafRefContext.create(schemaContext);
-        final Module fooModule = schemaContext.findModule(FOO, Revision.of(FOO_REV)).get();
-        fooTopNode = (ContainerSchemaNode) fooModule.findDataChildByName(FOO_TOP).get();
-        final Module bazModule = schemaContext.findModule(BAZ, Revision.of(BAZ_REV)).get();
-        bazTopNode = (ContainerSchemaNode) bazModule.findDataChildByName(BAZ_TOP).get();
     }
 
     @AfterClass
     public static void afterClass() {
         schemaContext = null;
         leafRefContext = null;
-        fooTopNode = null;
-        bazTopNode = null;
     }
 
     @Test
     public void testValid() throws Exception {
-        final NormalizedNode<?, ?> fooTop = readNode("/yangtools891/grouping-with-list-valid.xml", fooTopNode);
         final DataTreeModification writeModification = dataTree.takeSnapshot().newModification();
-        writeModification.write(FOO_TOP_ID, fooTop);
+        writeModification.write(FOO_TOP_ID, Builders.containerBuilder()
+            .withNodeIdentifier(new NodeIdentifier(FOO_TOP))
+            .withChild(Builders.mapBuilder()
+                .withNodeIdentifier(new NodeIdentifier(LIST_IN_GROUPING))
+                .withChild(Builders.mapEntryBuilder()
+                    .withNodeIdentifier(NodeIdentifierWithPredicates.of(LIST_IN_GROUPING, NAME, "name1"))
+                    .withChild(ImmutableNodes.leafNode(NAME, "name1"))
+                    .withChild(Builders.containerBuilder()
+                        .withNodeIdentifier(new NodeIdentifier(CONTAINER_IN_LIST))
+                        .withChild(ImmutableNodes.leafNode(NAME, "name1"))
+                        .build())
+                    .build())
+                .build())
+            .build());
         writeModification.ready();
         final DataTreeCandidate writeContributorsCandidate = dataTree.prepare(writeModification);
 
@@ -90,9 +91,21 @@ public class Yangtools891Test {
 
     @Test(expected = LeafRefDataValidationFailedException.class)
     public void testInvalid() throws Exception {
-        final NormalizedNode<?, ?> fooTop = readNode("/yangtools891/grouping-with-list-invalid.xml", fooTopNode);
         final DataTreeModification writeModification = dataTree.takeSnapshot().newModification();
-        writeModification.write(FOO_TOP_ID, fooTop);
+        writeModification.write(FOO_TOP_ID, Builders.containerBuilder()
+            .withNodeIdentifier(new NodeIdentifier(FOO_TOP))
+            .withChild(Builders.mapBuilder()
+                .withNodeIdentifier(new NodeIdentifier(LIST_IN_GROUPING))
+                .withChild(Builders.mapEntryBuilder()
+                    .withNodeIdentifier(NodeIdentifierWithPredicates.of(LIST_IN_GROUPING, NAME, "name1"))
+                    .withChild(ImmutableNodes.leafNode(NAME, "name1"))
+                    .withChild(Builders.containerBuilder()
+                        .withNodeIdentifier(new NodeIdentifier(CONTAINER_IN_LIST))
+                        .withChild(ImmutableNodes.leafNode(NAME, "name2"))
+                        .build())
+                    .build())
+                .build())
+            .build());
         writeModification.ready();
         final DataTreeCandidate writeContributorsCandidate = dataTree.prepare(writeModification);
 
@@ -101,11 +114,12 @@ public class Yangtools891Test {
 
     @Test
     public void testGroupingWithLeafrefValid() throws Exception {
-        final NormalizedNode<?, ?> bazTop = readNode("/yangtools891/baz-top.xml", bazTopNode);
-        final NormalizedNode<?, ?> fooTop = readNode("/yangtools891/grouping-with-leafref-valid.xml", fooTopNode);
         final DataTreeModification writeModification = dataTree.takeSnapshot().newModification();
-        writeModification.write(BAZ_TOP_ID, bazTop);
-        writeModification.write(FOO_TOP_ID, fooTop);
+        writeModification.write(BAZ_TOP_ID, bazTop());
+        writeModification.write(FOO_TOP_ID, Builders.containerBuilder()
+            .withNodeIdentifier(new NodeIdentifier(FOO_TOP))
+            .withChild(ImmutableNodes.leafNode(REF, "name1"))
+            .build());
         writeModification.ready();
         final DataTreeCandidate writeContributorsCandidate = dataTree.prepare(writeModification);
 
@@ -114,25 +128,28 @@ public class Yangtools891Test {
 
     @Test(expected = LeafRefDataValidationFailedException.class)
     public void testGroupingWithLeafrefInvalid() throws Exception {
-        final NormalizedNode<?, ?> bazTop = readNode("/yangtools891/baz-top.xml", bazTopNode);
-        final NormalizedNode<?, ?> fooTop = readNode("/yangtools891/grouping-with-leafref-invalid.xml", fooTopNode);
         final DataTreeModification writeModification = dataTree.takeSnapshot().newModification();
-        writeModification.write(BAZ_TOP_ID, bazTop);
-        writeModification.write(FOO_TOP_ID, fooTop);
+        writeModification.write(BAZ_TOP_ID, bazTop());
+        writeModification.write(FOO_TOP_ID, Builders.containerBuilder()
+            .withNodeIdentifier(new NodeIdentifier(FOO_TOP))
+            .withChild(ImmutableNodes.leafNode(REF, "name3"))
+            .build());
         writeModification.ready();
         final DataTreeCandidate writeContributorsCandidate = dataTree.prepare(writeModification);
 
         LeafRefValidation.validate(writeContributorsCandidate, leafRefContext);
     }
 
-    private static NormalizedNode<?, ?> readNode(final String filename, final ContainerSchemaNode node)
-            throws Exception {
-        final InputStream resourceAsStream = Yangtools891Test.class.getResourceAsStream(filename);
-        final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
-        final NormalizedNodeResult result = new NormalizedNodeResult();
-        final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
-        final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, node);
-        xmlParser.parse(reader);
-        return result.getResult();
+    private static ContainerNode bazTop() {
+        return Builders.containerBuilder()
+                .withNodeIdentifier(new NodeIdentifier(BAZ_TOP))
+                .withChild(Builders.mapBuilder()
+                    .withNodeIdentifier(new NodeIdentifier(LIST_IN_CONTAINER))
+                    .withChild(Builders.mapEntryBuilder()
+                        .withNodeIdentifier(NodeIdentifierWithPredicates.of(LIST_IN_CONTAINER, BAZ_NAME, "name1"))
+                        .withChild(ImmutableNodes.leafNode(BAZ_NAME, "name1"))
+                        .build())
+                    .build())
+                .build();
     }
-}
\ No newline at end of file
+}
diff --git a/yang/yang-data-codec-xml/src/test/resources/yangtools891/baz-top.xml b/yang/yang-data-codec-xml/src/test/resources/yangtools891/baz-top.xml
deleted file mode 100644 (file)
index 762cd8e..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<top-container xmlns="urn:opendaylight:params:xml:ns:yang:baz">
-    <list-in-container>
-        <name>name1</name>
-    </list-in-container>
-</top-container>
diff --git a/yang/yang-data-codec-xml/src/test/resources/yangtools891/grouping-with-leafref-invalid.xml b/yang/yang-data-codec-xml/src/test/resources/yangtools891/grouping-with-leafref-invalid.xml
deleted file mode 100644 (file)
index 563bce5..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<root xmlns="urn:opendaylight:params:xml:ns:yang:foo">
-    <ref>name3</ref>
-</root>
diff --git a/yang/yang-data-codec-xml/src/test/resources/yangtools891/grouping-with-leafref-valid.xml b/yang/yang-data-codec-xml/src/test/resources/yangtools891/grouping-with-leafref-valid.xml
deleted file mode 100644 (file)
index 12aa972..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<root xmlns="urn:opendaylight:params:xml:ns:yang:foo">
-    <ref>name1</ref>
-</root>
diff --git a/yang/yang-data-codec-xml/src/test/resources/yangtools891/grouping-with-list-invalid.xml b/yang/yang-data-codec-xml/src/test/resources/yangtools891/grouping-with-list-invalid.xml
deleted file mode 100644 (file)
index e4ab91b..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<foo-top xmlns="urn:opendaylight:params:xml:ns:yang:foo">
-    <list-in-grouping>
-        <name>name1</name>
-        <container-in-list>
-            <name>name2</name>
-        </container-in-list>
-    </list-in-grouping>
-</foo-top>
diff --git a/yang/yang-data-codec-xml/src/test/resources/yangtools891/grouping-with-list-valid.xml b/yang/yang-data-codec-xml/src/test/resources/yangtools891/grouping-with-list-valid.xml
deleted file mode 100644 (file)
index b0412ba..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<foo-top xmlns="urn:opendaylight:params:xml:ns:yang:foo">
-    <list-in-grouping>
-        <name>name1</name>
-        <container-in-list>
-            <name>name1</name>
-        </container-in-list>
-    </list-in-grouping>
-</foo-top>