aboutsummaryrefslogtreecommitdiffstats
path: root/cps-service/src/test/groovy/org/onap/cps/utils/JsonParserStreamSpec.groovy
diff options
context:
space:
mode:
Diffstat (limited to 'cps-service/src/test/groovy/org/onap/cps/utils/JsonParserStreamSpec.groovy')
-rw-r--r--cps-service/src/test/groovy/org/onap/cps/utils/JsonParserStreamSpec.groovy51
1 files changed, 51 insertions, 0 deletions
diff --git a/cps-service/src/test/groovy/org/onap/cps/utils/JsonParserStreamSpec.groovy b/cps-service/src/test/groovy/org/onap/cps/utils/JsonParserStreamSpec.groovy
new file mode 100644
index 000000000..68f9251eb
--- /dev/null
+++ b/cps-service/src/test/groovy/org/onap/cps/utils/JsonParserStreamSpec.groovy
@@ -0,0 +1,51 @@
+package org.onap.cps.utils
+
+import com.google.gson.stream.JsonReader
+import org.onap.cps.yang.YangTextSchemaSourceSetBuilder
+import org.opendaylight.yangtools.yang.common.QName
+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.NormalizedNode
+import org.opendaylight.yangtools.yang.data.codec.gson.JSONCodecFactorySupplier
+import org.opendaylight.yangtools.yang.data.codec.gson.JsonParserStream
+import org.opendaylight.yangtools.yang.data.impl.schema.Builders
+import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter
+import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeBuilder
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
+import spock.lang.Specification
+import org.onap.cps.TestUtils
+
+class JsonParserStreamSpec extends Specification{
+
+ def 'Multiple data tree parsing with ODL JsonStreamParser'(){
+ given: 'json data with two objects and JSON reader'
+ def jsonData = TestUtils.getResourceFileContent('multiple-object-data.json')
+ def jsonReader = new JsonReader(new StringReader(jsonData))
+ def yangResourcesMap = TestUtils.getYangResourcesAsMap('multipleDataTree.yang')
+ and: 'schema context'
+ def schemaContext = YangTextSchemaSourceSetBuilder.of(yangResourcesMap).getSchemaContext()
+ and: 'variable to store the result of parsing'
+ DataContainerNodeBuilder<YangInstanceIdentifier.NodeIdentifier, ContainerNode> builder =
+ Builders.containerBuilder().withNodeIdentifier(new YangInstanceIdentifier.NodeIdentifier(schemaContext.getQName()));
+ def normalizedNodeStreamWriter = ImmutableNormalizedNodeStreamWriter.from(builder);
+ def jsonCodecFactory = JSONCodecFactorySupplier.DRAFT_LHOTKA_NETMOD_YANG_JSON_02
+ .getShared((EffectiveModelContext) schemaContext);
+ and: 'JSON parser stream'
+ def jsonParserStream = JsonParserStream.create(normalizedNodeStreamWriter, jsonCodecFactory)
+ when: 'parsing is invoked with the given JSON reader'
+ jsonParserStream.parse(jsonReader)
+ def result = builder.build()
+ then: 'result is the correct size'
+ result.size() == 2
+ then: 'data container child is a type of normalized node'
+ def dataContainerChild = result.getValue()[index]
+ dataContainerChild instanceof NormalizedNode == true
+ then: 'qualified name created is as expected'
+ dataContainerChild.nodeType == QName.create('org:onap:ccsdk:multiDataTree', '2020-09-15', nodeName)
+ where:
+ index | nodeName
+ 0 | 'first-container'
+ 1 | 'last-container'
+
+ }
+} \ No newline at end of file