2 * ============LICENSE_START=======================================================
3 * ONAP : ccsdk features
4 * ================================================================================
5 * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property.
7 * ================================================================================
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 * ============LICENSE_END=========================================================
22 package org.onap.ccsdk.features.sdnr.wt.dataprovider.test;
24 import static org.junit.Assert.assertNotNull;
25 import static org.junit.Assert.assertTrue;
26 import java.io.IOException;
27 import java.util.Arrays;
29 import org.apache.sshd.common.util.io.IoUtils;
30 import org.eclipse.jdt.annotation.Nullable;
31 import org.jline.utils.Log;
32 import org.junit.Test;
33 import org.mockito.Mockito;
34 import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.types.YangHelper2;
35 import org.onap.ccsdk.features.sdnr.wt.dataprovider.yangtools.DataProviderYangToolsMapper;
36 import org.onap.ccsdk.features.sdnr.wt.yang.mapper.YangToolsMapper2;
37 import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.types.rev191129.PmDataType;
38 import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.types.rev191129.PmDataTypeBuilder;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.openroadm.pm.types.rev200413.BIPErrorCounter;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.openroadm.pm.types.rev200413.DelayTCM2Up;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.openroadm.pm.types.rev200413.OpticalPowerInputOSCMin;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.GranularityPeriodType;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.PmdataEntity;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.PmdataEntityBuilder;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.pmdata.entity.PerformanceData;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.pmdata.entity.PerformanceDataBuilder;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.pmdata.grp.Measurement;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.pmdata.grp.MeasurementBuilder;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.pmdata.grp.MeasurementKey;
50 import org.opendaylight.yangtools.yang.common.Uint64;
52 public class TestYangGenSalMappingOpenRoadm extends Mockito {
54 private static String resourceDirectoryPath = "/" + TestYangGenSalMappingOpenRoadm.class.getSimpleName() + "/";
57 public void testOpenroadmPMBuilder() throws IOException, ClassNotFoundException {
58 out("Test: " + method());
60 MeasurementBuilder measurementBuilder1 = new MeasurementBuilder();
61 measurementBuilder1.setPmKey(OpticalPowerInputOSCMin.VALUE);
62 measurementBuilder1.setPmValue(new PmDataType(Uint64.valueOf(64L)));
63 Measurement measurement1 = measurementBuilder1.build();
65 MeasurementBuilder measurementBuilder2 = new MeasurementBuilder();
66 measurementBuilder2.setPmKey(BIPErrorCounter.VALUE);
67 measurementBuilder2.setPmValue(new PmDataType(Uint64.valueOf(65L)));
68 Measurement measurement2 = measurementBuilder2.build();
70 PerformanceDataBuilder performanceDataBuilder = new PerformanceDataBuilder();
71 performanceDataBuilder.setMeasurement(
72 YangHelper2.getListOrMap(MeasurementKey.class, Arrays.asList(measurement1, measurement2)));
74 PmdataEntityBuilder pmDataEntitybuilder = new PmdataEntityBuilder();
75 pmDataEntitybuilder.setPerformanceData(performanceDataBuilder.build());
77 PmdataEntity pmDataType = pmDataEntitybuilder.build();
79 DataProviderYangToolsMapper mapper2 = new DataProviderYangToolsMapper();
80 String jsonString = mapper2.writeValueAsString(pmDataType);
81 out("Result json after mapping: " + jsonString);
83 PmdataEntity generatepmdNode = mapper2.readValue(jsonString, PmdataEntity.class);
84 out("Original: " + pmDataType.toString());
85 out("Mapped : " + generatepmdNode.toString());
86 assertTrue("Can mapping not working", generatepmdNode.equals(pmDataType));
90 public void testOpenroadmPMString1() throws IOException, ClassNotFoundException {
91 out("Test: " + method());
92 String jsonString2 = getFileContent("pmdata1.json");
93 DataProviderYangToolsMapper mapper2 = new DataProviderYangToolsMapper();
94 PmdataEntity generatepmdNode = mapper2.readValue(jsonString2.getBytes(), PmdataEntity.class);
95 out("String1:"+generatepmdNode.toString()); // Print it with specified indentation
96 assertTrue("GranularityPeriod", generatepmdNode.getGranularityPeriod().equals(GranularityPeriodType.Period15Min));
97 assertTrue("NodeName", generatepmdNode.getNodeName().equals("NTS_RDM2"));
98 @Nullable PerformanceData performanceData = generatepmdNode.getPerformanceData();
99 assertNotNull("PerformanceData", performanceData);
100 @Nullable Map<MeasurementKey, Measurement> measurement = performanceData.getMeasurement();
101 assertNotNull("Measurement", measurement);
102 Measurement measurement1 = measurement.get(new MeasurementKey(OpticalPowerInputOSCMin.VALUE));
103 assertTrue("Measurement=64", measurement1.getPmValue().stringValue().equals("64"));
107 public void testOpenroadmPMString2() throws IOException, ClassNotFoundException {
108 out("Test: " + method());
109 PmDataTypeBuilder.getDefaultInstance("11298624220985537708");
110 String jsonString2 = getFileContent("pmdata2.json");
111 DataProviderYangToolsMapper mapper2 = new DataProviderYangToolsMapper();
112 PmdataEntity generatepmdNode = mapper2.readValue(jsonString2, PmdataEntity.class);
113 out(generatepmdNode.toString()); // Print it with specified indentation
117 public void testOpenroadmPMString3() throws IOException, ClassNotFoundException {
118 out("Test: " + method());
119 String jsonString2 = getFileContent("pmdata3.json");
120 YangToolsMapper2<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.list.output.Data> mapper2 =
121 new YangToolsMapper2<>(
122 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.list.output.Data.class,
124 PmdataEntity generatepmdNode = mapper2.readValue(jsonString2.getBytes(), PmdataEntity.class);
125 out(generatepmdNode.toString()); // Print it with specified indentation
130 public void testOpenroadmPMString4() throws IOException, ClassNotFoundException {
131 out("Test: " + method());
132 String jsonString = getFileContent("pmdata3.json");
133 YangToolsMapper2<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.list.output.Data> mapper =
134 new YangToolsMapper2<>(
135 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.list.output.Data.class,
137 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.list.output.Data data =
138 mapper.readValue(jsonString.getBytes(),
139 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.list.output.Data.class);
141 assertTrue("GranularityPeriod", data.getGranularityPeriod().equals(GranularityPeriodType.Period15Min));
142 assertTrue("NodeName", data.getNodeName().equals("openroadm1"));
143 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.pmdata15m.entity.@Nullable PerformanceData performanceData =
144 data.getPerformanceData();
145 assertNotNull("PerformanceData", performanceData);
146 @Nullable Map<MeasurementKey, Measurement> measurement = performanceData.getMeasurement();
147 assertNotNull("Measurement", measurement);
148 Measurement measurement1 = measurement.get(new MeasurementKey(DelayTCM2Up.VALUE));
149 assertTrue("Measurement=11298624220985537708", measurement1.getPmValue().stringValue().equals("11298624220985537708"));
152 * --------------------------------- Private
155 private static String method() {
156 String nameofCurrMethod = new Throwable().getStackTrace()[1].getMethodName();
157 return nameofCurrMethod;
160 private static void out(String text) {
161 Log.info("Log: " + text);
164 private static String getFileContent(String filename) throws IOException {
165 return String.join("\n",
166 IoUtils.readAllLines(TestTree.class.getResourceAsStream(resourceDirectoryPath + filename)));