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