2 * ============LICENSE_START=======================================================
3 * ONAP : ccsdk features
4 * ================================================================================
5 * Copyright (C) 2020 highstreet technologies GmbH Intellectual Property.
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
14 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
24 package org.onap.ccsdk.features.sdnr.wt.dataprovider.dblib.test;
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;
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;
109 public class TestMariaDataProvider {
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;
130 public static void init() throws Exception {
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();
143 public static void close() {
146 } catch (ManagedProcessException e) {
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;
169 status = dbProvider.readStatus();
170 } catch (IOException e) {
172 fail("failed to read status");
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());
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());
188 public void testFaultlog() {
190 dbClient.delete(new DeleteQuery(Entity.Faultcurrent, null).toSql());
191 } catch (SQLException e) {
193 fail("problem clearing faultlog");
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());
210 public void testCMlog() {
211 ReadCmlogListOutputBuilder cmlogs = dbProvider.readCMLogList(createInput(1, 20));
212 assertEquals(0, cmlogs.getData().size());
214 CmlogEntity cm1 = new CmlogBuilder()
217 .setTimestamp(DateAndTime.getDefaultInstance(TIME1))
219 .setNotificationType(CmNotificationType.NotifyMOIChanges)
220 .setNotificationId("1")
221 .setSourceIndicator(CmSourceIndicator.MANAGEMENTOPERATION)
223 .setValue("pnf-registration: true")
225 CmlogEntity cm2 = new CmlogBuilder()
228 .setTimestamp(DateAndTime.getDefaultInstance(TIME2))
230 .setNotificationType(CmNotificationType.NotifyMOIChanges)
231 .setNotificationId("2")
232 .setSourceIndicator(CmSourceIndicator.UNKNOWN)
234 .setValue("pnf-registration: false")
237 dbProvider.writeCMLog(cm1);
238 dbProvider.writeCMLog(cm2);
239 cmlogs = dbProvider.readCMLogList(createInput("node-id", NODEID2, 1, 20));
240 assertEquals(2, cmlogs.getData().size());
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());
251 public void testConnectionlog() {
253 dbClient.delete(new DeleteQuery(Entity.Connectionlog, null).toSql());
254 } catch (SQLException e) {
256 fail("problem clearing faultlog");
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());
274 public void testEventlog() {
276 dbClient.delete(new DeleteQuery(Entity.Eventlog, null).toSql());
277 } catch (SQLException e) {
279 fail("problem clearing faultlog");
281 ReadEventlogListOutputBuilder logs = null;
283 logs = dbProvider.readEventlogList(createInput(1, 20));
284 } catch (IOException e) {
286 fail(e.getMessage());
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);
302 logs = dbProvider.readEventlogList(createInput(1, 20));
303 } catch (IOException e) {
305 fail(e.getMessage());
307 assertEquals(3, logs.getData().size());
311 public void testGuicutthrough() {
313 dbClient.delete(new DeleteQuery(Entity.Guicutthrough, null).toSql());
314 } catch (SQLException e) {
316 fail("problem clearing faultlog");
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());
332 public void testInventory() {
334 dbClient.delete(new DeleteQuery(Entity.Inventoryequipment, null).toSql());
335 } catch (SQLException e) {
337 fail("problem clearing faultlog");
339 ReadInventoryListOutputBuilder data = dbProvider.readInventoryList(createInput(1, 20));
340 assertEquals(0, data.getData().size());
341 List<Inventory> list = null;
343 list = loadListFile("/inventory.json", Inventory.class);
344 } catch (IOException e) {
346 fail("problem loading inventory data");
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());
357 public void testMaintenance() {
359 dbClient.delete(new DeleteQuery(Entity.Maintenancemode, null).toSql());
360 } catch (SQLException e) {
362 fail("problem clearing faultlog");
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();
376 dbProvider.createMaintenance(maint1);
377 dbProvider.createMaintenance(maint2);
378 dbProvider.createMaintenance(maint3);
379 } catch (IOException e) {
381 fail("unable to create maintenance data");
383 data = dbProvider.readMaintenanceList(createInput(1, 20));
384 assertEquals(3, data.getData().size());
389 public void testMediatorserver() {
391 dbClient.delete(new DeleteQuery(Entity.MediatorServer, null).toSql());
392 } catch (SQLException e) {
394 fail("problem clearing mediator server");
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;
406 output1 = dbProvider.createMediatorServer(mediator1);
407 output2 = dbProvider.createMediatorServer(mediator2);
408 dbProvider.createMediatorServer(mediator3);
409 } catch (IOException e) {
411 fail("problem creating mediator servers");
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();
418 dbProvider.updateMediatorServer(update1);
419 } catch (IOException e) {
421 fail("failed to update mediator server");
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());
429 DeleteMediatorServerInput delete2 = new DeleteMediatorServerInputBuilder().setId(output2.getId()).build();
431 dbProvider.deleteMediatorServer(delete2);
432 } catch (IOException e) {
434 fail("unable to delete mediator server");
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());
443 public void testNeConnection() {
445 dbClient.delete(new DeleteQuery(Entity.NetworkelementConnection, null).toSql());
446 } catch (SQLException e) {
448 fail("problem clearing neconnection");
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();
460 dbProvider.createNetworkElementConnection(ne1);
461 dbProvider.createNetworkElementConnection(ne2);
462 } catch (IOException e) {
464 fail("problem creating neconnection");
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();
478 dbProvider.updateNetworkElementConnection(update2);
479 } catch (IOException e) {
481 fail("failed to update neconnection");
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());
488 ReadStatusOutputBuilder status = null;
490 status = dbProvider.readStatus();
491 } catch (IOException e) {
493 fail("failed to read status");
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());
505 DeleteNetworkElementConnectionInput delete1 =
506 new DeleteNetworkElementConnectionInputBuilder().setId(NODEID1).build();
508 dbProvider.deleteNetworkElementConnection(delete1);
509 } catch (IOException e) {
511 fail("failed to delete neconnection");
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());
520 public void testpm15m() {
522 dbClient.delete(new DeleteQuery(Entity.Historicalperformance15min, null).toSql());
523 } catch (SQLException e) {
525 fail("problem clearing pmdata15m");
527 ReadPmdata15mListOutputBuilder data = dbProvider.readPmdata15mList(createInput(1, 20));
528 assertEquals(0, data.getData().size());
529 List<PmdataEntity> list = null;
531 list = loadListFile("/pmdata15m.json", PmdataEntity.class);
532 } catch (JSONException | IOException e) {
534 fail("failed to load pmdata15m");
536 dbProvider.doWritePerformanceData(list);
537 data = dbProvider.readPmdata15mList(createInput(1, 20));
538 assertEquals(10, data.getData().size());
539 ReadPmdata15mLtpListOutputBuilder ltpdata = null;
541 ltpdata = dbProvider.readPmdata15mLtpList(createInput("node-name","sim12600",1, 20));
542 } catch (IOException e) {
544 fail("failed to read pmdata15m ltp list");
546 assertEquals(3, ltpdata.getData().size());
547 ReadPmdata15mDeviceListOutputBuilder devicedata = null;
549 devicedata = dbProvider.readPmdata15mDeviceList(createInput(1,20));
550 } catch (IOException e) {
552 fail("failed to read pmdata15m devices list");
554 assertEquals(1, devicedata.getData().size());
559 public void testpm24h() {
561 dbClient.delete(new DeleteQuery(Entity.Historicalperformance24h, null).toSql());
562 } catch (SQLException e) {
564 fail("problem clearing pmdata24h");
566 ReadPmdata24hListOutputBuilder data = dbProvider.readPmdata24hList(createInput(1, 20));
567 assertEquals(0, data.getData().size());
568 List<PmdataEntity> list = null;
570 list = loadListFile("/pmdata24h.json", PmdataEntity.class);
571 } catch (JSONException | IOException e) {
573 fail("failed to load pmdata24h");
575 dbProvider.doWritePerformanceData(list);
578 private static EntityInput createInput(int page, int size) {
579 return createInput(null, null, page, size);
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));
591 private static <T> T loadData(String content, Class<T> clazz) throws IOException {
592 YangToolsMapper mapper = new YangToolsMapper();
593 return mapper.readValue(content, clazz);
596 private static String loadFile(String filename) throws IOException {
597 return String.join("\n", IoUtils.readAllLines(TestMariaDataProvider.class.getResourceAsStream(filename)));
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);
609 return builder.build();