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