da74500894c99a9fee9cb2098a1e1ab40603f414
[ccsdk/features.git] /
1 /*
2  * ============LICENSE_START=======================================================
3  * ONAP : ccsdk features
4  * ================================================================================
5  * Copyright (C) 2020 highstreet technologies GmbH Intellectual Property.
6  * All rights reserved.
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *     http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  * ============LICENSE_END=========================================================
20  *
21  */
22 package org.onap.ccsdk.features.sdnr.wt.dataprovider.dblib.test;
23
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.fail;
26 import java.io.IOException;
27 import java.sql.SQLException;
28 import java.util.ArrayList;
29 import java.util.HashMap;
30 import java.util.List;
31 import java.util.Map;
32 import java.util.concurrent.TimeUnit;
33 import org.json.JSONArray;
34 import org.json.JSONException;
35 import org.junit.AfterClass;
36 import org.junit.BeforeClass;
37 import org.junit.Ignore;
38 import org.junit.Test;
39 import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.SqlDBClient;
40 import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.data.SqlDBDataProvider;
41 import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.query.DeleteQuery;
42 import org.onap.ccsdk.features.sdnr.wt.dataprovider.dblib.test.util.MariaDBTestBase;
43 import org.onap.ccsdk.features.sdnr.wt.yang.mapper.YangToolsMapper;
44 import org.opendaylight.netconf.shaded.sshd.common.util.io.IoUtils;
45 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DateAndTime;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ConnectionLogStatus;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ConnectionlogBuilder;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ConnectionlogEntity;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.CreateMaintenanceInput;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.CreateMaintenanceInputBuilder;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.CreateMediatorServerInput;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.CreateMediatorServerInputBuilder;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.CreateMediatorServerOutputBuilder;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.DeleteMediatorServerInput;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.DeleteMediatorServerInputBuilder;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.DeleteNetworkElementConnectionInput;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.DeleteNetworkElementConnectionInputBuilder;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Entity;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.EntityInput;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.EventlogBuilder;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.EventlogEntity;
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.FaultcurrentBuilder;
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.FaultcurrentEntity;
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.FaultlogBuilder;
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.FaultlogEntity;
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Guicutthrough;
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.GuicutthroughBuilder;
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Inventory;
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.NetworkElementConnectionBuilder;
70 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.NetworkElementConnectionEntity;
71 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.NetworkElementDeviceType;
72 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.PmdataEntity;
73 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadConnectionlogListOutputBuilder;
74 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadEventlogListOutputBuilder;
75 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadFaultcurrentListInputBuilder;
76 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadFaultcurrentListOutputBuilder;
77 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadFaultlogListOutputBuilder;
78 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadGuiCutThroughEntryOutputBuilder;
79 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadInventoryListOutputBuilder;
80 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadMaintenanceListOutputBuilder;
81 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadMediatorServerListOutputBuilder;
82 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadNetworkElementConnectionListOutputBuilder;
83 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadPmdata15mDeviceListOutputBuilder;
84 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadPmdata15mListOutputBuilder;
85 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadPmdata15mLtpListOutputBuilder;
86 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadPmdata24hListOutputBuilder;
87 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadStatusOutputBuilder;
88 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.SeverityType;
89 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.SourceType;
90 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.UpdateMediatorServerInput;
91 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.UpdateMediatorServerInputBuilder;
92 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.UpdateNetworkElementConnectionInput;
93 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.UpdateNetworkElementConnectionInputBuilder;
94 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.entity.input.Filter;
95 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.entity.input.FilterBuilder;
96 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.entity.input.FilterKey;
97 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.entity.input.PaginationBuilder;
98 import org.opendaylight.yangtools.yang.common.Uint32;
99 import org.opendaylight.yangtools.yang.common.Uint64;
100 import ch.vorburger.exec.ManagedProcessException;
101
102 public class TestMariaDataProvider {
103
104
105     private static final String NODEID1 = "node1";
106     private static final String NODEID2 = "node2";
107     private static final String NODEID3 = "node3";
108     private static final String PROBLEM1 = "problem1";
109     private static final String TIME1 = "2021-05-25T05:12:55.0Z";
110     private static final String TIME2 = "2021-05-25T05:12:56.0Z";
111     private static final String TIME3 = "2021-05-25T05:12:57.0Z";
112     private static final String PROBLEM2 = "problem2";
113     private static final String URI1 = "http://localhost:8181";
114     private static final String URI2 = "http://localhost:8181";
115     private static final String URI3 = "http://localhost:8181";
116     private static MariaDBTestBase testBase;
117     private static SqlDBDataProvider dbProvider;
118     private static SqlDBClient dbClient;
119     private static String CONTROLLERID;
120
121     @BeforeClass
122     public static void init() throws Exception {
123
124         testBase = new MariaDBTestBase();
125         dbProvider = testBase.getDbProvider();
126         dbProvider.waitForDatabaseReady(30, TimeUnit.SECONDS);
127         dbClient = testBase.createRawClient();
128         MariaDBTestBase.testCreateTableStructure(dbClient);
129         dbProvider.setControllerId();
130         CONTROLLERID = dbProvider.getControllerId();
131
132     }
133
134     @AfterClass
135     public static void close() {
136         try {
137             testBase.close();
138         } catch (ManagedProcessException e) {
139             e.printStackTrace();
140         }
141     }
142
143     @Test
144     public void testFaultcurrent() {
145         dbProvider.clearFaultsCurrentOfNode(NODEID1);
146         ReadFaultcurrentListOutputBuilder faultCurrents =
147                 dbProvider.readFaultCurrentList(createInput("node-id", NODEID1, 1, 20));
148         assertEquals(0, faultCurrents.getData().size());
149         FaultcurrentEntity faultCurrent1 = new FaultcurrentBuilder().setNodeId(NODEID1).setCounter(1).setObjectId("obj")
150                 .setProblem(PROBLEM1).setTimestamp(DateAndTime.getDefaultInstance(TIME1))
151                 .setSeverity(SeverityType.Major).setId(String.format("%s/%s", NODEID1, PROBLEM1)).build();
152         dbProvider.updateFaultCurrent(faultCurrent1);
153         FaultcurrentEntity faultCurrent2 = new FaultcurrentBuilder().setNodeId(NODEID1).setCounter(1).setObjectId("obj")
154                 .setProblem(PROBLEM2).setTimestamp(DateAndTime.getDefaultInstance(TIME1))
155                 .setSeverity(SeverityType.Minor).setId(String.format("%s/%s", NODEID1, PROBLEM2)).build();
156         dbProvider.updateFaultCurrent(faultCurrent2);
157         faultCurrents = dbProvider.readFaultCurrentList(createInput("node-id", NODEID1, 1, 20));
158         assertEquals(2, faultCurrents.getData().size());
159         ReadStatusOutputBuilder status = null;
160         try {
161             status = dbProvider.readStatus();
162         } catch (IOException e) {
163             e.printStackTrace();
164             fail("failed to read status");
165         }
166         assertEquals(0, status.getData().get(0).getFaults().getCriticals().intValue());
167         assertEquals(1, status.getData().get(0).getFaults().getMajors().intValue());
168         assertEquals(1, status.getData().get(0).getFaults().getMinors().intValue());
169         assertEquals(0, status.getData().get(0).getFaults().getWarnings().intValue());
170
171         faultCurrent1 = new FaultcurrentBuilder().setNodeId(NODEID1).setCounter(1).setObjectId("obj")
172                 .setProblem(PROBLEM1).setTimestamp(DateAndTime.getDefaultInstance(TIME1))
173                 .setSeverity(SeverityType.NonAlarmed).setId(String.format("%s/%s", NODEID1, PROBLEM1)).build();
174         dbProvider.updateFaultCurrent(faultCurrent1);
175         faultCurrents = dbProvider.readFaultCurrentList(createInput("node-id", NODEID1, 1, 20));
176         assertEquals(1, faultCurrents.getData().size());
177     }
178
179     @Test
180     public void testFaultlog() {
181         try {
182             dbClient.delete(new DeleteQuery(Entity.Faultcurrent, null).toSql());
183         } catch (SQLException e) {
184             e.printStackTrace();
185             fail("problem clearing faultlog");
186         }
187         ReadFaultlogListOutputBuilder faultlogs = dbProvider.readFaultLogList(createInput(1, 20));
188         assertEquals(0, faultlogs.getData().size());
189         FaultlogEntity fault1 = new FaultlogBuilder().setCounter(1).setNodeId(NODEID1).setObjectId("obj")
190                 .setProblem(PROBLEM1).setSeverity(SeverityType.Major).setSourceType(SourceType.Netconf)
191                 .setTimestamp(DateAndTime.getDefaultInstance(TIME1)).build();
192         dbProvider.writeFaultLog(fault1);
193         FaultlogEntity fault2 = new FaultlogBuilder().setCounter(2).setNodeId(NODEID1).setObjectId("obj")
194                 .setProblem(PROBLEM2).setSeverity(SeverityType.Major).setSourceType(SourceType.Netconf)
195                 .setTimestamp(DateAndTime.getDefaultInstance(TIME1)).build();
196         dbProvider.writeFaultLog(fault2);
197         faultlogs = dbProvider.readFaultLogList(createInput("node-id", NODEID1, 1, 20));
198         assertEquals(2, faultlogs.getData().size());
199     }
200
201     @Test
202     public void testConnectionlog() {
203         try {
204             dbClient.delete(new DeleteQuery(Entity.Connectionlog, null).toSql());
205         } catch (SQLException e) {
206             e.printStackTrace();
207             fail("problem clearing faultlog");
208         }
209         ReadConnectionlogListOutputBuilder logs = dbProvider.readConnectionlogList(createInput(1, 20));
210         assertEquals(0, logs.getData().size());
211         ConnectionlogEntity log1 = new ConnectionlogBuilder().setNodeId(NODEID1)
212                 .setTimestamp(DateAndTime.getDefaultInstance(TIME1)).setStatus(ConnectionLogStatus.Mounted).build();
213         dbProvider.writeConnectionLog(log1);
214         ConnectionlogEntity log2 = new ConnectionlogBuilder().setNodeId(NODEID1)
215                 .setTimestamp(DateAndTime.getDefaultInstance(TIME2)).setStatus(ConnectionLogStatus.Connecting).build();
216         dbProvider.writeConnectionLog(log2);
217         ConnectionlogEntity log3 = new ConnectionlogBuilder().setNodeId(NODEID1)
218                 .setTimestamp(DateAndTime.getDefaultInstance(TIME3)).setStatus(ConnectionLogStatus.Connected).build();
219         dbProvider.writeConnectionLog(log3);
220         logs = dbProvider.readConnectionlogList(createInput(1, 20));
221         assertEquals(3, logs.getData().size());
222     }
223
224     @Test
225     public void testEventlog() {
226         try {
227             dbClient.delete(new DeleteQuery(Entity.Eventlog, null).toSql());
228         } catch (SQLException e) {
229             e.printStackTrace();
230             fail("problem clearing faultlog");
231         }
232         ReadEventlogListOutputBuilder logs = null;
233         try {
234             logs = dbProvider.readEventlogList(createInput(1, 20));
235         } catch (IOException e) {
236             e.printStackTrace();
237             fail(e.getMessage());
238         }
239         assertEquals(0, logs.getData().size());
240         EventlogEntity log1 = new EventlogBuilder().setCounter(1).setNodeId(NODEID1).setObjectId("obj")
241                 .setTimestamp(DateAndTime.getDefaultInstance(TIME1)).setAttributeName("attr").setNewValue("new-value")
242                 .setSourceType(SourceType.Netconf).build();
243         dbProvider.writeEventLog(log1);
244         EventlogEntity log2 = new EventlogBuilder().setCounter(1).setNodeId(NODEID1).setObjectId("obj")
245                 .setTimestamp(DateAndTime.getDefaultInstance(TIME2)).setAttributeName("attr").setNewValue("new-value2")
246                 .setSourceType(SourceType.Netconf).build();
247         dbProvider.writeEventLog(log2);
248         EventlogEntity log3 = new EventlogBuilder().setCounter(1).setNodeId(NODEID1).setObjectId("obj")
249                 .setTimestamp(DateAndTime.getDefaultInstance(TIME3)).setAttributeName("attr").setNewValue("new-value3")
250                 .setSourceType(SourceType.Netconf).build();
251         dbProvider.writeEventLog(log3);
252         try {
253             logs = dbProvider.readEventlogList(createInput(1, 20));
254         } catch (IOException e) {
255             e.printStackTrace();
256             fail(e.getMessage());
257         }
258         assertEquals(3, logs.getData().size());
259     }
260
261     @Test
262     public void testGuicutthrough() {
263         try {
264             dbClient.delete(new DeleteQuery(Entity.Guicutthrough, null).toSql());
265         } catch (SQLException e) {
266             e.printStackTrace();
267             fail("problem clearing faultlog");
268         }
269         Guicutthrough gc1 = new GuicutthroughBuilder().setName(NODEID1).setWeburi(URI1).build();
270         dbProvider.writeGuiCutThroughData(gc1, NODEID1);
271         Guicutthrough gc2 = new GuicutthroughBuilder().setName(NODEID2).setWeburi(URI2).build();
272         dbProvider.writeGuiCutThroughData(gc2, NODEID2);
273         Guicutthrough gc3 = new GuicutthroughBuilder().setName(NODEID3).setWeburi(URI3).build();
274         dbProvider.writeGuiCutThroughData(gc3, NODEID3);
275         ReadGuiCutThroughEntryOutputBuilder data = dbProvider.readGuiCutThroughEntry(createInput(1, 20));
276         assertEquals(3, data.getData().size());
277         data = dbProvider.readGuiCutThroughEntry(createInput("name", NODEID1, 1, 20));
278         assertEquals(1, data.getData().size());
279
280     }
281
282     @Test
283     public void testInventory() {
284         try {
285             dbClient.delete(new DeleteQuery(Entity.Inventoryequipment, null).toSql());
286         } catch (SQLException e) {
287             e.printStackTrace();
288             fail("problem clearing faultlog");
289         }
290         ReadInventoryListOutputBuilder data = dbProvider.readInventoryList(createInput(1, 20));
291         assertEquals(0, data.getData().size());
292         List<Inventory> list = null;
293         try {
294             list = loadListFile("/inventory.json", Inventory.class);
295         } catch (IOException e) {
296             e.printStackTrace();
297             fail("problem loading inventory data");
298
299         }
300         dbProvider.writeInventory(NODEID1, list);
301         data = dbProvider.readInventoryList(createInput(1, 50));
302         assertEquals(22, data.getData().size());
303         data = dbProvider.readInventoryList(createInput("tree-level", "0", 1, 50));
304         assertEquals(5, data.getData().size());
305     }
306
307     @Test
308     public void testMaintenance() {
309         try {
310             dbClient.delete(new DeleteQuery(Entity.Maintenancemode, null).toSql());
311         } catch (SQLException e) {
312             e.printStackTrace();
313             fail("problem clearing faultlog");
314         }
315         ReadMaintenanceListOutputBuilder data = dbProvider.readMaintenanceList(createInput(1, 20));
316         assertEquals(0, data.getData().size());
317         CreateMaintenanceInput maint1 = new CreateMaintenanceInputBuilder().setId(NODEID1).setNodeId(NODEID1)
318                 .setActive(true).setDescription("desc").setObjectIdRef("ref").setProblem("problem")
319                 .setStart(DateAndTime.getDefaultInstance(TIME1)).setEnd(DateAndTime.getDefaultInstance(TIME3)).build();
320         CreateMaintenanceInput maint2 = new CreateMaintenanceInputBuilder().setId(NODEID2).setNodeId(NODEID2)
321                 .setActive(true).setDescription("desc").setObjectIdRef("ref").setProblem("problem2")
322                 .setStart(DateAndTime.getDefaultInstance(TIME1)).setEnd(DateAndTime.getDefaultInstance(TIME3)).build();
323         CreateMaintenanceInput maint3 = new CreateMaintenanceInputBuilder().setId(NODEID3).setNodeId(NODEID3)
324                 .setActive(true).setDescription("desc").setObjectIdRef("ref").setProblem("problem3")
325                 .setStart(DateAndTime.getDefaultInstance(TIME1)).setEnd(DateAndTime.getDefaultInstance(TIME3)).build();
326         try {
327             dbProvider.createMaintenance(maint1);
328             dbProvider.createMaintenance(maint2);
329             dbProvider.createMaintenance(maint3);
330         } catch (IOException e) {
331             e.printStackTrace();
332             fail("unable to create maintenance data");
333         }
334         data = dbProvider.readMaintenanceList(createInput(1, 20));
335         assertEquals(3, data.getData().size());
336
337     }
338
339     @Test
340     public void testMediatorserver() {
341         try {
342             dbClient.delete(new DeleteQuery(Entity.MediatorServer, null).toSql());
343         } catch (SQLException e) {
344             e.printStackTrace();
345             fail("problem clearing mediator server");
346         }
347         ReadMediatorServerListOutputBuilder data = dbProvider.readMediatorServerList(createInput(1, 20));
348         assertEquals(0, data.getData().size());
349         CreateMediatorServerInput mediator1 =
350                 new CreateMediatorServerInputBuilder().setName("server1").setUrl("http://10.20.30.40:7070").build();
351         CreateMediatorServerInput mediator2 =
352                 new CreateMediatorServerInputBuilder().setName("server2").setUrl("http://10.20.30.42:7070").build();
353         CreateMediatorServerInput mediator3 =
354                 new CreateMediatorServerInputBuilder().setName("server3").setUrl("http://10.20.30.43:7070").build();
355         CreateMediatorServerOutputBuilder output1 = null, output2 = null;
356         try {
357             output1 = dbProvider.createMediatorServer(mediator1);
358             output2 = dbProvider.createMediatorServer(mediator2);
359             dbProvider.createMediatorServer(mediator3);
360         } catch (IOException e) {
361             e.printStackTrace();
362             fail("problem creating mediator servers");
363         }
364         data = dbProvider.readMediatorServerList(createInput(1, 20));
365         assertEquals(3, data.getData().size());
366         UpdateMediatorServerInput update1 = new UpdateMediatorServerInputBuilder().setId(output1.getId())
367                 .setName("server1").setUrl("http://10.20.30.40:7071").build();
368         try {
369             dbProvider.updateMediatorServer(update1);
370         } catch (IOException e) {
371             e.printStackTrace();
372             fail("failed to update mediator server");
373         }
374         data = dbProvider.readMediatorServerList(createInput("id", output1.getId(), 1, 20));
375         assertEquals(1, data.getData().size());
376         assertEquals(output1.getId(), data.getData().get(0).getId());
377         assertEquals("server1", data.getData().get(0).getName());
378         assertEquals("http://10.20.30.40:7071", data.getData().get(0).getUrl());
379
380         DeleteMediatorServerInput delete2 = new DeleteMediatorServerInputBuilder().setId(output2.getId()).build();
381         try {
382             dbProvider.deleteMediatorServer(delete2);
383         } catch (IOException e) {
384             e.printStackTrace();
385             fail("unable to delete mediator server");
386         }
387         data = dbProvider.readMediatorServerList(createInput("id", output2.getId(), 1, 20));
388         assertEquals(0, data.getData().size());
389         data = dbProvider.readMediatorServerList(createInput(1, 20));
390         assertEquals(2, data.getData().size());
391     }
392
393     @Test
394     public void testNeConnection() {
395         try {
396             dbClient.delete(new DeleteQuery(Entity.NetworkelementConnection, null).toSql());
397         } catch (SQLException e) {
398             e.printStackTrace();
399             fail("problem clearing neconnection");
400         }
401         ReadNetworkElementConnectionListOutputBuilder data =
402                 dbProvider.readNetworkElementConnectionList(createInput(1, 20));
403         assertEquals(0, data.getData().size());
404         NetworkElementConnectionEntity ne1 = new NetworkElementConnectionBuilder().setNodeId(NODEID1)
405                 .setHost("10.20.30.50").setPort(Uint32.valueOf(8300)).setIsRequired(true).setUsername("user")
406                 .setPassword("passwd").build();
407         NetworkElementConnectionEntity ne2 = new NetworkElementConnectionBuilder().setNodeId(NODEID2)
408                 .setHost("10.20.30.55").setPort(Uint32.valueOf(8300)).setIsRequired(false).setUsername("user")
409                 .setPassword("passwd").setStatus(ConnectionLogStatus.Connecting).build();
410         try {
411             dbProvider.createNetworkElementConnection(ne1);
412             dbProvider.createNetworkElementConnection(ne2);
413         } catch (IOException e) {
414             e.printStackTrace();
415             fail("problem creating neconnection");
416         }
417         data = dbProvider.readNetworkElementConnectionList(createInput(1, 20));
418         assertEquals(2, data.getData().size());
419         NetworkElementConnectionEntity update1 = new NetworkElementConnectionBuilder()
420                 .setStatus(ConnectionLogStatus.Connected).setDeviceType(NetworkElementDeviceType.ORAN).build();
421         dbProvider.updateNetworkConnectionDeviceType(update1, NODEID1);
422         data = dbProvider.readNetworkElementConnectionList(createInput("node-id", NODEID1, 1, 20));
423         assertEquals(1, data.getData().size());
424         assertEquals(NetworkElementDeviceType.ORAN, data.getData().get(0).getDeviceType());
425         assertEquals(true, data.getData().get(0).isIsRequired());
426         UpdateNetworkElementConnectionInput update2 = new UpdateNetworkElementConnectionInputBuilder().setId(NODEID2)
427                 .setHost("10.20.55.44").setIsRequired(true).build();
428         try {
429             dbProvider.updateNetworkElementConnection(update2);
430         } catch (IOException e) {
431             e.printStackTrace();
432             fail("failed to update neconnection");
433         }
434         data = dbProvider.readNetworkElementConnectionList(createInput("node-id", NODEID2, 1, 20));
435         assertEquals(1, data.getData().size());
436         assertEquals("10.20.55.44", data.getData().get(0).getHost());
437         assertEquals(true, data.getData().get(0).isIsRequired());
438
439         ReadStatusOutputBuilder status = null;
440         try {
441             status = dbProvider.readStatus();
442         } catch (IOException e) {
443             e.printStackTrace();
444             fail("failed to read status");
445         }
446         assertEquals(1, status.getData().get(0).getNetworkElementConnections().getConnected().intValue());
447         assertEquals(1, status.getData().get(0).getNetworkElementConnections().getConnecting().intValue());
448         assertEquals(0, status.getData().get(0).getNetworkElementConnections().getDisconnected().intValue());
449         assertEquals(0, status.getData().get(0).getNetworkElementConnections().getMounted().intValue());
450         assertEquals(2, status.getData().get(0).getNetworkElementConnections().getTotal().intValue());
451         assertEquals(0, status.getData().get(0).getNetworkElementConnections().getUnableToConnect().intValue());
452         assertEquals(0, status.getData().get(0).getNetworkElementConnections().getUndefined().intValue());
453         assertEquals(0, status.getData().get(0).getNetworkElementConnections().getUnmounted().intValue());
454
455
456         DeleteNetworkElementConnectionInput delete1 =
457                 new DeleteNetworkElementConnectionInputBuilder().setId(NODEID1).build();
458         try {
459             dbProvider.deleteNetworkElementConnection(delete1);
460         } catch (IOException e) {
461             e.printStackTrace();
462             fail("failed to delete neconnection");
463         }
464         data = dbProvider.readNetworkElementConnectionList(createInput("node-id", NODEID1, 1, 20));
465         assertEquals(0, data.getData().size());
466         data = dbProvider.readNetworkElementConnectionList(createInput(1, 20));
467         assertEquals(1, data.getData().size());
468     }
469
470     @Test
471     public void testpm15m() {
472         try {
473             dbClient.delete(new DeleteQuery(Entity.Historicalperformance15min, null).toSql());
474         } catch (SQLException e) {
475             e.printStackTrace();
476             fail("problem clearing pmdata15m");
477         }
478         ReadPmdata15mListOutputBuilder data = dbProvider.readPmdata15mList(createInput(1, 20));
479         assertEquals(0, data.getData().size());
480         List<PmdataEntity> list = null;
481         try {
482             list = loadListFile("/pmdata15m.json", PmdataEntity.class);
483         } catch (JSONException | IOException e) {
484             e.printStackTrace();
485             fail("failed to load pmdata15m");
486         }
487         dbProvider.doWritePerformanceData(list);
488         data = dbProvider.readPmdata15mList(createInput(1, 20));
489         assertEquals(10, data.getData().size());
490         ReadPmdata15mLtpListOutputBuilder ltpdata = null;
491         try {
492             ltpdata = dbProvider.readPmdata15mLtpList(createInput("node-name","sim12600",1, 20));
493         } catch (IOException e) {
494             e.printStackTrace();
495             fail("failed to read pmdata15m ltp list");
496         }
497         assertEquals(3, ltpdata.getData().size());
498         ReadPmdata15mDeviceListOutputBuilder devicedata = null;
499         try {
500              devicedata = dbProvider.readPmdata15mDeviceList(createInput(1,20));
501         } catch (IOException e) {
502             e.printStackTrace();
503             fail("failed to read pmdata15m devices list");
504         }
505         assertEquals(1, devicedata.getData().size());
506     }
507
508     @Ignore
509     @Test
510     public void testpm24h() {
511         try {
512             dbClient.delete(new DeleteQuery(Entity.Historicalperformance24h, null).toSql());
513         } catch (SQLException e) {
514             e.printStackTrace();
515             fail("problem clearing pmdata24h");
516         }
517         ReadPmdata24hListOutputBuilder data = dbProvider.readPmdata24hList(createInput(1, 20));
518         assertEquals(0, data.getData().size());
519         List<PmdataEntity> list = null;
520         try {
521             list = loadListFile("/pmdata24h.json", PmdataEntity.class);
522         } catch (JSONException | IOException e) {
523             e.printStackTrace();
524             fail("failed to load pmdata24h");
525         }
526         dbProvider.doWritePerformanceData(list);
527     }
528
529     private static EntityInput createInput(int page, int size) {
530         return createInput(null, null, page, size);
531     }
532
533     private static <T> List<T> loadListFile(String filename, Class<T> clazz) throws JSONException, IOException {
534         List<T> list = new ArrayList<>();
535         JSONArray a = new JSONArray(loadFile(filename));
536         for (int i = 0; i < a.length(); i++) {
537             list.add(loadData(a.getJSONObject(i).toString(), clazz));
538         }
539         return list;
540     }
541
542     private static <T> T loadData(String content, Class<T> clazz) throws IOException {
543         YangToolsMapper mapper = new YangToolsMapper();
544         return mapper.readValue(content, clazz);
545     }
546
547     private static String loadFile(String filename) throws IOException {
548         return String.join("\n", IoUtils.readAllLines(TestMariaDataProvider.class.getResourceAsStream(filename)));
549     }
550
551     private static EntityInput createInput(String filter, String filterValue, int page, int size) {
552         ReadFaultcurrentListInputBuilder builder = new ReadFaultcurrentListInputBuilder().setPagination(
553                 new PaginationBuilder().setPage(Uint64.valueOf(page)).setSize(Uint32.valueOf(size)).build());
554         if (filter != null && filterValue != null) {
555             Filter f = new FilterBuilder().setProperty(filter).setFiltervalue(filterValue).build();
556             Map<FilterKey, Filter> fmap = new HashMap<>();
557             fmap.put(f.key(), f);
558             builder.setFilter(fmap);
559         }
560         return builder.build();
561     }
562
563 }