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 java.io.IOException;
25 import java.math.BigInteger;
26 import java.util.ArrayList;
27 import java.util.HashSet;
28 import java.util.List;
31 import org.eclipse.jdt.annotation.Nullable;
32 import org.json.JSONObject;
33 import org.junit.Test;
34 import org.onap.ccsdk.features.sdnr.wt.common.YangHelper;
35 import org.onap.ccsdk.features.sdnr.wt.common.database.HtDatabaseClient;
36 import org.onap.ccsdk.features.sdnr.wt.common.database.SearchResult;
37 import org.onap.ccsdk.features.sdnr.wt.common.database.config.HostInfo;
38 import org.onap.ccsdk.features.sdnr.wt.common.database.queries.BoolQueryBuilder;
39 import org.onap.ccsdk.features.sdnr.wt.common.database.queries.QueryBuilder;
40 import org.onap.ccsdk.features.sdnr.wt.common.database.queries.QueryBuilders;
41 import org.onap.ccsdk.features.sdnr.wt.common.database.requests.CreateIndexRequest;
42 import org.onap.ccsdk.features.sdnr.wt.common.database.requests.DeleteIndexRequest;
43 import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.elasticsearch.EsDataObjectReaderWriter2;
44 import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.types.YangHelper2;
45 import org.onap.ccsdk.features.sdnr.wt.dataprovider.test.util.HostInfoForTest;
46 import org.onap.ccsdk.features.sdnr.wt.dataprovider.yangtools.DataProviderYangToolsMapper;
47 import org.onap.ccsdk.features.sdnr.wt.yang.mapper.YangToolsMapperHelper;
48 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
49 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DateAndTime;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNode;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNodeBuilder;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.connection.parameters.OdlHelloMessageCapabilitiesBuilder;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.credentials.credentials.LoginPasswordBuilder;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.CreateMediatorServerInputBuilder;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Entity;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.EntityInput;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadPmdata15mListInput;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadPmdata15mListInputBuilder;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadPmdata15mListOutputBuilder;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.SortOrder;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.entity.input.Filter;
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.entity.input.PaginationBuilder;
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.entity.input.Sortorder;
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.pmdata15m.entity.PerformanceDataBuilder;
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.list.output.Data;
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.list.output.DataBuilder;
68 public class TestYangGenSalMapping {
70 // Create mapper for serialization and deserialization
71 DataProviderYangToolsMapper mapper = new DataProviderYangToolsMapper();
74 public void test1() throws IOException {
77 NetconfNodeBuilder netconfNodeBuilder = new NetconfNodeBuilder();
78 netconfNodeBuilder.setConnectedMessage("ConnMessage");
80 LoginPasswordBuilder loginPasswordBuilder = new LoginPasswordBuilder();
81 loginPasswordBuilder.setUsername("myTestUsername");
82 loginPasswordBuilder.setPassword("myTestPassword");
83 netconfNodeBuilder.setCredentials(loginPasswordBuilder.build());
85 OdlHelloMessageCapabilitiesBuilder odlHelloMessageCapabilitiesBuilder =
86 new OdlHelloMessageCapabilitiesBuilder();
87 Set<Uri> uriList = new HashSet<>();
88 uriList.add(new Uri("test.uri"));
89 odlHelloMessageCapabilitiesBuilder.setCapability(uriList);
90 netconfNodeBuilder.setOdlHelloMessageCapabilities(odlHelloMessageCapabilitiesBuilder.build());
92 NetconfNode netconfNode = netconfNodeBuilder.build();
93 out(netconfNode.toString());
95 // Map Object to JSON String
96 String res = mapper.writeValueAsString(netconfNode);
97 JSONObject json = new JSONObject(res); // Convert text to object
98 out(json.toString(4)); // Print it with specified indentation
100 // Map to JSON String to Object
101 NetconfNode generatedNode = mapper.readValue(res.getBytes(), NetconfNode.class);
102 out(generatedNode.toString()); // Print it with specified indentation
105 //out("Equal? "+netconfNode.equals(generatedNode));
109 public void test2() throws Exception {
111 final String idx = "inventorytest";
112 HostInfo[] hostInfo = HostInfoForTest.get();
113 HtDatabaseClient db = HtDatabaseClient.getClient(hostInfo);
115 EsDataObjectReaderWriter2<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.inventory.list.output.Data> dataRW =
116 new EsDataObjectReaderWriter2<>(db, Entity.Inventoryequipment,
117 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.inventory.list.output.Data.class);
118 if (!db.isExistsIndex(idx)) {
119 db.createIndex(new CreateIndexRequest(idx));
121 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.inventory.list.output.Data d1;
122 d1 = getInventoryDataBuilder("MyDescription", 23L).build();
123 String id = dataRW.write(d1, null);
125 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.inventory.list.output.Data d2;
126 d2 = dataRW.read(id);
129 if (db.isExistsIndex(idx)) {
130 db.deleteIndex(new DeleteIndexRequest(idx));
136 public void test3() throws IOException {
138 PerformanceDataBuilder performanceBuilder = new PerformanceDataBuilder();
139 performanceBuilder.setEs(99);
140 DataBuilder pmData15MinutesBuilder = new DataBuilder();
141 pmData15MinutesBuilder.setLayerProtocolName("fdsaf");
142 pmData15MinutesBuilder.setTimeStamp(new DateAndTime("2017-03-01T09:15:00.0Z"));
143 pmData15MinutesBuilder.setPerformanceData(performanceBuilder.build());
145 // Map Object to JSON String
146 String res = mapper.writeValueAsString(pmData15MinutesBuilder.build());
147 JSONObject json = new JSONObject(res); // Convert text to object
148 out(json.toString(4)); // Print it with specified indentation
150 // Map to JSON String to Object
151 Data generatedNode = mapper.readValue(res.getBytes(), Data.class);
152 out(generatedNode.toString()); // Print it with specified indentation
156 public void test4() throws IOException {
158 String jsonString = "{\n"
159 + "\"node-name\": \"Sim2230\",\n"
160 + "\"uuid-interface\": \"LP-MWPS-TTP-RADIO\",\n"
161 + "\"layer-protocol-name\": \"MWPS\",\n"
162 + "\"radio-signal-id\": \"Test8\",\n"
163 + "\"time-stamp\": \"2017-03-01T09:15:00.0Z\",\n"
164 + "\"granularity-period\": \"Period15Min\",\n"
165 + "\"scanner-id\": \"PM_RADIO_15M_4\",\n"
166 + "\"performance-data\": {\n"
167 + "\"unavailability\": 0,\n"
168 + "\"tx-level-max\": 3,\n"
169 + "\"tx-level-avg\": 3,\n"
170 + "\"rx-level-min\": -44,\n"
171 + "\"rx-level-max\": -45,\n"
172 + "\"rx-level-avg\": -44,\n"
173 + "\"time2-states\": 0,\n"
174 + "\"time4-states-s\": 0,\n"
175 + "\"time4-states\": 0,\n"
176 + "\"time8-states\": -1,\n"
177 + "\"time16-states-s\": -1,\n"
178 + "\"time16-states\": 0,\n"
179 + "\"time32-states\": -1,\n"
180 + "\"time64-states\": 900,\n"
181 + "\"time128-states\": -1,\n"
182 + "\"time256-states\": -1,\n"
183 + "\"time512-states\": -1,\n"
184 + "\"time512-states-l\": -1,\n"
185 + "\"time1024-states\": -1,\n"
186 + "\"time1024-states-l\": -1,\n"
187 + "\"time8192-states-l\": -1,\n"
188 + "\"time8192-states\": -1,\n"
189 + "\"time2048-states\": -1,\n"
190 + "\"snir-min\": -99,\n"
191 + "\"snir-max\": -99,\n"
192 + "\"snir-avg\": -99,\n"
193 + "\"xpd-min\": -99,\n"
194 + "\"xpd-max\": -99,\n"
195 + "\"xpd-avg\": -99,\n"
196 + "\"rf-temp-min\": -99,\n"
197 + "\"rf-temp-max\": -99,\n"
198 + "\"rf-temp-avg\": -99,\n"
199 + "\"defect-blocks-sum\": -1,\n"
200 + "\"time-period\": 900,\n"
202 + "\"time4096-states-l\": -1,\n"
203 + "\"tx-level-min\": 3,\n"
205 + "\"time2048-states-l\": -1,\n"
206 + "\"time4096-states\": -1,\n"
209 + "\"suspect-interval-flag\": false\n"
213 // Map to JSON String to Object
214 Data generatedNode = mapper.readValue(jsonString.getBytes(), Data.class);
215 out(generatedNode.toString()); // Print it with specified indentation
219 public void test5() throws IOException {
221 String jsonString = "{\n"
222 + " \"time-stamp\": \"2017-03-01T06:45:00.0Z\",\n"
223 + " \"node-name\": \"Sim2230\",\n"
224 + " \"uuid-interface\": \"LP-MWPS-TTP-RADIO\",\n"
225 + " \"scanner-id\": \"PM_RADIO_15M_14\",\n"
226 + " \"layer-protocol-name\": \"MWPS\",\n"
227 + " \"granularity-period\": \"Period15Min\",\n"
228 + " \"radio-signal-id\": \"Test8\",\n"
229 + " \"suspect-interval-flag\": false,\n"
230 + " \"performance-data\": {\n"
231 + " \"time4096-states-l\": -1,\n"
232 + " \"time16-states-s\": -1,\n"
233 + " \"tx-level-max\": 3,\n"
234 + " \"snir-max\": -99,\n"
235 + " \"time16-states\": 0,\n"
236 + " \"time64-states\": 900,\n"
237 + " \"unavailability\": 0,\n"
238 + " \"time8192-states-l\": -1,\n"
239 + " \"time512-states\": -1,\n"
240 + " \"xpd-min\": -99,\n"
241 + " \"xpd-avg\": -99,\n"
242 + " \"tx-level-avg\": 3,\n"
243 + " \"tx-level-min\": 3,\n"
244 + " \"rf-temp-min\": -99,\n"
245 + " \"rf-temp-avg\": -99,\n"
246 + " \"snir-avg\": -99,\n"
247 + " \"snir-min\": -99,\n"
248 + " \"time-period\": 900,\n"
249 + " \"time2-states\": 0,\n"
250 + " \"time4-states\": 0,\n"
251 + " \"time8-states\": -1,\n"
253 + " \"time2048-states-l\": -1,\n"
254 + " \"time2048-states\": -1,\n"
255 + " \"xpd-max\": -99,\n"
256 + " \"rf-temp-max\": -99,\n"
257 + " \"time8192-states\": -1,\n"
258 + " \"time128-states\": -1,\n"
259 + " \"time256-states\": -1,\n"
260 + " \"rx-level-min\": -44,\n"
261 + " \"rx-level-avg\": -44,\n"
262 + " \"time1024-states-l\": -1,\n"
265 + " \"time4-states-s\": 0,\n"
266 + " \"time1024-states\": -1,\n"
267 + " \"time512-states-l\": -1,\n"
268 + " \"time4096-states\": -1,\n"
269 + " \"rx-level-max\": -45,\n"
270 + " \"defect-blocks-sum\": -1,\n"
271 + " \"time32-states\": -1\n"
275 // Map to JSON String to Object
276 Data generatedNode = mapper.readValue(jsonString.getBytes(), Data.class);
277 out(generatedNode.toString()); // Print it with specified indentation
281 public void test6() throws Exception {
283 HostInfo[] hostInfo = HostInfoForTest.get();
284 HtDatabaseClient dbClient = HtDatabaseClient.getClient(hostInfo);
286 EsDataObjectReaderWriter2<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.list.output.Data> pm15mRW =
287 new EsDataObjectReaderWriter2<>(dbClient, Entity.Historicalperformance15min,
288 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.list.output.Data.class);
289 pm15mRW.setEsIdAttributeName("_nodeName");
291 ReadPmdata15mListInputBuilder inputBuilder = new ReadPmdata15mListInputBuilder();
292 PaginationBuilder paginationBuilder = new PaginationBuilder();
293 paginationBuilder.setPage(YangHelper2.getBigIntegerOrUint64(new BigInteger("1")));
294 paginationBuilder.setSize(YangHelper2.getLongOrUint32(20L));
295 inputBuilder.setPagination(paginationBuilder.build());
297 ReadPmdata15mListInput input = inputBuilder.build();
300 ReadPmdata15mListOutputBuilder outputBuilder = new ReadPmdata15mListOutputBuilder();
301 long page = getPage(input);
302 long pageSize = getPageSize(input);
304 QueryBuilder query = fromFilter(YangHelper.getList(input.getFilter())).from((page - 1) * pageSize).size(pageSize);
305 setSortOrder(query, YangHelper.getList(input.getSortorder()));
307 SearchResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.list.output.Data> result =
308 pm15mRW.doReadAll(query);
310 out("Found: " + result.getHits().size());
312 for (Data hit : result.getHits()) {
313 out("Hit " + t++ + ":" + hit);
315 setPagination(outputBuilder, page, pageSize, result.getTotal());
316 outputBuilder.setData(result.getHits());
320 public void test7() throws Exception {
322 HostInfo[] hostInfo = HostInfoForTest.get();
323 HtDatabaseClient dbClient = HtDatabaseClient.getClient(hostInfo);
325 EsDataObjectReaderWriter2<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.mediator.server.list.output.Data> mediatorserverRW;
326 mediatorserverRW = new EsDataObjectReaderWriter2<>(dbClient, Entity.MediatorServer,
327 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.mediator.server.list.output.Data.class)
329 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.MediatorServerEntity.class)
330 .setEsIdAttributeName("_id");
332 CreateMediatorServerInputBuilder inputBuilder = new CreateMediatorServerInputBuilder();
333 inputBuilder.setName("Hans");
334 inputBuilder.setUrl("MyGreatUrl");
336 String id = mediatorserverRW.write(inputBuilder.build(), "testid");
337 System.out.println(id);
342 public void test8() throws IOException {
346 System.out.println("Map " + input + " to " + YangToolsMapperHelper.toCamelCaseAttributeName(input));
348 System.out.println("Map " + input + " to " + YangToolsMapperHelper.toCamelCaseAttributeName(input));
350 System.out.println("Map " + input + " to " + YangToolsMapperHelper.toCamelCaseAttributeName(input));
352 System.out.println("Map " + input + " to " + YangToolsMapperHelper.toCamelCaseAttributeName(input));
354 System.out.println("Map " + input + " to " + YangToolsMapperHelper.toCamelCaseAttributeName(input));
357 /* ---------------------------------
360 private static String method() {
361 String nameofCurrMethod = new Throwable().getStackTrace()[1].getMethodName();
362 return nameofCurrMethod;
365 private org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.inventory.list.output.DataBuilder getInventoryDataBuilder(
366 String description, long treeLevel) {
367 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.inventory.list.output.DataBuilder dataBuilder =
368 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.inventory.list.output.DataBuilder();
369 dataBuilder.setDescription(description);
370 dataBuilder.setTreeLevel(YangHelper2.getLongOrUint32(treeLevel));
375 private static void out(String text) {
376 System.out.println("----------------------");
377 System.out.println(text);
380 private static long getPage(EntityInput input) {
381 return getPage(input, 1);
384 private static long getPage(EntityInput input, long defaultValue) {
385 return input.getPagination() != null ? input.getPagination().getPage().longValue() : defaultValue;
388 private static long getPageSize(EntityInput input) {
389 return getPageSize(input, 1);
392 private static long getPageSize(EntityInput input, long defaultValue) {
393 return input.getPagination() != null ? input.getPagination().getSize().longValue() : defaultValue;
396 private static QueryBuilder fromFilter(@Nullable List<Filter> filters) {
397 return fromFilter(filters, "");
400 private static QueryBuilder fromFilter(@Nullable List<Filter> filters, String prefix) {
401 if (filters == null || filters.size() == 0) {
402 return QueryBuilders.matchAllQuery();
404 } else if (filters.size() == 1) {
405 return QueryBuilders.matchQuery(filters.get(0).getProperty(), filters.get(0).getFiltervalue());
407 BoolQueryBuilder query = new BoolQueryBuilder();
408 for (Filter fi : filters) {
409 query.must(QueryBuilders.matchQuery((prefix != null ? prefix : "") + fi.getProperty(),
410 fi.getFiltervalue()));
417 private static QueryBuilder setSortOrder(QueryBuilder query, @Nullable List<Sortorder> sortorder) {
418 return setSortOrder(query, sortorder, "");
421 private static QueryBuilder setSortOrder(QueryBuilder query, @Nullable List<Sortorder> sortorder, String prefix) {
422 if (sortorder != null && sortorder.size() > 0) {
423 for (Sortorder so : sortorder) {
424 query.sort((prefix != null ? prefix : "") + so.getProperty(),
425 so.getSortorder() == SortOrder.Ascending
426 ? org.onap.ccsdk.features.sdnr.wt.common.database.queries.SortOrder.ASCENDING
427 : org.onap.ccsdk.features.sdnr.wt.common.database.queries.SortOrder.DESCENDING);
434 private static void setPagination(ReadPmdata15mListOutputBuilder outputBuilder, long page, long pageSize,
436 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.list.output.Pagination value =
437 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.list.output.PaginationBuilder()
438 .setPage(YangHelper2.getBigIntegerOrUint64(BigInteger.valueOf(page))).setSize(YangHelper2.getLongOrUint32(pageSize))
439 .setTotal(YangHelper2.getBigIntegerOrUint64(BigInteger.valueOf(totalSize))).build();
440 outputBuilder.setPagination(value);