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.yang.mapper;
24 import java.io.IOException;
25 import java.util.ArrayList;
26 import java.util.HashMap;
27 import java.util.List;
29 import org.json.JSONObject;
30 import org.junit.Test;
31 import org.onap.ccsdk.features.sdnr.wt.yang.mapper.serialize.IdentifierDeserializer;
32 import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.types.rev191129.PmDataType;
33 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
34 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DateAndTime;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNode;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNodeBuilder;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.connection.parameters.OdlHelloMessageCapabilitiesBuilder;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.credentials.Credentials;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.credentials.credentials.LoginPasswordBuilder;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.openroadm.pm.types.rev200413.DefectSeconds;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.pmdata.grp.Measurement;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.pmdata.grp.MeasurementBuilder;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.pmdata.grp.MeasurementKey;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.pmdata15m.entity.PerformanceDataBuilder;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.list.output.Data;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.list.output.DataBuilder;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.units.rev200413.KHz;
48 import org.slf4j.Logger;
49 import org.slf4j.LoggerFactory;
51 public class TestYangGenSalMapping {
53 // Create mapper for serialization and deserialization
54 DataProviderYangToolsMapper mapper = new DataProviderYangToolsMapper();
57 public void test1() throws IOException {
60 NetconfNodeBuilder netconfNodeBuilder = new NetconfNodeBuilder();
61 netconfNodeBuilder.setConnectedMessage("ConnMessage");
63 LoginPasswordBuilder loginPasswordBuilder = new LoginPasswordBuilder();
64 loginPasswordBuilder.setUsername("myTestUsername");
65 loginPasswordBuilder.setPassword("myTestPassword");
66 netconfNodeBuilder.setCredentials(loginPasswordBuilder.build());
68 OdlHelloMessageCapabilitiesBuilder odlHelloMessageCapabilitiesBuilder =
69 new OdlHelloMessageCapabilitiesBuilder();
70 List<Uri> uriList = new ArrayList<>();
71 uriList.add(new Uri("test.uri"));
72 odlHelloMessageCapabilitiesBuilder.setCapability(uriList);
73 netconfNodeBuilder.setOdlHelloMessageCapabilities(odlHelloMessageCapabilitiesBuilder.build());
75 NetconfNode netconfNode = netconfNodeBuilder.build();
76 out(netconfNode.toString());
78 // Map Object to JSON String
79 String res = mapper.writeValueAsString(netconfNode);
80 JSONObject json = new JSONObject(res); // Convert text to object
81 out(json.toString(4)); // Print it with specified indentation
83 // Map to JSON String to Object
84 NetconfNode generatedNode = mapper.readValue(res.getBytes(), NetconfNode.class);
85 out(generatedNode.toString()); // Print it with specified indentation
88 //out("Equal? "+netconfNode.equals(generatedNode));
92 public void test3() throws IOException {
94 PerformanceDataBuilder performanceBuilder = new PerformanceDataBuilder();
95 performanceBuilder.setEs(99);
96 Map<MeasurementKey, Measurement> values = new HashMap<>();
98 Measurement m = new MeasurementBuilder().setPmKey(DefectSeconds.class).setPmUnit(KHz.class)
99 .setPmValue(new PmDataType(1L)).build();
100 values.put(m.key(), m);
101 performanceBuilder.setMeasurement(values);
102 DataBuilder pmData15MinutesBuilder = new DataBuilder();
103 pmData15MinutesBuilder.setLayerProtocolName("fdsaf");
104 pmData15MinutesBuilder.setTimeStamp(new DateAndTime("2017-03-01T09:15:00.0Z"));
105 pmData15MinutesBuilder.setPerformanceData(performanceBuilder.build());
107 // Map Object to JSON String
108 String res = mapper.writeValueAsString(pmData15MinutesBuilder.build());
109 JSONObject json = new JSONObject(res); // Convert text to object
110 out(json.toString(4)); // Print it with specified indentation
112 // Map to JSON String to Object
113 Data generatedNode = mapper.readValue(res.getBytes(), Data.class);
114 out(generatedNode.toString()); // Print it with specified indentation
118 public void test4() throws IOException {
120 String jsonString = "{\n"
121 + "\"node-name\": \"Sim2230\",\n"
122 + "\"uuid-interface\": \"LP-MWPS-TTP-RADIO\",\n"
123 + "\"layer-protocol-name\": \"MWPS\",\n"
124 + "\"radio-signal-id\": \"Test8\",\n"
125 + "\"time-stamp\": \"2017-03-01T09:15:00.0Z\",\n"
126 + "\"granularity-period\": \"Period15Min\",\n"
127 + "\"scanner-id\": \"PM_RADIO_15M_4\",\n"
128 + "\"performance-data\": {\n"
129 + "\"unavailability\": 0,\n"
130 + "\"tx-level-max\": 3,\n"
131 + "\"tx-level-avg\": 3,\n"
132 + "\"rx-level-min\": -44,\n"
133 + "\"rx-level-max\": -45,\n"
134 + "\"rx-level-avg\": -44,\n"
135 + "\"time2-states\": 0,\n"
136 + "\"time4-states-s\": 0,\n"
137 + "\"time4-states\": 0,\n"
138 + "\"time8-states\": -1,\n"
139 + "\"time16-states-s\": -1,\n"
140 + "\"time16-states\": 0,\n"
141 + "\"time32-states\": -1,\n"
142 + "\"time64-states\": 900,\n"
143 + "\"time128-states\": -1,\n"
144 + "\"time256-states\": -1,\n"
145 + "\"time512-states\": -1,\n"
146 + "\"time512-states-l\": -1,\n"
147 + "\"time1024-states\": -1,\n"
148 + "\"time1024-states-l\": -1,\n"
149 + "\"time8192-states-l\": -1,\n"
150 + "\"time8192-states\": -1,\n"
151 + "\"time2048-states\": -1,\n"
152 + "\"snir-min\": -99,\n"
153 + "\"snir-max\": -99,\n"
154 + "\"snir-avg\": -99,\n"
155 + "\"xpd-min\": -99,\n"
156 + "\"xpd-max\": -99,\n"
157 + "\"xpd-avg\": -99,\n"
158 + "\"rf-temp-min\": -99,\n"
159 + "\"rf-temp-max\": -99,\n"
160 + "\"rf-temp-avg\": -99,\n"
161 + "\"defect-blocks-sum\": -1,\n"
162 + "\"time-period\": 900,\n"
164 + "\"time4096-states-l\": -1,\n"
165 + "\"tx-level-min\": 3,\n"
167 + "\"time2048-states-l\": -1,\n"
168 + "\"time4096-states\": -1,\n"
171 + "\"suspect-interval-flag\": false\n"
175 // Map to JSON String to Object
176 Data generatedNode = mapper.readValue(jsonString.getBytes(), Data.class);
177 out(generatedNode.toString()); // Print it with specified indentation
181 public void test5() throws IOException {
183 String jsonString = "{\n"
184 + " \"time-stamp\": \"2017-03-01T06:45:00.0Z\",\n"
185 + " \"node-name\": \"Sim2230\",\n"
186 + " \"uuid-interface\": \"LP-MWPS-TTP-RADIO\",\n"
187 + " \"scanner-id\": \"PM_RADIO_15M_14\",\n"
188 + " \"layer-protocol-name\": \"MWPS\",\n"
189 + " \"granularity-period\": \"Period15Min\",\n"
190 + " \"radio-signal-id\": \"Test8\",\n"
191 + " \"suspect-interval-flag\": false,\n"
192 + " \"performance-data\": {\n"
193 + " \"time4096-states-l\": -1,\n"
194 + " \"time16-states-s\": -1,\n"
195 + " \"tx-level-max\": 3,\n"
196 + " \"snir-max\": -99,\n"
197 + " \"time16-states\": 0,\n"
198 + " \"time64-states\": 900,\n"
199 + " \"unavailability\": 0,\n"
200 + " \"time8192-states-l\": -1,\n"
201 + " \"time512-states\": -1,\n"
202 + " \"xpd-min\": -99,\n"
203 + " \"xpd-avg\": -99,\n"
204 + " \"tx-level-avg\": 3,\n"
205 + " \"tx-level-min\": 3,\n"
206 + " \"rf-temp-min\": -99,\n"
207 + " \"rf-temp-avg\": -99,\n"
208 + " \"snir-avg\": -99,\n"
209 + " \"snir-min\": -99,\n"
210 + " \"time-period\": 900,\n"
211 + " \"time2-states\": 0,\n"
212 + " \"time4-states\": 0,\n"
213 + " \"time8-states\": -1,\n"
215 + " \"time2048-states-l\": -1,\n"
216 + " \"time2048-states\": -1,\n"
217 + " \"xpd-max\": -99,\n"
218 + " \"rf-temp-max\": -99,\n"
219 + " \"time8192-states\": -1,\n"
220 + " \"time128-states\": -1,\n"
221 + " \"time256-states\": -1,\n"
222 + " \"rx-level-min\": -44,\n"
223 + " \"rx-level-avg\": -44,\n"
224 + " \"time1024-states-l\": -1,\n"
227 + " \"time4-states-s\": 0,\n"
228 + " \"time1024-states\": -1,\n"
229 + " \"time512-states-l\": -1,\n"
230 + " \"time4096-states\": -1,\n"
231 + " \"rx-level-max\": -45,\n"
232 + " \"defect-blocks-sum\": -1,\n"
233 + " \"time32-states\": -1\n"
237 // Map to JSON String to Object
238 Data generatedNode = mapper.readValue(jsonString.getBytes(), Data.class);
239 out(generatedNode.toString()); // Print it with specified indentation
243 public void test8() throws IOException {
247 System.out.println("Map " + input + " to " + YangToolsMapperHelper.toCamelCaseAttributeName(input));
249 System.out.println("Map " + input + " to " + YangToolsMapperHelper.toCamelCaseAttributeName(input));
251 System.out.println("Map " + input + " to " + YangToolsMapperHelper.toCamelCaseAttributeName(input));
253 System.out.println("Map " + input + " to " + YangToolsMapperHelper.toCamelCaseAttributeName(input));
255 System.out.println("Map " + input + " to " + YangToolsMapperHelper.toCamelCaseAttributeName(input));
258 /* ---------------------------------
261 private static String method() {
262 String nameofCurrMethod = new Throwable().getStackTrace()[1].getMethodName();
263 return nameofCurrMethod;
266 private static void out(String text) {
267 System.out.println("----------------------");
268 System.out.println(text);
271 private static class DataProviderYangToolsMapper extends YangToolsMapper {
273 @SuppressWarnings("unused")
274 private final Logger LOG = LoggerFactory.getLogger(DataProviderYangToolsMapper.class);
275 private static final long serialVersionUID = 1L;
277 public DataProviderYangToolsMapper() {
279 this.addDeserializer(Credentials.class, LoginPasswordBuilder.class.getName());
280 this.addKeyDeserializer(MeasurementKey.class, new IdentifierDeserializer());