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.OpticalPowerInputOSCMin;
 
  41 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.GranularityPeriodType;
 
  42 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.PmdataEntity;
 
  43 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.PmdataEntityBuilder;
 
  44 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.pmdata.entity.PerformanceData;
 
  45 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.pmdata.entity.PerformanceDataBuilder;
 
  46 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.pmdata.grp.Measurement;
 
  47 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.pmdata.grp.MeasurementBuilder;
 
  48 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.pmdata.grp.MeasurementKey;
 
  49 import org.opendaylight.yangtools.yang.common.Uint64;
 
  51 public class TestYangGenSalMappingOpenRoadm extends Mockito {
 
  53     private static String resourceDirectoryPath = "/" + TestYangGenSalMappingOpenRoadm.class.getSimpleName() + "/";
 
  56     public void testOpenroadmPMBuilder() throws IOException, ClassNotFoundException {
 
  57         out("Test: " + method());
 
  59         MeasurementBuilder measurementBuilder1 = new MeasurementBuilder();
 
  60         measurementBuilder1.setPmKey(OpticalPowerInputOSCMin.class);
 
  61         measurementBuilder1.setPmValue(new PmDataType(Uint64.valueOf(64L)));
 
  62         Measurement measurement1 = measurementBuilder1.build();
 
  64         MeasurementBuilder measurementBuilder2 = new MeasurementBuilder();
 
  65         measurementBuilder2.setPmKey(BIPErrorCounter.class);
 
  66         measurementBuilder2.setPmValue(new PmDataType(Uint64.valueOf(65L)));
 
  67         Measurement measurement2 = measurementBuilder2.build();
 
  69         PerformanceDataBuilder performanceDataBuilder = new PerformanceDataBuilder();
 
  70         performanceDataBuilder.setMeasurement(
 
  71                 YangHelper2.getListOrMap(MeasurementKey.class, Arrays.asList(measurement1, measurement2)));
 
  73         PmdataEntityBuilder pmDataEntitybuilder = new PmdataEntityBuilder();
 
  74         pmDataEntitybuilder.setPerformanceData(performanceDataBuilder.build());
 
  76         PmdataEntity pmDataType = pmDataEntitybuilder.build();
 
  78         DataProviderYangToolsMapper mapper2 = new DataProviderYangToolsMapper();
 
  79         String jsonString = mapper2.writeValueAsString(pmDataType);
 
  80         out("Result json after mapping: " + jsonString);
 
  82         PmdataEntity generatepmdNode = mapper2.readValue(jsonString, PmdataEntity.class);
 
  83         out("Original: " + pmDataType.toString());
 
  84         out("Mapped  : " + generatepmdNode.toString());
 
  85         assertTrue("Can mapping not working", generatepmdNode.equals(pmDataType));
 
  89     public void testOpenroadmPMString1() throws IOException, ClassNotFoundException {
 
  90         out("Test: " + method());
 
  91         String jsonString2 = getFileContent("pmdata1.json");
 
  92         DataProviderYangToolsMapper mapper2 = new DataProviderYangToolsMapper();
 
  93         PmdataEntity generatepmdNode = mapper2.readValue(jsonString2.getBytes(), PmdataEntity.class);
 
  94         out("String1:"+generatepmdNode.toString()); // Print it with specified indentation
 
  95         assertTrue("GranularityPeriod", generatepmdNode.getGranularityPeriod().equals(GranularityPeriodType.Period15Min));
 
  96         assertTrue("NodeName", generatepmdNode.getNodeName().equals("NTS_RDM2"));
 
  97         @Nullable PerformanceData performanceData = generatepmdNode.getPerformanceData();
 
  98         assertNotNull("PerformanceData", performanceData);
 
  99         @Nullable Map<MeasurementKey, Measurement> measurement = performanceData.getMeasurement();
 
 100         assertNotNull("Measurement", measurement);
 
 101         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));
 
 102         assertTrue("Measurement=64", measurement1.getPmValue().stringValue().equals("64"));
 
 106     public void testOpenroadmPMString2() throws IOException, ClassNotFoundException {
 
 107         out("Test: " + method());
 
 108         PmDataTypeBuilder.getDefaultInstance("11298624220985537708");
 
 109         String jsonString2 = getFileContent("pmdata2.json");
 
 110         DataProviderYangToolsMapper mapper2 = new DataProviderYangToolsMapper();
 
 111         PmdataEntity generatepmdNode = mapper2.readValue(jsonString2, PmdataEntity.class);
 
 112         out(generatepmdNode.toString()); // Print it with specified indentation
 
 116     public void testOpenroadmPMString3() throws IOException, ClassNotFoundException {
 
 117         out("Test: " + method());
 
 118         String jsonString2 = getFileContent("pmdata3.json");
 
 119         YangToolsMapper2<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.list.output.Data> mapper2 =
 
 120                 new YangToolsMapper2<>(
 
 121                         org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.list.output.Data.class,
 
 123         PmdataEntity generatepmdNode = mapper2.readValue(jsonString2.getBytes(), PmdataEntity.class);
 
 124         out(generatepmdNode.toString()); // Print it with specified indentation
 
 129     public void testOpenroadmPMString4() throws IOException, ClassNotFoundException {
 
 130         out("Test: " + method());
 
 131         String jsonString = getFileContent("pmdata3.json");
 
 132         YangToolsMapper2<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.list.output.Data> mapper =
 
 133                 new YangToolsMapper2<>(
 
 134                         org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.list.output.Data.class,
 
 136         org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.list.output.Data data =
 
 137                 mapper.readValue(jsonString.getBytes(),
 
 138                         org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.list.output.Data.class);
 
 140         assertTrue("GranularityPeriod", data.getGranularityPeriod().equals(GranularityPeriodType.Period15Min));
 
 141         assertTrue("NodeName", data.getNodeName().equals("openroadm1"));
 
 142         org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.pmdata15m.entity.@Nullable PerformanceData performanceData =
 
 143                 data.getPerformanceData();
 
 144         assertNotNull("PerformanceData", performanceData);
 
 145         @Nullable Map<MeasurementKey, Measurement> measurement = performanceData.getMeasurement();
 
 146         assertNotNull("Measurement", measurement);
 
 147         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));
 
 148         assertTrue("Measurement=11298624220985537708", measurement1.getPmValue().stringValue().equals("11298624220985537708"));
 
 151      * --------------------------------- Private
 
 154     private static String method() {
 
 155         String nameofCurrMethod = new Throwable().getStackTrace()[1].getMethodName();
 
 156         return nameofCurrMethod;
 
 159     private static void out(String text) {
 
 160         Log.info("Log: " + text);
 
 163     private static String getFileContent(String filename) throws IOException {
 
 164         return String.join("\n",
 
 165                 IoUtils.readAllLines(TestTree.class.getResourceAsStream(resourceDirectoryPath + filename)));