f1d512530fa5a195971b7b79100e72bcf31e5b6a
[ccsdk/features.git] /
1 /*******************************************************************************
2  * ============LICENSE_START========================================================================
3  * ONAP : ccsdk feature sdnr wt
4  * =================================================================================================
5  * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved.
6  * =================================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
8  * in compliance with the License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software distributed under the License
13  * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
14  * or implied. See the License for the specific language governing permissions and limitations under
15  * the License.
16  * ============LICENSE_END==========================================================================
17  ******************************************************************************/
18
19 package org.onap.ccsdk.features.sdnr.wt.dataprovider.test;
20
21 import static org.junit.Assert.*;
22
23 import java.io.IOException;
24 import java.math.BigInteger;
25 import java.util.Arrays;
26 import java.util.List;
27 import java.util.concurrent.TimeUnit;
28
29 import org.junit.BeforeClass;
30 import org.junit.Test;
31 import org.onap.ccsdk.features.sdnr.wt.common.database.HtDatabaseClient;
32 import org.onap.ccsdk.features.sdnr.wt.common.database.SearchHit;
33 import org.onap.ccsdk.features.sdnr.wt.common.database.SearchResult;
34 import org.onap.ccsdk.features.sdnr.wt.common.database.config.HostInfo;
35 import org.onap.ccsdk.features.sdnr.wt.common.database.queries.QueryBuilders;
36 import org.onap.ccsdk.features.sdnr.wt.common.database.requests.BaseRequest;
37 import org.onap.ccsdk.features.sdnr.wt.dataprovider.data.ElasticSearchDataProvider;
38 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DateAndTime;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateMaintenanceInput;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateMaintenanceInputBuilder;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateMaintenanceOutputBuilder;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateMediatorServerInput;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateMediatorServerInputBuilder;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateMediatorServerOutputBuilder;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateNetworkElementConnectionInput;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateNetworkElementConnectionInputBuilder;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateNetworkElementConnectionOutputBuilder;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.DeleteMaintenanceInput;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.DeleteMaintenanceInputBuilder;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.DeleteMediatorServerInput;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.DeleteMediatorServerInputBuilder;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.DeleteNetworkElementConnectionInput;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.DeleteNetworkElementConnectionInputBuilder;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Entity;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadConnectionlogListInput;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadConnectionlogListInputBuilder;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadConnectionlogListOutputBuilder;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadEventlogListInput;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadEventlogListInputBuilder;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadEventlogListOutputBuilder;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadFaultcurrentListInput;
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadFaultcurrentListInputBuilder;
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadFaultcurrentListOutputBuilder;
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadFaultlogListInput;
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadFaultlogListInputBuilder;
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadFaultlogListOutputBuilder;
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadInventoryListInput;
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadInventoryListInputBuilder;
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadInventoryListOutputBuilder;
70 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadMaintenanceListInput;
71 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadMaintenanceListInputBuilder;
72 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadMaintenanceListOutputBuilder;
73 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadMediatorServerListInput;
74 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadMediatorServerListInputBuilder;
75 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadMediatorServerListOutputBuilder;
76 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadNetworkElementConnectionListInput;
77 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadNetworkElementConnectionListInputBuilder;
78 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadNetworkElementConnectionListOutputBuilder;
79 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata15mDeviceListInput;
80 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata15mDeviceListInputBuilder;
81 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata15mDeviceListOutputBuilder;
82 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata15mListInput;
83 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata15mListInputBuilder;
84 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata15mListOutputBuilder;
85 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata15mLtpListInput;
86 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata15mLtpListInputBuilder;
87 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata15mLtpListOutputBuilder;
88 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata24hDeviceListInput;
89 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata24hDeviceListInputBuilder;
90 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata24hDeviceListOutputBuilder;
91 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata24hListInput;
92 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata24hListInputBuilder;
93 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata24hListOutputBuilder;
94 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata24hLtpListInput;
95 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata24hLtpListInputBuilder;
96 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata24hLtpListOutputBuilder;
97 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.SeverityType;
98 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.UpdateMaintenanceInput;
99 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.UpdateMaintenanceInputBuilder;
100 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.UpdateMaintenanceOutputBuilder;
101 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.UpdateMediatorServerInput;
102 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.UpdateMediatorServerInputBuilder;
103 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.UpdateMediatorServerOutputBuilder;
104 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.UpdateNetworkElementConnectionInput;
105 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.UpdateNetworkElementConnectionInputBuilder;
106 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.UpdateNetworkElementConnectionOutputBuilder;
107 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.entity.input.FilterBuilder;
108 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.entity.input.Pagination;
109 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.entity.input.PaginationBuilder;
110 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.mediator.server.list.output.Data;
111
112 public class TestCRUDforDatabase {
113
114     private static ElasticSearchDataProvider dbProvider;
115     private static HtDatabaseClient dbRawProvider;
116     private static HostInfo[] hosts = new HostInfo[] { new HostInfo("localhost", Integer
117             .valueOf(System.getProperty("databaseport") != null ? System.getProperty("databaseport") : "49200")) };
118
119     @BeforeClass
120     public static void init() throws Exception {
121
122         dbProvider = new ElasticSearchDataProvider(hosts);
123         dbProvider.waitForYellowDatabaseStatus(30, TimeUnit.SECONDS);
124         dbRawProvider = new HtDatabaseClient(hosts);
125     }
126
127     private static void trySleep(long ms) {
128         try {
129             Thread.sleep(ms);
130         } catch (Exception e) {
131             Thread.interrupted();
132         }
133     }
134
135     private static void trySleep() {
136         trySleep(0);
137     }
138
139     @Test
140     public void testStatus() throws IOException {
141
142         //== CLEAR AND CREATE ================================
143         clearAndCreatefaultEntity("1", Entity.Faultcurrent.getName(), "org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateFaultcurrentInput", SeverityType.Critical);
144         createFaultEntity("Lorem Ipsum", Entity.Faultcurrent.getName(), "org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateFaultcurrentInput", SeverityType.Major);
145         createFaultEntity("3", Entity.Faultcurrent.getName(), "org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateFaultcurrentInput", SeverityType.Minor);
146         createFaultEntity("4", Entity.Faultcurrent.getName(), "org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateFaultcurrentInput", SeverityType.Warning);
147
148         //== READ ================================
149
150         List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.status.output.Data> readOutput = dbProvider.readStatus().getData();
151         System.out.println(readOutput);
152
153         assertEquals(1,readOutput.get(0).getFaults().getMajors().intValue());
154         assertEquals(1,readOutput.get(0).getFaults().getMinors().intValue());
155         assertEquals(1,readOutput.get(0).getFaults().getWarnings().intValue());
156         assertEquals(1,readOutput.get(0).getFaults().getCriticals().intValue());
157
158         //== DELETE ================================
159
160          System.out.println("try to delete entries");
161          try {
162              dbRawProvider.doRemove(Entity.Faultcurrent.getName(), QueryBuilders.matchAllQuery());
163          } catch (Exception e) {
164              fail("problem deleting entry: " + e.getMessage());
165          }
166
167        //== VERIFY DELETE ===========================
168          System.out.println("verify entries were deleted");
169          readOutput = dbProvider.readStatus().getData();
170          assertEquals(0,readOutput.get(0).getFaults().getMajors().intValue());
171          assertEquals(0,readOutput.get(0).getFaults().getMinors().intValue());
172          assertEquals(0,readOutput.get(0).getFaults().getWarnings().intValue());
173          assertEquals(0,readOutput.get(0).getFaults().getCriticals().intValue());
174     }
175
176      @Test
177     public void testMediatorServer() {
178         final String NAME = "ms1";
179         final String URL = "http://11.23.45.55:4599";
180         final String NAME2 = "ms1-nu";
181         final String URL2 = "http://11.23.45.56:4599";
182
183         // ==CLEAR BEFORE TEST============================
184         System.out.println("try to clear entry");
185         try {
186             dbRawProvider.doRemove(Entity.MediatorServer.getName(), QueryBuilders.matchAllQuery());
187         } catch (Exception e) {
188             fail("problem deleting entry: " + e.getMessage());
189         }
190         trySleep();
191         // ==CREATE============================
192         System.out.println("try to create entry");
193         CreateMediatorServerOutputBuilder createOutput = null;
194         CreateMediatorServerInput input = new CreateMediatorServerInputBuilder().setName(NAME).setUrl(URL).build();
195         String dbId = null;
196
197         try {
198             createOutput = dbProvider.createMediatorServer(input);
199             dbId = createOutput.getId();
200             System.out.println(createOutput);
201         } catch (Exception e) {
202             fail("failed to create " + input.toString() + ":" + e.getMessage());
203         }
204         assertNotNull(createOutput);
205         assertNotNull(dbId);
206         trySleep();
207         // ==READ===========================
208         System.out.println("try to read entry");
209         ReadMediatorServerListInput readinput = new ReadMediatorServerListInputBuilder()
210                 .setFilter(Arrays.asList(new FilterBuilder().setProperty("id").setFiltervalue(dbId).build()))
211                 .setPagination(getPagination(20, 1)).build();
212         ReadMediatorServerListOutputBuilder readoutput = dbProvider.readMediatorServerList(readinput);
213         List<Data> data = readoutput.getData();
214         assertNotNull(data);
215         assertEquals("no entry found", 1, data.size());
216         assertEquals(NAME, data.get(0).getName());
217         assertEquals(URL, data.get(0).getUrl());
218         String dbId2 = data.get(0).getId();
219         assertEquals(dbId, dbId2);
220         System.out.println(data);
221         // ==UPDATE============================
222         System.out.println("try to update entry");
223         UpdateMediatorServerInput updateInput = new UpdateMediatorServerInputBuilder().setId(dbId2).setName(NAME2)
224                 .setUrl(URL2).build();
225         UpdateMediatorServerOutputBuilder updateOutput = null;
226         try {
227             updateOutput = dbProvider.updateMediatorServer(updateInput);
228             System.out.println(updateOutput);
229         } catch (Exception e) {
230             fail("problem updating entry:" + e.getMessage());
231         }
232         assertNotNull(updateOutput);
233         trySleep();
234         // ==READ============================
235         System.out.println("try to read entry");
236         readinput = new ReadMediatorServerListInputBuilder()
237                 .setFilter(Arrays.asList(new FilterBuilder().setProperty("name").setFiltervalue(NAME2).build()))
238                 .setPagination(getPagination(20, 1)).build();
239         readoutput = dbProvider.readMediatorServerList(readinput);
240         data = readoutput.getData();
241         System.out.println(data);
242         assertNotNull("no update response", data);
243         assertEquals("update not verifiied", 1, data.size());
244         assertEquals("update not verifiied", NAME2, data.get(0).getName());
245         assertEquals("update not verifiied", URL2, data.get(0).getUrl());
246         assertEquals("update not verifiied", dbId, data.get(0).getId());
247         // ==DELETE============================
248         System.out.println("try to delete entry");
249         DeleteMediatorServerInput deleteInput = new DeleteMediatorServerInputBuilder().setId(dbId).build();
250         try {
251             dbProvider.deleteMediatorServer(deleteInput);
252         } catch (Exception e) {
253             fail("problem deleting entry: " + e.getMessage());
254         }
255
256         trySleep();
257         // ==READ/VERIFY DELETE============================
258         System.out.println("try to read entry");
259         readinput = new ReadMediatorServerListInputBuilder()
260                 .setFilter(Arrays.asList(new FilterBuilder().setProperty("name").setFiltervalue(NAME2).build()))
261                 .setPagination(getPagination(20, 1)).build();
262         readoutput = dbProvider.readMediatorServerList(readinput);
263         data = readoutput.getData();
264         assertNotNull("delete not verifiied", data);
265         assertEquals("delete not verifiied", 0, data.size());
266     }
267
268      @Test
269     public void testNetworkElementConnectionCurrent() {
270
271         System.out.println("networkElementConnection test start");
272
273         // ==CLEAR BEFORE TEST============================
274         System.out.println("try to clear entry");
275         try {
276             dbRawProvider.doRemove(Entity.NetworkelementConnection.getName(), QueryBuilders.matchAllQuery());
277         } catch (Exception e) {
278             fail("problem deleting entry: " + e.getMessage());
279         }
280
281         // ==CREATE============================
282         System.out.println("try to create");
283         final String name = "sim87";
284         final String url = "10.5.10.1";
285         final long port = 5959;
286
287         CreateNetworkElementConnectionOutputBuilder create = null;
288         CreateNetworkElementConnectionInput input = new CreateNetworkElementConnectionInputBuilder().setNodeId(name)
289                 .setIsRequired(true).setHost(url).setPort(port).build();
290         String dbId = null;
291
292         try {
293             create = dbProvider.createNetworkElementConnection(input);
294             dbId = create.getId();
295         } catch (Exception e) {
296             fail("networkElementConnection create failed" + e.getMessage());
297         }
298
299         assertNotNull(dbId);
300         assertNotNull(create);
301
302         // ==READ===========================
303
304         ReadNetworkElementConnectionListInput readInput = new ReadNetworkElementConnectionListInputBuilder()
305                 .setFilter(Arrays.asList(new FilterBuilder().setProperty("id").setFiltervalue(dbId).build()))
306                 .setPagination(getPagination(20, 1)).build();
307
308         ReadNetworkElementConnectionListOutputBuilder readOperation = dbProvider
309                 .readNetworkElementConnectionList(readInput);
310         List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.network.element.connection.list.output.Data> data = readOperation
311                 .getData();
312
313         assertNotNull(data);
314         assertEquals(dbId, data.get(0).getId());
315         assertEquals(name, data.get(0).getNodeId());
316         assertEquals(url, data.get(0).getHost());
317         assertEquals(port, data.get(0).getPort().longValue());
318
319         // ==UPDATE============================
320         System.out.println("Trying to update...");
321         final String name2 = "sim88";
322         final String url2 = "10.5.10.2";
323         final long port2 = 5960;
324
325         UpdateNetworkElementConnectionInput updateInput = new UpdateNetworkElementConnectionInputBuilder().setId(dbId).setHost(url2).setPort(port2).setIsRequired(false).build();
326         UpdateNetworkElementConnectionOutputBuilder updateOutput = null;
327         try {
328             updateOutput = dbProvider.updateNetworkElementConnection(updateInput);
329         } catch (Exception e) {
330             fail("update failed: " + e.getMessage());
331         }
332
333         assertNotNull(updateOutput);
334
335         // == Verify UPDATE============================
336         System.out.println("Verfiying update...");
337
338         readOperation = dbProvider.readNetworkElementConnectionList(readInput);
339         data = readOperation.getData();
340
341         assertNotNull(data);
342         assertEquals(url2, data.get(0).getHost());
343         assertEquals(port2, data.get(0).getPort().longValue());
344
345         // ==PARTIAL UPDATE============================
346         System.out.println("Try partial update...");
347         assertEquals(false, data.get(0).isIsRequired());
348         updateInput = new UpdateNetworkElementConnectionInputBuilder().setId(dbId).setIsRequired(true).build();
349         try {
350             updateOutput = dbProvider.updateNetworkElementConnection(updateInput);
351         } catch (Exception e) {
352             fail("update failed: " + e.getMessage());
353         }
354
355         assertNotNull(updateOutput);
356
357         readOperation = dbProvider.readNetworkElementConnectionList(readInput);
358         data = readOperation.getData();
359
360         assertEquals(true, data.get(0).isIsRequired());
361         assertEquals(url2, data.get(0).getHost());
362         assertEquals(port2, data.get(0).getPort().longValue());
363
364         // ==DELETE============================
365         System.out.println("Try delete...");
366
367         DeleteNetworkElementConnectionInput deleteInput = new DeleteNetworkElementConnectionInputBuilder().setId(dbId)
368                 .build();
369         try {
370             dbProvider.deleteNetworkElementConnection(deleteInput);
371         } catch (Exception e) {
372             fail("problem deleting "+e.getMessage());
373         }
374
375         readInput = new ReadNetworkElementConnectionListInputBuilder()
376                 .setFilter(Arrays.asList(new FilterBuilder().setProperty("id").setFiltervalue(dbId).build()))
377                 .setPagination(getPagination(20, 1)).build();
378         readOperation = dbProvider.readNetworkElementConnectionList(readInput);
379         data = readOperation.getData();
380         assertEquals(0, data.size());
381
382     }
383
384      @Test
385     public void testMaintenance() {
386         System.out.println("Starting Maintenance tests...");
387
388         // ==CLEAR BEFORE TEST============================
389         System.out.println("try to clear entry");
390         try {
391             dbRawProvider.doRemove(Entity.Maintenancemode.getName(), QueryBuilders.matchAllQuery());
392         } catch (Exception e) {
393             fail("problem deleting entry: " + e.getMessage());
394         }
395
396         // ==CREATE============================
397
398         final String nodeId = "Lorem Ipsum";
399         final boolean isActive = true;
400
401         CreateMaintenanceOutputBuilder create = null;
402         CreateMaintenanceInput input = new CreateMaintenanceInputBuilder().setNodeId(nodeId).setActive(isActive)
403                 .build();
404         String dbId = null;
405         try {
406             create = dbProvider.createMaintenance(input);
407             dbId = create.getId();
408         } catch (Exception e) {
409             fail("Failed to create:" + e.getMessage());
410         }
411
412         System.out.println(dbId);
413         assertNotNull(create);
414         assertNotNull(dbId);
415
416         // ==READ===========================
417         System.out.println("Try read...");
418
419         ReadMaintenanceListInput readinput = new ReadMaintenanceListInputBuilder()
420                 .setFilter(Arrays.asList(new FilterBuilder().setProperty("id").setFiltervalue(dbId).build()))
421                 .setPagination(getPagination(20, 1)).build();
422         ReadMaintenanceListOutputBuilder readResult = dbProvider.readMaintenanceList(readinput);
423         List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.maintenance.list.output.Data> data = readResult
424                 .getData();
425
426         assertNotEquals(0, data.size());
427         assertNotNull(data);
428         assertEquals(nodeId, data.get(0).getNodeId());
429         assertEquals(isActive, data.get(0).isActive());
430
431         // ==UPDATE============================
432
433         System.out.println("Trying to update...");
434         final String nodeId2 = "Name2";
435         final boolean isActive2 = false;
436
437         UpdateMaintenanceInput updateInput = new UpdateMaintenanceInputBuilder().setId(dbId).setNodeId(nodeId2)
438                 .setActive(isActive2).build();
439         UpdateMaintenanceOutputBuilder updateResult = null;
440         try {
441             updateResult = dbProvider.updateMaintenance(updateInput);
442         } catch (Exception e) {
443             fail("maintenance update failed..." + e.getMessage());
444         }
445
446         assertNotNull(updateResult);
447
448         // == VERIFY UPDATE============================
449         System.out.println("Verfify update...");
450         readResult = dbProvider.readMaintenanceList(readinput);
451         data = readResult.getData();
452
453         assertNotNull(data);
454         assertEquals(nodeId2, data.get(0).getNodeId());
455         assertEquals(isActive2, data.get(0).isActive());
456
457         // ==DELETE================================
458         System.out.println("Trying to delete...");
459
460         DeleteMaintenanceInput deleteInput = new DeleteMaintenanceInputBuilder().setId(dbId).build();
461         try {
462             dbProvider.deleteMaintenance(deleteInput);
463         } catch (Exception e) {
464             fail("Maintenance entry couldn't be deleted" + e.getMessage());
465         }
466
467         readResult = dbProvider.readMaintenanceList(readinput);
468         data = readResult.getData();
469
470         assertEquals(0, data.size());
471     }
472
473     @Test
474     public void testFaultLog() {
475
476         System.out.println("Starting fault log tests...");
477         String dbId = clearAndCreatefaultEntity("1", Entity.Faultlog.getName(), "org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateFaultlogInput", SeverityType.Critical);
478
479         // ==READ===========================
480         System.out.println("try to read entry");
481
482         ReadFaultlogListInput readinput = new ReadFaultlogListInputBuilder()
483                 .setFilter(Arrays.asList(new FilterBuilder().setProperty("id").setFiltervalue(dbId).build()))
484                 .setPagination(getPagination(20, 1)).build();
485
486         ReadFaultlogListOutputBuilder readResult = null;
487         try {
488             readResult = dbProvider.readFaultLogList(readinput);
489
490         } catch (Exception e) {
491             fail("Fault log not read: " + e.getMessage());
492         }
493
494         List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.faultlog.list.output.Data> data = readResult
495                 .getData();
496
497         assertNotNull(data);
498         assertEquals(1, data.size());
499         assertEquals("signalIsLost", data.get(0).getProblem());
500         assertEquals("Critical", data.get(0).getSeverity().toString());
501         assertEquals("s1", data.get(0).getNodeId());
502
503       //== UPDATE ================================
504         System.out.println("try to update entry");
505
506         dbRawProvider.doUpdateOrCreate(Entity.Faultlog.getName(), "1", "{'problem': 'CableLOS', 'severity': 'Major', 'node-id': 'test4657-78'}");
507
508         System.out.println("try to search entry 1");
509         readinput = new ReadFaultlogListInputBuilder()
510                 .setFilter(Arrays.asList(new FilterBuilder().setProperty("node-id").setFiltervalue("test").build()))
511                 .setPagination(getPagination(20, 1)).build();
512
513       //== VERIFY UPDATE ================================
514         readResult = dbProvider.readFaultLogList(readinput);
515         data = readResult.getData();
516
517
518         assertNotNull(data);
519         System.out.println(data);
520         assertEquals(0, data.size());
521
522         System.out.println("try to search entry 2");
523
524         readinput = new ReadFaultlogListInputBuilder()
525                 .setFilter(Arrays.asList(new FilterBuilder().setProperty("node-id").setFiltervalue("test*").build()))
526                 .setPagination(getPagination(20, 1)).build();
527
528         readResult = dbProvider.readFaultLogList(readinput);
529         data = readResult.getData();
530
531
532         assertNotNull(data);
533         assertEquals(1, data.size());
534         assertEquals("CableLOS", data.get(0).getProblem());
535         assertEquals("Major", data.get(0).getSeverity().toString());
536         assertEquals("test4657-78", data.get(0).getNodeId());
537
538       //== DELETE ================================
539
540         System.out.println("try to clear entry");
541         try {
542             dbRawProvider.doRemove(Entity.Faultlog.getName(), dbId);
543         } catch (Exception e) {
544             fail("problem deleting entry: " + e.getMessage());
545         }
546
547       //== VERIFY DELETE ===========================
548         System.out.println("verify entries deleted");
549         readResult = dbProvider.readFaultLogList(new ReadFaultlogListInputBuilder().setPagination(getPagination(20, 1)).build());
550         data = readResult.getData();
551         assertEquals(0, data.size());
552     }
553
554     @Test
555     public void testFaultCurrent() {
556         System.out.println("Starting faultCurrent test...");
557          String dbId = null;
558          dbId = clearAndCreatefaultEntity("1", Entity.Faultcurrent.getName(), "org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateFaultcurrentInput", SeverityType.NonAlarmed);
559          assertEquals("1", dbId);
560
561         // ==READ===========================
562          System.out.println("Trying to read...");
563
564
565         ReadFaultcurrentListInput readinput = new ReadFaultcurrentListInputBuilder()
566                 .setFilter(Arrays.asList(new FilterBuilder().setProperty("id").setFiltervalue(dbId).build()))
567                 .setPagination(getPagination(20, 1)).build();
568
569         ReadFaultcurrentListOutputBuilder readResult = null;
570         try {
571             readResult = dbProvider.readFaultCurrentList(readinput);
572
573         } catch (Exception e) {
574             fail("Fault log not read: " + e.getMessage());
575         }
576
577         List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.faultcurrent.list.output.Data> data = readResult
578                 .getData();
579
580
581         assertNotNull(data);
582         assertEquals(1, data.size());
583         assertEquals("signalIsLost", data.get(0).getProblem());
584         assertEquals("NonAlarmed", data.get(0).getSeverity().toString());
585         assertEquals("s1", data.get(0).getNodeId());
586         assertEquals(4340, data.get(0).getCounter().intValue());
587         assertEquals(new DateAndTime("2019-10-28T11:55:58.3Z"), data.get(0).getTimestamp());
588         assertEquals(4340, data.get(0).getCounter().intValue());
589         assertEquals("LP-MWPS-RADIO", data.get(0).getObjectId());
590
591
592         // ==UPDATE============================
593         System.out.println("Trying to update...");
594
595         String json = "{\n" +
596                 "\"timestamp\": \"2019-12-28T11:55:58.3Z\",\n" +
597                 "\"node-id\": \"SDN-Controller-0\",\n" +
598                 "\"counter\": 75,\n" +
599                 "\"problem\": \"connectionLossNeOAM\",\n" +
600                 "}";
601
602         String updatedDbId = dbRawProvider.doUpdateOrCreate(Entity.Faultcurrent.getName(), dbId, json);
603         assertEquals(dbId, updatedDbId);
604
605         // ==READ============================
606
607         try {
608             readResult = dbProvider.readFaultCurrentList(readinput);
609
610         } catch (Exception e) {
611             fail("Fault log not read: " + e.getMessage());
612         }
613
614         data = readResult.getData();
615
616         assertNotNull(data);
617         assertEquals(1, data.size());
618         assertEquals("connectionLossNeOAM", data.get(0).getProblem());
619         assertEquals("SDN-Controller-0", data.get(0).getNodeId());
620         assertEquals(75, data.get(0).getCounter().intValue());
621         assertEquals("LP-MWPS-RADIO", data.get(0).getObjectId());
622
623         // ==DELETE============================
624         try {
625             dbRawProvider.doRemove(Entity.Faultcurrent.getName(), QueryBuilders.matchAllQuery());
626         } catch (Exception e) {
627             fail("problem deleting: " + e.getMessage());
628         }
629
630         // ==READ/VERIFY DELETE============================
631
632         try {
633             readResult = dbProvider.readFaultCurrentList(readinput);
634
635         } catch (Exception e) {
636             fail("Fault log not read: " + e.getMessage());
637         }
638
639         data = readResult.getData();
640
641         assertNotNull(data);
642         assertEquals(0, data.size());
643     }
644
645     @Test
646     public void testConnectionLog() {
647
648         // ==CLEAR================================
649         System.out.println("Clear before test");
650          try {
651              dbRawProvider.doRemove(Entity.Connectionlog.getName(), QueryBuilders.matchAllQuery());
652          } catch (Exception e) {
653              fail("problem deleting: " + e.getMessage());
654          }
655
656         // ==CREATE================================
657
658         System.out.println("Try create entry");
659         final String initialDbId = "1";
660         String dbId = null;
661         String json ="{\n" +
662                 "\"timestamp\": \"2019-11-01T11:28:34.7Z\",\n" +
663                 "\"status\": \"Connecting\",\n" +
664                 "\"node-id\": \"sim2230\",\n" +
665                 "\"implemented-interface\": \"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateConnectionlogInput\"\n" +
666                 "}";
667
668         dbId = dbRawProvider.doUpdateOrCreate(Entity.Connectionlog.getName(), initialDbId, json);
669
670         assertEquals(initialDbId, dbId);
671
672         // ==READ================================
673         System.out.println("Try read entry");
674
675         ReadConnectionlogListInput readinput = new ReadConnectionlogListInputBuilder()
676                 .setFilter(Arrays.asList(new FilterBuilder().setProperty("id").setFiltervalue(dbId).build()))
677                 .setPagination(getPagination(20, 1)).build();
678
679         ReadConnectionlogListOutputBuilder readResult = null;
680         try {
681             readResult = dbProvider.readConnectionlogList(readinput);
682
683         } catch (Exception e) {
684             fail("Connection log not read: " + e.getMessage());
685         }
686
687         List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.connectionlog.list.output.Data> data = readResult
688                 .getData();
689
690         assertNotNull(data);
691         assertEquals(1, data.size());
692         assertEquals("Connecting", data.get(0).getStatus().toString());
693         assertEquals("sim2230", data.get(0).getNodeId());
694
695
696         // ==UPDATE================================
697         System.out.println("Try update entry");
698
699         dbRawProvider.doUpdateOrCreate(Entity.Connectionlog.getName(), dbId, "{'status' : 'Connected'}");
700
701         // ==READ 2================================
702         System.out.println("Try read updated entry");
703
704         readinput = new ReadConnectionlogListInputBuilder()
705                 .setFilter(Arrays.asList(new FilterBuilder().setProperty("status").setFiltervalue("Connected").build()))
706                 .setPagination(getPagination(20, 1)).build();
707
708         try {
709             readResult = dbProvider.readConnectionlogList(readinput);
710
711         } catch (Exception e) {
712             fail("Connection log not read: " + e.getMessage());
713         }
714
715         data = readResult.getData();
716
717         assertNotNull(data);
718         assertEquals(1, data.size());
719         assertEquals("Connected", data.get(0).getStatus().toString());
720         assertEquals("sim2230", data.get(0).getNodeId());
721
722       //== DELETE ================================
723
724            System.out.println("try to clear entry");
725            try {
726                dbRawProvider.doRemove(Entity.Connectionlog.getName(), dbId);
727            } catch (Exception e) {
728                fail("problem deleting entry: " + e.getMessage());
729            }
730
731          //== VERIFY DELETE ===========================
732            System.out.println("verify entries deleted");
733            readResult = dbProvider.readConnectionlogList(new ReadConnectionlogListInputBuilder().setPagination(getPagination(20, 1)).build());
734            data = readResult.getData();
735            assertEquals(0, data.size());
736
737     }
738
739      @Test
740     public void testEventLog() {
741         System.out.println("Test event log starting...");
742
743         // ==CLEAR================================
744         System.out.println("Clear before test");
745          try {
746              dbRawProvider.doRemove(Entity.Eventlog.getName(), QueryBuilders.matchAllQuery());
747          } catch (Exception e) {
748              fail("problem deleting: " + e.getMessage());
749          }
750         // ==CREATE============================
751
752          String dbId = null;
753         String json = " {\n" +
754                 "\"timestamp\": \"2019-11-08T16:39:23.0Z\",\n" +
755                 "\"new-value\": \"done\",\n" +
756                 "\"object-id\": \"SDN-Controller-0\",\n" +
757                 "\"attribute-name\": \"startup\",\n" +
758                 "\"counter\": 0,\n" +
759                 "\"implemented-interface\": \"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Eventlog\",\n" +
760                 "\"node-id\": \"SDN-Controller-0\"\n" +
761                 "}";
762
763         dbId = dbRawProvider.doUpdateOrCreate(Entity.Eventlog.getName(), "1", json);
764         assertNotNull(dbId);
765
766         // ==READ===========================
767
768         ReadEventlogListInput readinput = new ReadEventlogListInputBuilder()
769                 .setFilter(Arrays.asList(new FilterBuilder().setProperty("id").setFiltervalue(dbId).build()))
770                 .setPagination(getPagination(20, 1)).build();
771         ReadEventlogListOutputBuilder readResult = null;
772         try {
773              readResult = dbProvider.readEventlogList(readinput);
774
775         } catch (Exception e) {
776             fail("problem reading eventlog");
777         }
778
779         List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.eventlog.list.output.Data> data = readResult.getData();
780         assertEquals(1,data.size());
781
782         //== DELETE ================================
783
784           System.out.println("try to clear entry");
785           try {
786               dbRawProvider.doRemove(Entity.Eventlog.getName(), dbId);
787           } catch (Exception e) {
788               fail("problem deleting entry: " + e.getMessage());
789           }
790
791         //== VERIFY DELETE ===========================
792           System.out.println("verify entries deleted");
793           try {
794             readResult = dbProvider.readEventlogList(new ReadEventlogListInputBuilder().setPagination(getPagination(20, 1)).build());
795         } catch (IOException e) {
796             fail("problem reading eventlog");
797         }
798           data = readResult.getData();
799           assertEquals(0, data.size());
800
801     }
802
803      @Test
804     public void testInventory() {
805
806          System.out.println("Test inventory starting...");
807
808          // ==CLEAR================================
809          System.out.println("Clear before test");
810           try {
811               dbRawProvider.doRemove(Entity.Inventoryequipment.getName(), QueryBuilders.matchAllQuery());
812           } catch (Exception e) {
813               fail("problem deleting: " + e.getMessage());
814           }
815
816
817         // ==CREATE============================
818
819          String dbId = null;
820          String json = " {\"tree-level\": 1,\n" +
821                  "    \"parent-uuid\": \"SHELF-1.1.0.0\",\n" +
822                  "    \"node-id\": \"sim2\",\n" +
823                  "    \"uuid\": \"CARD-1.1.8.0\",\n" +
824                  "    \"contained-holder\": [ ],\n" +
825                  "    \"manufacturer-name\": \"Lorem Ipsum\",\n" +
826                  "    \"manufacturer-identifier\": \"ONF-Wireless-Transport\",\n" +
827                  "    \"serial\": \"sd-dsa-eqw\",\n" +
828                  "    \"date\": \"2008-10-21T00:00:00.0Z\",\n" +
829                  "\"implemented-interface\": \"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Inventory\",\n" +
830                  "    \"version\": \"unknown\",\n" +
831                  "    \"description\": \"WS/DS3\",\n" +
832                  "    \"part-type-id\": \"unknown\",\n" +
833                  "    \"model-identifier\": \"model-id-s3s\",\n" +
834                  "    \"type-name\": \"p4.module\"}";
835
836          dbId = dbRawProvider.doUpdateOrCreate(Entity.Inventoryequipment.getName(), "1 1", json);
837          assertNotNull(dbId);
838
839         // ==READ===========================
840          ReadInventoryListInput readinput = new ReadInventoryListInputBuilder()
841                 .setFilter(Arrays.asList(new FilterBuilder().setProperty("id").setFiltervalue(dbId).build()))
842                 .setPagination(getPagination(20, 1)).build();
843         ReadInventoryListOutputBuilder readResult = null;
844         try {
845              readResult = dbProvider.readInventoryList(readinput);
846
847         } catch (Exception e) {
848             fail("Problem reading inventory list"+e.getMessage());
849         }
850
851         List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.inventory.list.output.Data> data = readResult.getData();
852         assertEquals(1,data.size());
853         assertEquals("Lorem Ipsum", data.get(0).getManufacturerName());
854         assertEquals("ONF-Wireless-Transport", data.get(0).getManufacturerIdentifier());
855         assertEquals("sim2", data.get(0).getNodeId());
856         assertEquals("unknown", data.get(0).getVersion());
857         assertEquals("WS/DS3", data.get(0).getDescription());
858         assertEquals("2008-10-21T00:00:00.0Z", data.get(0).getDate());
859         assertEquals("sd-dsa-eqw", data.get(0).getSerial());
860         System.out.println(data.get(0).getDate());
861
862         // ==UPDATE============================
863         String updatedDbId=null;
864         final String[] holderArray = {"Lorem Ipsum 1", "Lorem Ipsum 2", "Lorem Ipsum &%/$_2"};
865         String updatejson = " {" +
866                  "    \"node-id\": \"sim5\",\n" +
867                  "    \"contained-holder\": [ \"Lorem Ipsum 1\", \"Lorem Ipsum 2\", \"Lorem Ipsum &%/$_2\" ],\n" +
868                  "    \"serial\": \"sd-dsa-eww\",\n" +
869                  "    \"date\": \"2008-11-21T00:00:00.0Z\",\n" +
870                  "    \"part-type-id\": \"not unknown\",\n" +
871                  "}";
872
873         updatedDbId = dbRawProvider.doUpdateOrCreate(Entity.Inventoryequipment.getName(), dbId, updatejson);
874         assertEquals(dbId, updatedDbId);
875
876         try {
877             readResult = dbProvider.readInventoryList(readinput);
878
879         } catch (Exception e) {
880             fail("Problem reading inventory list"+e.getMessage());
881         }
882
883         data = readResult.getData();
884
885         assertEquals(1,data.size());
886         assertEquals("Lorem Ipsum", data.get(0).getManufacturerName());
887         assertEquals("ONF-Wireless-Transport", data.get(0).getManufacturerIdentifier());
888         assertEquals("sim5", data.get(0).getNodeId());
889         assertEquals("not unknown", data.get(0).getPartTypeId());
890         assertEquals("WS/DS3", data.get(0).getDescription());
891         assertEquals("2008-11-21T00:00:00.0Z", data.get(0).getDate());
892         assertEquals("sd-dsa-eww", data.get(0).getSerial());
893         assertEquals(holderArray.length,data.get(0).getContainedHolder().size());
894         assertEquals(holderArray[0],data.get(0).getContainedHolder().get(0));
895         assertEquals(holderArray[1],data.get(0).getContainedHolder().get(1));
896         assertEquals(holderArray[2],data.get(0).getContainedHolder().get(2));
897
898         // ==DELETE============================
899
900         System.out.println("delete after test");
901         try {
902             dbRawProvider.doRemove(Entity.Inventoryequipment.getName(), QueryBuilders.matchAllQuery());
903         } catch (Exception e) {
904             fail("problem deleting: " + e.getMessage());
905         }
906
907      // ==VERIFY DELETE ============================
908
909         try {
910                readResult = dbProvider.readInventoryList(readinput);
911
912            } catch (Exception e) {
913                fail("Problem reading inventory list"+e.getMessage());
914            }
915
916            data = readResult.getData();
917            assertEquals(0,data.size());
918
919     }
920
921      @Test
922      public void test15MinPerformanceReadLtpListWithoutNodeIdSetThrowsException() {
923
924          System.out.println("Reading 15m ltp list without node id filter set throws an exception test start...");
925
926          try {
927              dbRawProvider.doRemove(Entity.Historicalperformance15min.getName(), QueryBuilders.matchAllQuery());
928          } catch (Exception e) {
929              fail("problem deleting: " + e.getMessage());
930          }
931
932          System.out.println("create entries...");
933
934          createPerformanceData("1", timeInterval.PERIOD_15MIN, "PM_RADIO_15M_6", "LP-MWPS-TTP-02", "a2");
935          createPerformanceData("2", timeInterval.PERIOD_15MIN, "PM_RADIO_15M_4", "LP-MWPS-TTP-01", "a2");
936
937          createPerformanceData("4", timeInterval.PERIOD_15MIN, "PM_RADIO_15M_6", "LP-MWPS-TTP-02", "a3");
938          createPerformanceData("5", timeInterval.PERIOD_15MIN, "PM_RADIO_15M_4", "LP-MWPS-TTP-01", "a3");
939          createPerformanceData("6", timeInterval.PERIOD_15MIN, "PM_RADIO_15M_7", "LP-MWPS-TTP-03", "a3");
940          createPerformanceData("3", timeInterval.PERIOD_15MIN, "PM_RADIO_15M_7", "LP-MWPS-TTP-05", "a3");
941
942          System.out.println("trying to read, should throw exception...");
943
944
945          ReadPmdata15mLtpListInput readLtp = new ReadPmdata15mLtpListInputBuilder()
946                  .setPagination(getPagination(20, 1)).build();
947
948          ReadPmdata15mLtpListOutputBuilder readltpResult = null;
949
950          try {
951             readltpResult = dbProvider.readPmdata15mLtpList(readLtp);
952             fail("No exception thrown!");
953         } catch (Exception e) {
954             System.out.println(e);
955             assertTrue(e instanceof IllegalArgumentException);
956             assertEquals("no nodename in filter found ", e.getMessage());
957         }
958
959          assertNull(readltpResult);
960
961           //== DELETE ================================
962
963             System.out.println("try to clear entry");
964             try {
965                 dbRawProvider.doRemove(Entity.Historicalperformance15min.getName(), QueryBuilders.matchAllQuery());
966             } catch (Exception e) {
967                 fail("problem deleting entry: " + e.getMessage());
968             }
969
970           //== VERIFY DELETE ===========================
971             System.out.println("verify entries deleted");
972             List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.pmdata._15m.list.output.Data> data = dbProvider.readPmdata15mList(new ReadPmdata15mListInputBuilder()
973                     .setPagination(getPagination(20, 1)).build()).getData();
974
975             assertEquals(0, data.size());
976      }
977
978      @Test
979      public void test15MinPerformanceData() {
980         // == CLEAR BEFORE TESTS ============================
981          System.out.println("Test 15 min performance...");
982
983          try {
984              dbRawProvider.doRemove(Entity.Historicalperformance15min.getName(), QueryBuilders.matchAllQuery());
985          } catch (Exception e) {
986              fail("problem deleting: " + e.getMessage());
987          }
988
989         // == CREATE ============================
990
991          System.out.println("create entries...");
992
993          createPerformanceData("1", timeInterval.PERIOD_15MIN, "PM_RADIO_15M_6", "LP-MWPS-TTP-02", "a2");
994          createPerformanceData("2", timeInterval.PERIOD_15MIN, "PM_RADIO_15M_4", "LP-MWPS-TTP-01", "a2");
995
996          createPerformanceData("4", timeInterval.PERIOD_15MIN, "PM_RADIO_15M_6", "LP-MWPS-TTP-02", "a3");
997          createPerformanceData("5", timeInterval.PERIOD_15MIN, "PM_RADIO_15M_4", "LP-MWPS-TTP-01", "a3");
998          createPerformanceData("6", timeInterval.PERIOD_15MIN, "PM_RADIO_15M_7", "LP-MWPS-TTP-03", "a3");
999          createPerformanceData("3", timeInterval.PERIOD_15MIN, "PM_RADIO_15M_7", "LP-MWPS-TTP-05", "a3");
1000
1001         // == READ ============================
1002          System.out.println("read list entries...");
1003
1004          ReadPmdata15mListInput read = new ReadPmdata15mListInputBuilder()
1005                  .setFilter(Arrays.asList(new FilterBuilder().setProperty("node-name").setFiltervalue("a2").build()))
1006                  .setPagination(getPagination(20, 1)).build();
1007
1008          ReadPmdata15mListOutputBuilder readResult = null;
1009
1010          try {
1011              readResult = dbProvider.readPmdata15mList(read);
1012         } catch (Exception e) {
1013             fail("Problem reading 15m data");
1014         }
1015
1016           List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.pmdata._15m.list.output.Data> data = readResult
1017                   .getData();
1018
1019           assertNotNull(data);
1020           assertEquals(2, data.size());
1021
1022           System.out.println("read ltp entries with node name set...");
1023
1024           ReadPmdata15mLtpListInput readLtp = new ReadPmdata15mLtpListInputBuilder()
1025                   .setFilter(Arrays.asList(new FilterBuilder().setProperty("node-name").setFiltervalue("a2").build()))
1026                   .setPagination(getPagination(20, 1)).build();
1027
1028           ReadPmdata15mLtpListOutputBuilder readltpResult = null;
1029
1030           try {
1031              readltpResult = dbProvider.readPmdata15mLtpList(readLtp);
1032          } catch (Exception e) {
1033              fail("Problem reading 15m ltp data");
1034          }
1035
1036           List<String> dataLtp = readltpResult.getData();
1037
1038           assertNotNull(dataLtp);
1039          assertEquals(2, dataLtp.size());
1040          assertTrue(dataLtp.contains("LP-MWPS-TTP-02"));
1041          assertTrue(dataLtp.contains("LP-MWPS-TTP-01"));
1042
1043          System.out.println("read device entries...");
1044
1045          ReadPmdata15mDeviceListInput readDevices = new ReadPmdata15mDeviceListInputBuilder()
1046                    .setPagination(getPagination(20, 1)).build();
1047
1048            ReadPmdata15mDeviceListOutputBuilder readDeviceResult = null;
1049
1050            try {
1051               readDeviceResult = dbProvider.readPmdata15mDeviceList(readDevices);
1052           } catch (Exception e) {
1053               fail("Problem reading 15m device data");
1054           }
1055
1056             List<String> dataDevice = readDeviceResult.getData();
1057
1058             assertNotNull(dataDevice);
1059           assertEquals(2, dataDevice.size());
1060           assertTrue(dataDevice.contains("a2"));
1061           assertTrue(dataDevice.contains("a3"));
1062
1063           //== DELETE ================================
1064
1065             System.out.println("try to clear entry");
1066             try {
1067                 dbRawProvider.doRemove(Entity.Historicalperformance15min.getName(), QueryBuilders.matchAllQuery());
1068             } catch (Exception e) {
1069                 fail("problem deleting entry: " + e.getMessage());
1070             }
1071
1072           //== VERIFY DELETE ===========================
1073             System.out.println("verify entries deleted");
1074             readResult = dbProvider.readPmdata15mList(new ReadPmdata15mListInputBuilder()
1075                     .setPagination(getPagination(20, 1)).build());
1076             data = readResult.getData();
1077             assertEquals(0, data.size());
1078
1079      }
1080
1081      @Test
1082      public void test24hPerformanceData() {
1083          System.out.println("Test 24h performance...");
1084
1085          try {
1086              dbRawProvider.doRemove(Entity.Historicalperformance24h.getName(), QueryBuilders.matchAllQuery());
1087          } catch (Exception e) {
1088              fail("problem deleting: " + e.getMessage());
1089          }
1090
1091          System.out.println("create entries...");
1092
1093          createPerformanceData("1", timeInterval.PERIOD_24HOURS, "PM_RADIO_15M_6", "LP-MWPS-TTP-02", "a2");
1094          createPerformanceData("2", timeInterval.PERIOD_24HOURS, "PM_RADIO_15M_4", "LP-MWPS-TTP-01", "a2");
1095          String aDbId = createPerformanceData("4", timeInterval.PERIOD_24HOURS, "PM_RADIO_15M_6", "LP-MWPS-TTP-06", "a2");
1096
1097          createPerformanceData("5", timeInterval.PERIOD_24HOURS, "PM_RADIO_15M_4", "LP-MWPS-TTP-01", "a3");
1098          createPerformanceData("6", timeInterval.PERIOD_24HOURS, "PM_RADIO_15M_7", "LP-MWPS-TTP-03", "a3");
1099          createPerformanceData("3", timeInterval.PERIOD_24HOURS, "PM_RADIO_15M_7", "LP-MWPS-TTP-05", "a3");
1100
1101          System.out.println("read all list entries...");
1102
1103          ReadPmdata24hListInput read = new ReadPmdata24hListInputBuilder()
1104                  .setPagination(getPagination(20, 1)).build();
1105
1106          ReadPmdata24hListOutputBuilder readResult = null;
1107
1108          try {
1109              readResult = dbProvider.readPmdata24hList(read);
1110         } catch (Exception e) {
1111             fail("Problem reading 24h data");
1112         }
1113
1114          List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.pmdata._24h.list.output.Data> data = readResult
1115                  .getData();
1116
1117          assertNotNull(data);
1118          assertEquals(6, data.size());
1119
1120
1121          System.out.println("filter list entries...");
1122
1123           read = new ReadPmdata24hListInputBuilder()
1124                  .setFilter(Arrays.asList(new FilterBuilder().setProperty("node-name").setFiltervalue("a2").build()))
1125                  .setPagination(getPagination(20, 1)).build();
1126
1127           readResult = null;
1128
1129          try {
1130              readResult = dbProvider.readPmdata24hList(read);
1131         } catch (Exception e) {
1132             fail("Problem reading 24h data");
1133         }
1134
1135          data = readResult.getData();
1136
1137           assertNotNull(data);
1138           assertEquals(3, data.size());
1139
1140           System.out.println("read ltp entries with node name set...");
1141
1142           ReadPmdata24hLtpListInput readLtp = new ReadPmdata24hLtpListInputBuilder()
1143                    .setFilter(Arrays.asList(new FilterBuilder().setProperty("node-name").setFiltervalue("a2").build()))
1144                    .setPagination(getPagination(20, 1)).build();
1145
1146            ReadPmdata24hLtpListOutputBuilder readltpResult = null;
1147
1148            try {
1149               readltpResult = dbProvider.readPmdata24hLtpList(readLtp);
1150           } catch (Exception e) {
1151               fail("Problem reading 24h ltp data");
1152           }
1153
1154            List<String> dataLtp = readltpResult.getData();
1155
1156             assertNotNull(dataLtp);
1157             assertEquals(3, dataLtp.size());
1158             assertTrue(dataLtp.contains("LP-MWPS-TTP-02"));
1159             assertTrue(dataLtp.contains("LP-MWPS-TTP-01"));
1160             assertTrue(dataLtp.contains("LP-MWPS-TTP-06"));
1161
1162
1163             System.out.println("read device entries...");
1164
1165             ReadPmdata24hDeviceListInput readDevices = new ReadPmdata24hDeviceListInputBuilder()
1166                        .setPagination(getPagination(20, 1)).build();
1167
1168                ReadPmdata24hDeviceListOutputBuilder readDeviceResult = null;
1169
1170                try {
1171                   readDeviceResult = dbProvider.readPmdata24hDeviceList(readDevices);
1172               } catch (Exception e) {
1173                   fail("Problem reading 24h device data");
1174               }
1175
1176                 List<String> dataDevice = readDeviceResult.getData();
1177
1178                 assertNotNull(dataDevice);
1179               assertEquals(2, dataDevice.size());
1180               assertTrue(dataDevice.contains("a2"));
1181               assertTrue(dataDevice.contains("a3"));
1182
1183               // == UPDATE ==============================
1184
1185               String shouldbeEmpty = dbRawProvider.doUpdate(Entity.Historicalperformance24h.getName(), "{'uuid-interface':'LTP-TEST-MWP-097'}", QueryBuilders.termQuery("_id", aDbId));
1186               assertEquals("",shouldbeEmpty);
1187               try {
1188               readltpResult = dbProvider.readPmdata24hLtpList(readLtp);
1189         } catch (Exception e) {
1190             fail("Problem reading 24h ltp data");
1191         }
1192
1193               // == VERIFY UPDATE ==============================
1194
1195               dataLtp = readltpResult.getData();
1196
1197               assertNotNull(dataLtp);
1198              assertEquals(3, dataLtp.size());
1199              assertTrue(dataLtp.contains("LP-MWPS-TTP-02"));
1200              assertTrue(dataLtp.contains("LP-MWPS-TTP-01"));
1201              assertTrue(dataLtp.contains("LTP-TEST-MWP-097"));
1202
1203
1204
1205               //== DELETE ===========================
1206
1207               System.out.println("try to clear entries");
1208               try {
1209                   dbRawProvider.doRemove(Entity.Historicalperformance24h.getName(), QueryBuilders.matchAllQuery());
1210               } catch (Exception e) {
1211                   fail("problem deleting entry: " + e.getMessage());
1212               }
1213
1214             //== VERIFY DELETE ===========================
1215               System.out.println("verify entries deleted");
1216               readResult = dbProvider.readPmdata24hList(new ReadPmdata24hListInputBuilder()
1217                       .setPagination(getPagination(20, 1)).build());
1218               data = readResult.getData();
1219               assertEquals(0, data.size());
1220      }
1221
1222      @Test
1223      public void test24hPerformanceDataReadLtpListWithoutNodeIdSetThrowsException() {
1224          System.out.println("Test 24 hour tp list without node id filter set throws an exception test start...\"...");
1225
1226          try {
1227              dbRawProvider.doRemove(Entity.Historicalperformance24h.getName(), QueryBuilders.matchAllQuery());
1228          } catch (Exception e) {
1229              fail("problem deleting: " + e.getMessage());
1230          }
1231
1232          System.out.println("create entries...");
1233
1234          createPerformanceData("1", timeInterval.PERIOD_24HOURS, "PM_RADIO_15M_6", "LP-MWPS-TTP-02", "a2");
1235          createPerformanceData("2", timeInterval.PERIOD_24HOURS, "PM_RADIO_15M_4", "LP-MWPS-TTP-01", "a2");
1236
1237          createPerformanceData("4", timeInterval.PERIOD_24HOURS, "PM_RADIO_15M_6", "LP-MWPS-TTP-02", "a3");
1238          createPerformanceData("5", timeInterval.PERIOD_24HOURS, "PM_RADIO_15M_4", "LP-MWPS-TTP-01", "a3");
1239          createPerformanceData("6", timeInterval.PERIOD_24HOURS, "PM_RADIO_15M_7", "LP-MWPS-TTP-03", "a3");
1240          createPerformanceData("3", timeInterval.PERIOD_24HOURS, "PM_RADIO_15M_7", "LP-MWPS-TTP-05", "a3");
1241
1242          System.out.println("trying to read, should throw exception...");
1243
1244
1245          ReadPmdata24hLtpListInput readLtp = new ReadPmdata24hLtpListInputBuilder()
1246                  .setPagination(getPagination(20, 1)).build();
1247
1248          ReadPmdata24hLtpListOutputBuilder readltpResult = null;
1249
1250          try {
1251             readltpResult = dbProvider.readPmdata24hLtpList(readLtp);
1252             fail("No exception thrown!");
1253         } catch (Exception e) {
1254             System.out.println(e);
1255             assertTrue(e instanceof IllegalArgumentException);
1256             assertEquals("no nodename in filter found ", e.getMessage());
1257         }
1258
1259          assertNull(readltpResult);
1260
1261          try {
1262              dbRawProvider.doRemove(Entity.Historicalperformance24h.getName(), QueryBuilders.matchAllQuery());
1263          } catch (Exception e) {
1264              fail("problem deleting: " + e.getMessage());
1265          }
1266      }
1267
1268     @Test
1269     public void testUrlEncoding() {
1270         System.out.println("Testing url encding");
1271
1272         final String test = "Lorem Ipsum";
1273         final String test1 = "Lorem/Ipsum";
1274         final String test2 = "Lorem_Ipsum";
1275         final String test3 = "Lorem%Ipsum";
1276
1277         assertEquals("Lorem%20Ipsum", BaseRequest.urlEncodeValue(test));
1278         assertEquals("Lorem%2FIpsum", BaseRequest.urlEncodeValue(test1));
1279         assertEquals("Lorem_Ipsum", BaseRequest.urlEncodeValue(test2));
1280         assertEquals("Lorem%25Ipsum", BaseRequest.urlEncodeValue(test3));
1281     }
1282
1283     @Test
1284     public void testDoUpdateOrCreateWithNullId() {
1285         System.out.println("Test DoUpdateOrCreate doesn't create new database entry if null is passed");
1286
1287         String dbId = clearAndCreatefaultEntity(null, Entity.Faultlog.getName(), "org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateFaultlogInput", SeverityType.Critical);
1288         assertNull(dbId);
1289     }
1290
1291     @Test
1292     public void readTestFaultCurrentViaRawDbProvider() {
1293         System.out.println("Starting faultCurrent test...");
1294         String dbId = null;
1295         dbId = clearAndCreatefaultEntity("1", Entity.Faultcurrent.getName(), "org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateFaultcurrentInput", SeverityType.Critical);
1296         assertEquals("1", dbId);
1297
1298        // ==READ===========================
1299         System.out.println("Trying to read...");
1300
1301        String readResult = null;
1302        try {
1303            readResult = dbRawProvider.doReadJsonData(Entity.Faultcurrent.getName(), dbId);
1304
1305        } catch (Exception e) {
1306            fail("Fault log not read: " + e.getMessage());
1307        }
1308
1309
1310        String expectedDbResult ="{\"severity\":\"Critical\",\"node-id\":\"s1\",\"problem\":\"signalIsLost\",\"counter\":4340,\"object-id\":\"LP-MWPS-RADIO\",\"implemented-interface\":\"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateFaultcurrentInput\",\"type\":\"ProblemNotificationXml\",\"timestamp\":\"2019-10-28T11:55:58.3Z\"}";
1311
1312        System.out.println(readResult);
1313        assertNotNull(readResult);
1314        assertEquals(expectedDbResult, readResult);
1315
1316        SearchResult<SearchHit> searchResult = dbRawProvider.doReadAllJsonData(Entity.Faultcurrent.getName());
1317        assertNotNull(searchResult);
1318
1319        List<SearchHit> hits = searchResult.getHits();
1320
1321        assertNotNull(hits);
1322        assertEquals(1, searchResult.getTotal());
1323        assertEquals(expectedDbResult, hits.get(0).getSourceAsString());
1324
1325        //== DELETE ==============================
1326        try {
1327            dbRawProvider.doRemove(Entity.Faultcurrent.getName(), QueryBuilders.matchAllQuery());
1328        } catch (Exception e) {
1329            fail("problem deleting: " + e.getMessage());
1330        }
1331        //== VERIFY DELETE ========================
1332        searchResult = dbRawProvider.doReadAllJsonData(Entity.Faultcurrent.getName());
1333         hits = searchResult.getHits();
1334         assertNotNull(hits);
1335         assertEquals(0, searchResult.getTotal());
1336
1337     }
1338
1339
1340     private Pagination getPagination(long pageSize, int page) {
1341         return new PaginationBuilder().setPage(BigInteger.valueOf(page)).setSize(pageSize).build();
1342     }
1343
1344
1345     private String clearAndCreatefaultEntity(String initialDbId,  String entityType, String implementedInterface, SeverityType severity) {
1346         // ==CLEAR BEFORE TEST============================
1347         System.out.println("try to clear entry");
1348         try {
1349             dbRawProvider.doRemove(entityType, QueryBuilders.matchAllQuery());
1350         } catch (Exception e) {
1351             fail("problem deleting: " + e.getMessage());
1352         }
1353
1354
1355         return createFaultEntity(initialDbId, entityType, implementedInterface, severity);
1356     }
1357
1358     private String createFaultEntity(String initialDbId,  String entityType, String implementedInterface, SeverityType severity) {
1359          // ==CREATE============================
1360         System.out.println("try to create entry");
1361         String dbId = null;
1362
1363         try {
1364
1365             dbId = dbRawProvider.doUpdateOrCreate(entityType, initialDbId,"{\n" +
1366                     "\"timestamp\": \"2019-10-28T11:55:58.3Z\",\n" +
1367                     "\"object-id\": \"LP-MWPS-RADIO\",\n" +
1368                     "\"severity\": \""+severity.toString()+"\",\n" +
1369                     "\"node-id\": \"s1\",\n" +
1370                     "\"implemented-interface\": \""+implementedInterface+"\",\n" +
1371                     "\"counter\": 4340,\n" +
1372                     "\"problem\": \"signalIsLost\",\n" +
1373                     "\"type\": \"ProblemNotificationXml\"\n" +
1374                     "}");
1375
1376
1377
1378         } catch (Exception e) {
1379             fail("Problem creating fault log entry" + e.getMessage());
1380         }
1381
1382         return dbId;
1383     }
1384
1385     private enum timeInterval{
1386         PERIOD_15MIN,
1387         PERIOD_24HOURS
1388     }
1389
1390     private String createPerformanceData(String initialDbId, timeInterval timeInterval, String scannerId, String uuidInterface, String nodename) {
1391
1392         String json = "{\n" +
1393                 "\"node-name\": \""+nodename+"\",\n" +
1394                 "\"uuid-interface\": \""+uuidInterface+"\",\n" +
1395                 "\"layer-protocol-name\": \"MWPS\",\n" +
1396                 "\"radio-signal-id\": \"Test8\",\n" +
1397                 "\"time-stamp\": \"2017-03-01T06:15:00.0Z\",\n" +
1398                 "\"granularity-period\": \""+timeInterval.toString()+"\",\n" +
1399                 "\"scanner-id\": \""+scannerId+"\",\n" +
1400                 "\"performance-data\": {\n" +
1401                 "\"cses\": 0,\n" +
1402                 "\"ses\": 0,\n" +
1403                 "\"es\": 0,\n" +
1404                 "\"tx-level-max\": 3,\n" +
1405                 "\"tx-level-avg\": 3,\n" +
1406                 "\"rx-level-min\": -44,\n" +
1407                 "\"rx-level-max\": -45,\n" +
1408                 "\"rx-level-avg\": -44,\n" +
1409                 "\"time2-states\": 0,\n" +
1410                 "\"time4-states-s\": 0,\n" +
1411                 "\"time4-states\": 0,\n" +
1412                 "\"time8-states\": -1,\n" +
1413                 "\"time16-states-s\": -1,\n" +
1414                 "\"time16-states\": 0,\n" +
1415                 "\"time32-states\": -1,\n" +
1416                 "\"time64-states\": 900,\n" +
1417                 "\"time128-states\": -1,\n" +
1418                 "\"time256-states\": -1,\n" +
1419                 "\"time512-states\": -1,\n" +
1420                 "\"time512-states-l\": -1,\n" +
1421                 "\"unavailability\": 0,\n" +
1422                 "\"tx-level-min\": 3,\n" +
1423                 "\"time1024-states\": -1,\n" +
1424                 "\"time1024-states-l\": -1,\n" +
1425                 "\"time2048-states\": -1,\n" +
1426                 "\"time2048-states-l\": -1,\n" +
1427                 "\"time4096-states\": -1,\n" +
1428                 "\"time4096-states-l\": -1,\n" +
1429                 "\"time8192-states\": -1,\n" +
1430                 "\"time8192-states-l\": -1,\n" +
1431                 "\"snir-min\": -99,\n" +
1432                 "\"snir-max\": -99,\n" +
1433                 "\"snir-avg\": -99,\n" +
1434                 "\"xpd-min\": -99,\n" +
1435                 "\"xpd-max\": -99,\n" +
1436                 "\"xpd-avg\": -99,\n" +
1437                 "\"rf-temp-min\": -99,\n" +
1438                 "\"rf-temp-max\": -99,\n" +
1439                 "\"rf-temp-avg\": -99,\n" +
1440                 "\"defect-blocks-sum\": -1,\n" +
1441                 "\"time-period\": 900\n" +
1442                 "},\n" +
1443                 "\"suspect-interval-flag\": false\n" +
1444                 "}";
1445
1446         if(timeInterval.toString().equals("PERIOD_15MIN")) {
1447             return dbRawProvider.doUpdateOrCreate(Entity.Historicalperformance15min.getName(), initialDbId, json);
1448         }else {
1449             return dbRawProvider.doUpdateOrCreate(Entity.Historicalperformance24h.getName(), initialDbId, json);
1450         }
1451     }
1452
1453 }