56df62819acb89bfddb6f6ab5f5a6dd36e929ba2
[ccsdk/features.git] /
1 /*
2  * ============LICENSE_START=======================================================
3  * ONAP : ccsdk features
4  * ================================================================================
5  * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property.
6  * All rights reserved.
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
11  *
12  *     http://www.apache.org/licenses/LICENSE-2.0
13  *
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=========================================================
20  *
21  */
22 package org.onap.ccsdk.features.sdnr.wt.dataprovider.test;
23
24 import static org.junit.Assert.assertNotNull;
25 import static org.junit.Assert.assertTrue;
26 import java.io.IOException;
27 import java.util.Arrays;
28 import java.util.Map;
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.YangToolsMapper;
36 import org.onap.ccsdk.features.sdnr.wt.dataprovider.yangtools.YangToolsMapper2;
37 import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.types.rev191129.PmDataType;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.openroadm.pm.types.rev200413.BIPErrorCounter;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.openroadm.pm.types.rev200413.OpticalPowerInputOSCMin;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.GranularityPeriodType;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.PmdataEntity;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.PmdataEntityBuilder;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.pmdata.entity.PerformanceData;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.pmdata.entity.PerformanceDataBuilder;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.pmdata.grp.Measurement;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.pmdata.grp.MeasurementBuilder;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.pmdata.grp.MeasurementKey;
48 import org.opendaylight.yangtools.yang.common.Uint64;
49
50 public class TestYangGenSalMappingOpenRoadm extends Mockito {
51
52     private static String resourceDirectoryPath = "/" + TestYangGenSalMappingOpenRoadm.class.getSimpleName() + "/";
53
54     @Test
55     public void testOpenroadmPMBuilder() throws IOException, ClassNotFoundException {
56         out("Test: " + method());
57
58         MeasurementBuilder measurementBuilder1 = new MeasurementBuilder();
59         measurementBuilder1.setPmKey(OpticalPowerInputOSCMin.class);
60         measurementBuilder1.setPmValue(new PmDataType(Uint64.valueOf(64L)));
61         Measurement measurement1 = measurementBuilder1.build();
62
63         MeasurementBuilder measurementBuilder2 = new MeasurementBuilder();
64         measurementBuilder2.setPmKey(BIPErrorCounter.class);
65         measurementBuilder2.setPmValue(new PmDataType(Uint64.valueOf(65L)));
66         Measurement measurement2 = measurementBuilder2.build();
67
68         PerformanceDataBuilder performanceDataBuilder = new PerformanceDataBuilder();
69         performanceDataBuilder.setMeasurement(
70                 YangHelper2.getListOrMap(MeasurementKey.class, Arrays.asList(measurement1, measurement2)));
71
72         PmdataEntityBuilder pmDataEntitybuilder = new PmdataEntityBuilder();
73         pmDataEntitybuilder.setPerformanceData(performanceDataBuilder.build());
74
75         PmdataEntity pmDataType = pmDataEntitybuilder.build();
76
77         YangToolsMapper mapper2 = new YangToolsMapper();
78         String jsonString = mapper2.writeValueAsString(pmDataType);
79         out("Result json after mapping: " + jsonString);
80
81         PmdataEntity generatepmdNode = mapper2.readValue(jsonString.getBytes(), PmdataEntity.class);
82         out("Original: " + pmDataType.toString());
83         out("Mapped  : " + generatepmdNode.toString());
84         assertTrue("Can mapping not working", generatepmdNode.equals(pmDataType));
85     }
86
87     @Test
88     public void testOpenroadmPMString1() throws IOException, ClassNotFoundException {
89         out("Test: " + method());
90         String jsonString2 = getFileContent("pmdata1.json");
91         YangToolsMapper mapper2 = new YangToolsMapper();
92         PmdataEntity generatepmdNode = mapper2.readValue(jsonString2.getBytes(), PmdataEntity.class);
93         out("String1:"+generatepmdNode.toString()); // Print it with specified indentation
94         assertTrue("GranularityPeriod", generatepmdNode.getGranularityPeriod().equals(GranularityPeriodType.Period15Min));
95         assertTrue("NodeName", generatepmdNode.getNodeName().equals("NTS_RDM2"));
96         @Nullable PerformanceData performanceData = generatepmdNode.getPerformanceData();
97         assertNotNull("PerformanceData", performanceData);
98         @Nullable Map<MeasurementKey, Measurement> measurement = performanceData.getMeasurement();
99         assertNotNull("Measurement", measurement);
100         Measurement measurement1 = measurement.get(new MeasurementKey(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.openroadm.pm.types.rev200413.OpticalPowerInputOSCMin.class));
101         assertTrue("Measurement=64", measurement1.getPmValue().stringValue().equals("64"));
102     }
103
104     @Test
105     public void testOpenroadmPMString2() throws IOException, ClassNotFoundException {
106         out("Test: " + method());
107         String jsonString2 = getFileContent("pmdata2.json");
108         YangToolsMapper mapper2 = new YangToolsMapper();
109         PmdataEntity generatepmdNode = mapper2.readValue(jsonString2.getBytes(), PmdataEntity.class);
110         out(generatepmdNode.toString()); // Print it with specified indentation
111     }
112
113     @Test
114     public void testOpenroadmPMString3() throws IOException, ClassNotFoundException {
115         out("Test: " + method());
116         String jsonString2 = getFileContent("pmdata3.json");
117         YangToolsMapper2<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.list.output.Data> mapper2 =
118                 new YangToolsMapper2<>(
119                         org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.list.output.Data.class,
120                         null);
121         PmdataEntity generatepmdNode = mapper2.readValue(jsonString2.getBytes(), PmdataEntity.class);
122         out(generatepmdNode.toString()); // Print it with specified indentation
123     }
124
125
126     @Test
127     public void testOpenroadmPMString4() throws IOException, ClassNotFoundException {
128         out("Test: " + method());
129         String jsonString = getFileContent("pmdata3.json");
130         YangToolsMapper2<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.list.output.Data> mapper =
131                 new YangToolsMapper2<>(
132                         org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.list.output.Data.class,
133                         null);
134         org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.list.output.Data data =
135                 mapper.readValue(jsonString.getBytes(),
136                         org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.list.output.Data.class);
137
138         assertTrue("GranularityPeriod", data.getGranularityPeriod().equals(GranularityPeriodType.Period15Min));
139         assertTrue("NodeName", data.getNodeName().equals("openroadm1"));
140         org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.pmdata15m.entity.@Nullable PerformanceData performanceData =
141                 data.getPerformanceData();
142         assertNotNull("PerformanceData", performanceData);
143         @Nullable Map<MeasurementKey, Measurement> measurement = performanceData.getMeasurement();
144         assertNotNull("Measurement", measurement);
145         Measurement measurement1 = measurement.get(new MeasurementKey(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.openroadm.pm.types.rev200413.DelayTCM2Up.class));
146         assertTrue("Measurement=11298624220985537708", measurement1.getPmValue().stringValue().equals("11298624220985537708"));
147     }
148     /*
149      * --------------------------------- Private
150      */
151
152     private static String method() {
153         String nameofCurrMethod = new Throwable().getStackTrace()[1].getMethodName();
154         return nameofCurrMethod;
155     }
156
157     private static void out(String text) {
158         Log.info("Log: " + text);
159     }
160
161     private static String getFileContent(String filename) throws IOException {
162         return String.join("\n",
163                 IoUtils.readAllLines(TestTree.class.getResourceAsStream(resourceDirectoryPath + filename)));
164     }
165
166 }