blob: 40f0e0a2aead20af999263ceb388a65853fca1f6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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.api.schema.builder.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.body().getAt(index)
dataContainerChild instanceof NormalizedNode == true
then: 'qualified name created is as expected'
dataContainerChild.identifier.nodeType == QName.create('org:onap:ccsdk:multiDataTree', '2020-09-15', nodeName)
where:
index | nodeName
0 | 'first-container'
1 | 'last-container'
}
}
|