Merge "Optimize cm-handle registration with CPS-DMI Plugin to upload yang model"
[ccsdk/features.git] / sdnr / wt / common-yang / utils / src / test / java / org / onap / ccsdk / features / sdnr / wt / yang / mapper / TestYangGenSalMapping.java
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.yang.mapper;
23
24 import java.io.IOException;
25 import java.util.ArrayList;
26 import java.util.HashMap;
27 import java.util.List;
28 import java.util.Map;
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;
50
51 public class TestYangGenSalMapping {
52
53     // Create mapper for serialization and deserialization
54     DataProviderYangToolsMapper mapper = new DataProviderYangToolsMapper();
55
56     @Test
57     public void test1() throws IOException {
58
59         // Create test object
60         NetconfNodeBuilder netconfNodeBuilder = new NetconfNodeBuilder();
61         netconfNodeBuilder.setConnectedMessage("ConnMessage");
62
63         LoginPasswordBuilder loginPasswordBuilder = new LoginPasswordBuilder();
64         loginPasswordBuilder.setUsername("myTestUsername");
65         loginPasswordBuilder.setPassword("myTestPassword");
66         netconfNodeBuilder.setCredentials(loginPasswordBuilder.build());
67
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());
74
75         NetconfNode netconfNode = netconfNodeBuilder.build();
76         out(netconfNode.toString());
77
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
82
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
86         // Compare result
87         //TODO - Guilin
88         //out("Equal?  "+netconfNode.equals(generatedNode));
89     }
90
91     @Test
92     public void test3() throws IOException {
93
94         PerformanceDataBuilder performanceBuilder = new PerformanceDataBuilder();
95         performanceBuilder.setEs(99);
96         Map<MeasurementKey, Measurement> values = new HashMap<>();
97
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());
106
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
111
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
115     }
116
117     @Test
118     public void test4() throws IOException {
119      // @formatter:off
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"
163                 +     "\"cses\": 0,\n"
164                 +     "\"time4096-states-l\": -1,\n"
165                 +     "\"tx-level-min\": 3,\n"
166                 +     "\"es\": 0,\n"
167                 +     "\"time2048-states-l\": -1,\n"
168                 +     "\"time4096-states\": -1,\n"
169                 +     "\"ses\": 0\n"
170                 + "},\n"
171                 + "\"suspect-interval-flag\": false\n"
172                 + "}\n"
173                 + "}";
174         // @formatter:on
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
178     }
179
180     @Test
181     public void test5() throws IOException {
182         // @formatter:off
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"
214                 + "        \"ses\": 0,\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"
225                 + "        \"es\": 0,\n"
226                 + "        \"cses\": 0,\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"
234                 + "    }\n"
235                 + "}";
236         // @formatter:on
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
240     }
241
242     @Test
243     public void test8() throws IOException {
244         out(method());
245         String input;
246         input = "id-dd-dd";
247         System.out.println("Map " + input + " to " + YangToolsMapperHelper.toCamelCaseAttributeName(input));
248         input = "idDdGg";
249         System.out.println("Map " + input + " to " + YangToolsMapperHelper.toCamelCaseAttributeName(input));
250         input = "_idDdGg";
251         System.out.println("Map " + input + " to " + YangToolsMapperHelper.toCamelCaseAttributeName(input));
252         input = "--ff--gfg";
253         System.out.println("Map " + input + " to " + YangToolsMapperHelper.toCamelCaseAttributeName(input));
254         input = "";
255         System.out.println("Map " + input + " to " + YangToolsMapperHelper.toCamelCaseAttributeName(input));
256     }
257
258     /* ---------------------------------
259      * Private
260      */
261     private static String method() {
262         String nameofCurrMethod = new Throwable().getStackTrace()[1].getMethodName();
263         return nameofCurrMethod;
264     }
265
266     private static void out(String text) {
267         System.out.println("----------------------");
268         System.out.println(text);
269     }
270
271     private static class DataProviderYangToolsMapper extends YangToolsMapper {
272
273         @SuppressWarnings("unused")
274         private final Logger LOG = LoggerFactory.getLogger(DataProviderYangToolsMapper.class);
275         private static final long serialVersionUID = 1L;
276
277         public DataProviderYangToolsMapper() {
278             super();
279             this.addDeserializer(Credentials.class, LoginPasswordBuilder.class.getName());
280             this.addKeyDeserializer(MeasurementKey.class, new IdentifierDeserializer());
281         }
282
283
284     }
285
286 }