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.assertNotNull;
28 import static org.junit.Assert.assertTrue;
29 import static org.junit.Assert.fail;
30 import java.io.IOException;
31 import java.sql.SQLException;
32 import java.util.ArrayList;
33 import java.util.HashMap;
34 import java.util.List;
36 import java.util.concurrent.TimeUnit;
37 import org.json.JSONArray;
38 import org.json.JSONException;
39 import org.json.JSONObject;
40 import org.junit.AfterClass;
41 import org.junit.BeforeClass;
42 import org.junit.Test;
43 import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.SqlDBClient;
44 import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.data.SqlDBDataProvider;
45 import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.database.SqlDBReaderWriter;
46 import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.query.DeleteQuery;
47 import org.onap.ccsdk.features.sdnr.wt.dataprovider.dblib.test.util.MariaDBTestBase;
48 import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.HtDatabaseMaintenance;
49 import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.HtUserdataManager;
50 import org.onap.ccsdk.features.sdnr.wt.yang.mapper.YangToolsMapper;
51 import org.opendaylight.netconf.shaded.sshd.common.util.io.IoUtils;
52 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DateAndTime;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.CmNotificationType;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.CmSourceIndicator;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.CmlogBuilder;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.CmlogEntity;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ConnectionLogStatus;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ConnectionlogBuilder;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ConnectionlogEntity;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.CreateMaintenanceInput;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.CreateMaintenanceInputBuilder;
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.CreateMediatorServerInput;
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.CreateMediatorServerInputBuilder;
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.CreateMediatorServerOutputBuilder;
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.CreateNetworkElementConnectionOutputBuilder;
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.DeleteMaintenanceInput;
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.DeleteMaintenanceInputBuilder;
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.DeleteMediatorServerInput;
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.DeleteMediatorServerInputBuilder;
70 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.DeleteNetworkElementConnectionInput;
71 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.DeleteNetworkElementConnectionInputBuilder;
72 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Entity;
73 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.EntityInput;
74 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.EventlogBuilder;
75 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.EventlogEntity;
76 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.FaultcurrentBuilder;
77 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.FaultcurrentEntity;
78 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.FaultlogBuilder;
79 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.FaultlogEntity;
80 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Guicutthrough;
81 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.GuicutthroughBuilder;
82 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Inventory;
83 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.MaintenanceEntity;
84 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.NetworkElementConnectionBuilder;
85 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.NetworkElementConnectionEntity;
86 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.NetworkElementDeviceType;
87 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.PmdataEntity;
88 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadCmlogListOutputBuilder;
89 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadConnectionlogListOutputBuilder;
90 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadEventlogListOutputBuilder;
91 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadFaultcurrentListInputBuilder;
92 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadFaultcurrentListOutputBuilder;
93 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadFaultlogListOutputBuilder;
94 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadGuiCutThroughEntryOutputBuilder;
95 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadInventoryListOutputBuilder;
96 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadMaintenanceListOutputBuilder;
97 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadMediatorServerListOutputBuilder;
98 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadNetworkElementConnectionListOutputBuilder;
99 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadPmdata15mDeviceListOutputBuilder;
100 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadPmdata15mListOutputBuilder;
101 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadPmdata15mLtpListOutputBuilder;
102 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadPmdata24hDeviceListOutputBuilder;
103 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadPmdata24hListOutputBuilder;
104 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadPmdata24hLtpListOutputBuilder;
105 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadStatusOutputBuilder;
106 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.SeverityType;
107 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.SourceType;
108 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.UpdateMaintenanceInput;
109 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.UpdateMaintenanceInputBuilder;
110 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.UpdateMediatorServerInput;
111 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.UpdateMediatorServerInputBuilder;
112 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.UpdateNetworkElementConnectionInput;
113 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.UpdateNetworkElementConnectionInputBuilder;
114 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.entity.input.Filter;
115 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.entity.input.FilterBuilder;
116 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.entity.input.FilterKey;
117 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.entity.input.PaginationBuilder;
118 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.network.element.connection.list.output.Data;
119 import org.opendaylight.yangtools.yang.common.Uint32;
120 import org.opendaylight.yangtools.yang.common.Uint64;
121 import ch.vorburger.exec.ManagedProcessException;
123 public class TestMariaDataProvider {
126 private static final String NODEID1 = "node1";
127 private static final String NODEID2 = "node2";
128 private static final String NODEID3 = "node3";
129 private static final String NODEID4 = "node4";
130 private static final String NODEID5 = "node5";
131 private static final String PROBLEM1 = "problem1";
132 private static final String TIME1 = "2021-05-25T05:12:55.0Z";
133 private static final String TIME2 = "2021-05-25T05:12:56.0Z";
134 private static final String TIME3 = "2021-05-25T05:12:57.0Z";
135 private static final String PROBLEM2 = "problem2";
136 private static final String URI1 = "http://localhost:8181";
137 private static final String URI2 = "http://localhost:8181";
138 private static final String URI3 = "http://localhost:8181";
139 private static final String PATH = "https://samsung.com/3GPP/simulation/network-function/ves";
140 private static final String USERNAME = "admin";
141 private static MariaDBTestBase testBase;
142 private static SqlDBDataProvider dbProvider;
143 private static SqlDBClient dbClient;
144 private static String CONTROLLERID;
147 public static void init() throws Exception {
149 testBase = new MariaDBTestBase();
150 dbProvider = testBase.getDbProvider();
151 dbProvider.waitForDatabaseReady(30, TimeUnit.SECONDS);
152 dbClient = testBase.createRawClient();
153 MariaDBTestBase.testCreateTableStructure(dbClient);
154 dbProvider.setControllerId();
155 CONTROLLERID = dbProvider.getControllerId();
160 public static void close() {
163 } catch (ManagedProcessException e) {
169 public void testFaultcurrent() {
170 dbProvider.clearFaultsCurrentOfNode(NODEID1);
171 ReadFaultcurrentListOutputBuilder faultCurrents =
172 dbProvider.readFaultCurrentList(createInput("node-id", NODEID1, 1, 20));
173 assertEquals(0, faultCurrents.getData().size());
174 FaultcurrentEntity faultCurrent1 = new FaultcurrentBuilder().setNodeId(NODEID1).setCounter(1).setObjectId("obj")
175 .setProblem(PROBLEM1).setTimestamp(DateAndTime.getDefaultInstance(TIME1))
176 .setSeverity(SeverityType.Major).setId(String.format("%s/%s", NODEID1, PROBLEM1)).build();
177 dbProvider.updateFaultCurrent(faultCurrent1);
178 FaultcurrentEntity faultCurrent2 = new FaultcurrentBuilder().setNodeId(NODEID1).setCounter(1).setObjectId("obj")
179 .setProblem(PROBLEM2).setTimestamp(DateAndTime.getDefaultInstance(TIME1))
180 .setSeverity(SeverityType.Minor).setId(String.format("%s/%s", NODEID1, PROBLEM2)).build();
181 dbProvider.updateFaultCurrent(faultCurrent2);
182 faultCurrents = dbProvider.readFaultCurrentList(createInput("node-id", NODEID1, 1, 20));
183 assertEquals(2, faultCurrents.getData().size());
184 ReadStatusOutputBuilder status = null;
186 EntityInput input=null;
187 status = dbProvider.readStatus(input);
188 } catch (IOException e) {
190 fail("failed to read status");
192 assertEquals(0, status.getData().get(0).getFaults().getCriticals().intValue());
193 assertEquals(1, status.getData().get(0).getFaults().getMajors().intValue());
194 assertEquals(1, status.getData().get(0).getFaults().getMinors().intValue());
195 assertEquals(0, status.getData().get(0).getFaults().getWarnings().intValue());
197 List<String> nodeList = dbProvider.getAllNodesWithCurrentAlarms();
198 assertTrue(nodeList.contains(NODEID1));
199 assertEquals(1,nodeList.size());
201 faultCurrent1 = new FaultcurrentBuilder().setNodeId(NODEID1).setCounter(1).setObjectId("obj")
202 .setProblem(PROBLEM1).setTimestamp(DateAndTime.getDefaultInstance(TIME1))
203 .setSeverity(SeverityType.NonAlarmed).setId(String.format("%s/%s", NODEID1, PROBLEM1)).build();
204 dbProvider.updateFaultCurrent(faultCurrent1);
205 faultCurrents = dbProvider.readFaultCurrentList(createInput("node-id", NODEID1, 1, 20));
206 assertEquals(1, faultCurrents.getData().size());
212 public void testSerializeDeserialize() {
215 CreateNetworkElementConnectionOutputBuilder necon = dbProvider.createNetworkElementConnection(
216 new NetworkElementConnectionBuilder().setNodeId(NODEID1).setIsRequired(Boolean.TRUE).build());
217 List<Data> netestList =
218 dbProvider.readNetworkElementConnectionList(createInput("node-id", NODEID1, 1, 20)).getData();
220 assertNotNull(necon);
221 assertEquals(1, netestList.size());
222 assertTrue(netestList.get(0).getIsRequired());
223 SqlDBReaderWriter<Data> dbrw = new SqlDBReaderWriter<>(dbClient, Entity.NetworkelementConnection,
224 MariaDBTestBase.SUFFIX,
227 Data e = dbrw.read(NODEID1);
230 } catch (IOException e) {
232 fail(e.getMessage());
237 public void testFaultlog() {
239 dbClient.delete(new DeleteQuery(Entity.Faultcurrent, null).toSql());
240 } catch (SQLException e) {
242 fail("problem clearing faultlog");
244 ReadFaultlogListOutputBuilder faultlogs = dbProvider.readFaultLogList(createInput(1, 20));
245 assertEquals(0, faultlogs.getData().size());
246 FaultlogEntity fault1 = new FaultlogBuilder().setCounter(1).setNodeId(NODEID1).setObjectId("obj")
247 .setProblem(PROBLEM1).setSeverity(SeverityType.Major).setSourceType(SourceType.Netconf)
248 .setTimestamp(DateAndTime.getDefaultInstance(TIME1)).build();
249 dbProvider.writeFaultLog(fault1);
250 FaultlogEntity fault2 = new FaultlogBuilder().setCounter(2).setNodeId(NODEID1).setObjectId("obj")
251 .setProblem(PROBLEM2).setSeverity(SeverityType.Major).setSourceType(SourceType.Netconf)
252 .setTimestamp(DateAndTime.getDefaultInstance(TIME1)).build();
253 dbProvider.writeFaultLog(fault2);
254 faultlogs = dbProvider.readFaultLogList(createInput("node-id", NODEID1, 1, 20));
255 assertEquals(2, faultlogs.getData().size());
260 public void testCMlog() {
261 ReadCmlogListOutputBuilder cmlogs = dbProvider.readCMLogList(createInput(1, 20));
262 assertEquals(0, cmlogs.getData().size());
265 new CmlogBuilder().setNodeId(NODEID2).setCounter(1).setTimestamp(DateAndTime.getDefaultInstance(TIME1))
266 .setObjectId("obj").setNotificationType(CmNotificationType.NotifyMOIChanges)
267 .setNotificationId("1").setSourceIndicator(CmSourceIndicator.MANAGEMENTOPERATION).setPath(PATH)
268 .setValue("pnf-registration: true").build();
270 new CmlogBuilder().setNodeId(NODEID2).setCounter(2).setTimestamp(DateAndTime.getDefaultInstance(TIME2))
271 .setObjectId("obj").setNotificationType(CmNotificationType.NotifyMOIChanges)
272 .setNotificationId("2").setSourceIndicator(CmSourceIndicator.UNKNOWN).setPath(PATH)
273 .setValue("pnf-registration: false").build();
275 dbProvider.writeCMLog(cm1);
276 dbProvider.writeCMLog(cm2);
277 cmlogs = dbProvider.readCMLogList(createInput("node-id", NODEID2, 1, 20));
278 assertEquals(2, cmlogs.getData().size());
280 List<CmlogEntity> cmLogEntityList = List.of(cm1, cm2);
281 assertEquals("node2", cmLogEntityList.get(0).getNodeId());
282 assertEquals("obj", cmLogEntityList.get(0).getObjectId());
283 assertEquals(CmNotificationType.NotifyMOIChanges, cmLogEntityList.get(0).getNotificationType());
284 assertEquals("2", cmLogEntityList.get(1).getNotificationId());
289 public void testConnectionlog() {
291 dbClient.delete(new DeleteQuery(Entity.Connectionlog, null).toSql());
292 } catch (SQLException e) {
294 fail("problem clearing faultlog");
296 ReadConnectionlogListOutputBuilder logs = dbProvider.readConnectionlogList(createInput(1, 20));
297 assertEquals(0, logs.getData().size());
298 ConnectionlogEntity log1 = new ConnectionlogBuilder().setNodeId(NODEID1)
299 .setTimestamp(DateAndTime.getDefaultInstance(TIME1)).setStatus(ConnectionLogStatus.Mounted).build();
300 dbProvider.writeConnectionLog(log1);
301 ConnectionlogEntity log2 = new ConnectionlogBuilder().setNodeId(NODEID1)
302 .setTimestamp(DateAndTime.getDefaultInstance(TIME2)).setStatus(ConnectionLogStatus.Connecting).build();
303 dbProvider.writeConnectionLog(log2);
304 ConnectionlogEntity log3 = new ConnectionlogBuilder().setNodeId(NODEID1)
305 .setTimestamp(DateAndTime.getDefaultInstance(TIME3)).setStatus(ConnectionLogStatus.Connected).build();
306 dbProvider.writeConnectionLog(log3);
307 logs = dbProvider.readConnectionlogList(createInput(1, 20));
308 assertEquals(3, logs.getData().size());
312 public void testEventlog() {
314 dbClient.delete(new DeleteQuery(Entity.Eventlog, null).toSql());
315 } catch (SQLException e) {
317 fail("problem clearing faultlog");
319 ReadEventlogListOutputBuilder logs = null;
321 logs = dbProvider.readEventlogList(createInput(1, 20));
322 } catch (IOException e) {
324 fail(e.getMessage());
326 assertEquals(0, logs.getData().size());
327 EventlogEntity log1 = new EventlogBuilder().setCounter(1).setNodeId(NODEID1).setObjectId("obj")
328 .setTimestamp(DateAndTime.getDefaultInstance(TIME1)).setAttributeName("attr").setNewValue("new-value")
329 .setSourceType(SourceType.Netconf).build();
330 dbProvider.writeEventLog(log1);
331 EventlogEntity log2 = new EventlogBuilder().setCounter(1).setNodeId(NODEID1).setObjectId("obj")
332 .setTimestamp(DateAndTime.getDefaultInstance(TIME2)).setAttributeName("attr").setNewValue("new-value2")
333 .setSourceType(SourceType.Netconf).build();
334 dbProvider.writeEventLog(log2);
335 EventlogEntity log3 = new EventlogBuilder().setCounter(1).setNodeId(NODEID1).setObjectId("obj")
336 .setTimestamp(DateAndTime.getDefaultInstance(TIME3)).setAttributeName("attr").setNewValue("new-value3")
337 .setSourceType(SourceType.Netconf).build();
338 dbProvider.writeEventLog(log3);
340 logs = dbProvider.readEventlogList(createInput(1, 20));
341 } catch (IOException e) {
343 fail(e.getMessage());
345 assertEquals(3, logs.getData().size());
349 public void testGuicutthrough() {
351 dbClient.delete(new DeleteQuery(Entity.Guicutthrough, null).toSql());
352 } catch (SQLException e) {
354 fail("problem clearing faultlog");
356 Guicutthrough gc1 = new GuicutthroughBuilder().setName(NODEID1).setWeburi(URI1).build();
357 dbProvider.writeGuiCutThroughData(gc1, NODEID1);
358 Guicutthrough gc2 = new GuicutthroughBuilder().setName(NODEID2).setWeburi(URI2).build();
359 dbProvider.writeGuiCutThroughData(gc2, NODEID2);
360 Guicutthrough gc3 = new GuicutthroughBuilder().setName(NODEID3).setWeburi(URI3).build();
361 dbProvider.writeGuiCutThroughData(gc3, NODEID3);
362 ReadGuiCutThroughEntryOutputBuilder data = dbProvider.readGuiCutThroughEntry(createInput(1, 20));
363 assertEquals(3, data.getData().size());
364 data = dbProvider.readGuiCutThroughEntry(createInput("name", NODEID1, 1, 20));
365 assertEquals(1, data.getData().size());
370 public void testInventory() {
372 dbClient.delete(new DeleteQuery(Entity.Inventoryequipment, null).toSql());
373 } catch (SQLException e) {
375 fail("problem clearing faultlog");
377 ReadInventoryListOutputBuilder data = dbProvider.readInventoryList(createInput(1, 20));
378 assertEquals(0, data.getData().size());
379 List<Inventory> list = null;
381 list = loadListFile("/inventory.json", Inventory.class);
382 } catch (IOException e) {
384 fail("problem loading inventory data");
387 dbProvider.writeInventory(NODEID1, list);
388 data = dbProvider.readInventoryList(createInput(1, 50));
389 assertEquals(22, data.getData().size());
390 data = dbProvider.readInventoryList(createInput("tree-level", "0", 1, 50));
391 assertEquals(5, data.getData().size());
395 public void testMaintenance() {
397 dbClient.delete(new DeleteQuery(Entity.Maintenancemode, null).toSql());
398 } catch (SQLException e) {
400 fail("problem clearing faultlog");
402 ReadMaintenanceListOutputBuilder data = dbProvider.readMaintenanceList(createInput(1, 20));
403 assertEquals(0, data.getData().size());
404 CreateMaintenanceInput maint1 = new CreateMaintenanceInputBuilder().setId(NODEID1).setNodeId(NODEID1)
405 .setActive(true).setDescription("desc").setObjectIdRef("ref").setProblem("problem")
406 .setStart(DateAndTime.getDefaultInstance(TIME1)).setEnd(DateAndTime.getDefaultInstance(TIME3)).build();
407 CreateMaintenanceInput maint2 = new CreateMaintenanceInputBuilder().setId(NODEID2).setNodeId(NODEID2)
408 .setActive(true).setDescription("desc").setObjectIdRef("ref").setProblem("problem2")
409 .setStart(DateAndTime.getDefaultInstance(TIME1)).setEnd(DateAndTime.getDefaultInstance(TIME3)).build();
410 CreateMaintenanceInput maint3 = new CreateMaintenanceInputBuilder().setId(NODEID3).setNodeId(NODEID3)
411 .setActive(true).setDescription("desc").setObjectIdRef("ref").setProblem("problem3")
412 .setStart(DateAndTime.getDefaultInstance(TIME1)).setEnd(DateAndTime.getDefaultInstance(TIME3)).build();
414 dbProvider.createMaintenance(maint1);
415 dbProvider.createMaintenance(maint2);
416 dbProvider.createMaintenance(maint3);
417 } catch (IOException e) {
419 fail("unable to create maintenance data");
421 data = dbProvider.readMaintenanceList(createInput(1, 20));
422 assertEquals(3, data.getData().size());
424 UpdateMaintenanceInput update1 =
425 new UpdateMaintenanceInputBuilder().setId(NODEID1).setNodeId(NODEID1).setActive(false).build();
427 dbProvider.updateMaintenance(update1);
428 } catch (IOException e) {
430 fail("unable to update maintenance data");
432 data = dbProvider.readMaintenanceList(createInput("active","false",1, 20));
433 assertEquals(1, data.getData().size());
434 DeleteMaintenanceInput delete1 = new DeleteMaintenanceInputBuilder().setId(NODEID1).build();
436 dbProvider.deleteMaintenance(delete1);
437 } catch (IOException e) {
439 fail("unable to delete maintenance data");
441 data = dbProvider.readMaintenanceList(createInput(1, 20));
442 assertEquals(2, data.getData().size());
444 dbClient.delete(new DeleteQuery(Entity.Maintenancemode, null).toSql());
445 } catch (SQLException e) {
447 fail("problem clearing faultlog");
449 final String nodeId = "maint_node1";
450 HtDatabaseMaintenance maintenanceService = dbProvider.getHtDatabaseMaintenance();
451 MaintenanceEntity e = maintenanceService.createIfNotExists(nodeId);
453 assertEquals(nodeId,e.getNodeId());
454 MaintenanceEntity e2 = new CreateMaintenanceInputBuilder(e).setActive(true).build();
455 e = maintenanceService.setMaintenance(e2);
457 assertEquals(nodeId,e.getNodeId());
458 assertTrue(e.getActive());
459 maintenanceService.deleteIfNotRequired(nodeId);
460 data = dbProvider.readMaintenanceList(createInput("node-id",nodeId,1, 20));
461 assertEquals(0, data.getData().size());
466 public void testMediatorserver() {
468 dbClient.delete(new DeleteQuery(Entity.MediatorServer, null).toSql());
469 } catch (SQLException e) {
471 fail("problem clearing mediator server");
473 ReadMediatorServerListOutputBuilder data = dbProvider.readMediatorServerList(createInput(1, 20));
474 assertEquals(0, data.getData().size());
475 CreateMediatorServerInput mediator1 =
476 new CreateMediatorServerInputBuilder().setName("server1").setUrl("http://10.20.30.40:7070").build();
477 CreateMediatorServerInput mediator2 =
478 new CreateMediatorServerInputBuilder().setName("server2").setUrl("http://10.20.30.42:7070").build();
479 CreateMediatorServerInput mediator3 =
480 new CreateMediatorServerInputBuilder().setName("server3").setUrl("http://10.20.30.43:7070").build();
481 CreateMediatorServerOutputBuilder output1 = null, output2 = null;
483 output1 = dbProvider.createMediatorServer(mediator1);
484 output2 = dbProvider.createMediatorServer(mediator2);
485 dbProvider.createMediatorServer(mediator3);
486 } catch (IOException e) {
488 fail("problem creating mediator servers");
490 data = dbProvider.readMediatorServerList(createInput(1, 20));
491 assertEquals(3, data.getData().size());
492 UpdateMediatorServerInput update1 = new UpdateMediatorServerInputBuilder().setId(output1.getId())
493 .setName("server1").setUrl("http://10.20.30.40:7071").build();
495 dbProvider.updateMediatorServer(update1);
496 } catch (IOException e) {
498 fail("failed to update mediator server");
500 data = dbProvider.readMediatorServerList(createInput("id", output1.getId(), 1, 20));
501 assertEquals(1, data.getData().size());
502 assertEquals(output1.getId(), data.getData().get(0).getId());
503 assertEquals("server1", data.getData().get(0).getName());
504 assertEquals("http://10.20.30.40:7071", data.getData().get(0).getUrl());
506 DeleteMediatorServerInput delete2 = new DeleteMediatorServerInputBuilder().setId(output2.getId()).build();
508 dbProvider.deleteMediatorServer(delete2);
509 } catch (IOException e) {
511 fail("unable to delete mediator server");
513 data = dbProvider.readMediatorServerList(createInput("id", output2.getId(), 1, 20));
514 assertEquals(0, data.getData().size());
515 data = dbProvider.readMediatorServerList(createInput(1, 20));
516 assertEquals(2, data.getData().size());
520 public void testNeConnection() {
522 dbClient.delete(new DeleteQuery(Entity.NetworkelementConnection, null).toSql());
523 } catch (SQLException e) {
525 fail("problem clearing neconnection");
527 ReadNetworkElementConnectionListOutputBuilder data =
528 dbProvider.readNetworkElementConnectionList(createInput(1, 20));
529 assertEquals(0, data.getData().size());
530 NetworkElementConnectionEntity ne1 = new NetworkElementConnectionBuilder().setNodeId(NODEID1)
531 .setHost("10.20.30.50").setPort(Uint32.valueOf(8300)).setIsRequired(true).setUsername("user")
532 .setPassword("passwd").build();
533 NetworkElementConnectionEntity ne2 = new NetworkElementConnectionBuilder().setNodeId(NODEID2)
534 .setHost("10.20.30.55").setPort(Uint32.valueOf(8300)).setIsRequired(false).setUsername("user")
535 .setPassword("passwd").setStatus(ConnectionLogStatus.Connecting).build();
536 NetworkElementConnectionEntity ne3 = new NetworkElementConnectionBuilder().setNodeId(NODEID3)
537 .setHost("10.20.30.55").setPort(Uint32.valueOf(8300)).setIsRequired(false).setUsername("user")
538 .setPassword("passwd").setStatus(ConnectionLogStatus.Connecting).build();
540 dbProvider.createNetworkElementConnection(ne1);
541 dbProvider.createNetworkElementConnection(ne2);
542 dbProvider.updateNetworkConnection22(ne3, NODEID3);
543 } catch (IOException e) {
545 fail("problem creating neconnection");
547 data = dbProvider.readNetworkElementConnectionList(createInput(1, 20));
548 assertEquals(3, data.getData().size());
549 NetworkElementConnectionEntity update1 = new NetworkElementConnectionBuilder()
550 .setStatus(ConnectionLogStatus.Connected).setDeviceType(NetworkElementDeviceType.ORAN).build();
551 dbProvider.updateNetworkConnectionDeviceType(update1, NODEID1);
552 data = dbProvider.readNetworkElementConnectionList(createInput("node-id", NODEID1, 1, 20));
553 assertEquals(1, data.getData().size());
554 assertEquals(NetworkElementDeviceType.ORAN, data.getData().get(0).getDeviceType());
555 assertEquals(true, data.getData().get(0).getIsRequired());
556 UpdateNetworkElementConnectionInput update2 = new UpdateNetworkElementConnectionInputBuilder().setId(NODEID2)
557 .setHost("10.20.55.44").setIsRequired(true).build();
559 dbProvider.updateNetworkElementConnection(update2);
560 } catch (IOException e) {
562 fail("failed to update neconnection");
564 data = dbProvider.readNetworkElementConnectionList(createInput("node-id", NODEID2, 1, 20));
565 assertEquals(1, data.getData().size());
566 assertEquals("10.20.55.44", data.getData().get(0).getHost());
567 assertEquals(true, data.getData().get(0).getIsRequired());
569 ReadStatusOutputBuilder status = null;
571 EntityInput input=null;
572 status = dbProvider.readStatus(input);
573 } catch (IOException e) {
575 fail("failed to read status");
577 assertEquals(1, status.getData().get(0).getNetworkElementConnections().getConnected().intValue());
578 assertEquals(2, status.getData().get(0).getNetworkElementConnections().getConnecting().intValue());
579 assertEquals(0, status.getData().get(0).getNetworkElementConnections().getDisconnected().intValue());
580 assertEquals(0, status.getData().get(0).getNetworkElementConnections().getMounted().intValue());
581 assertEquals(3, status.getData().get(0).getNetworkElementConnections().getTotal().intValue());
582 assertEquals(0, status.getData().get(0).getNetworkElementConnections().getUnableToConnect().intValue());
583 assertEquals(0, status.getData().get(0).getNetworkElementConnections().getUndefined().intValue());
584 assertEquals(0, status.getData().get(0).getNetworkElementConnections().getUnmounted().intValue());
587 DeleteNetworkElementConnectionInput delete1 =
588 new DeleteNetworkElementConnectionInputBuilder().setId(NODEID1).build();
590 dbProvider.deleteNetworkElementConnection(delete1);
591 } catch (IOException e) {
593 fail("failed to delete neconnection");
595 data = dbProvider.readNetworkElementConnectionList(createInput("node-id", NODEID1, 1, 20));
596 assertEquals(0, data.getData().size());
597 data = dbProvider.readNetworkElementConnectionList(createInput(1, 20));
598 assertEquals(2, data.getData().size());
603 public void testUserdata() {
604 HtUserdataManager mgr = dbProvider.getUserManager();
605 String userdata = mgr.getUserdata(USERNAME);
606 assertEquals("{}",userdata);
607 JSONObject o = new JSONObject();
608 o.put("key1", false);
609 o.put("key2","value2");
610 boolean result = mgr.setUserdata(USERNAME, o.toString());
612 userdata = mgr.getUserdata(USERNAME);
613 o = new JSONObject(userdata);
614 assertEquals(false,o.getBoolean("key1"));
615 assertEquals("value2",o.getString("key2"));
616 o = new JSONObject();
617 o.put("enabled", true);
618 o.put("name","abcdef");
619 result = mgr.setUserdata(USERNAME,"app1",o.toString());
621 userdata = mgr.getUserdata(USERNAME);
622 o = new JSONObject(userdata);
623 assertEquals(false,o.getBoolean("key1"));
624 assertEquals("value2",o.getString("key2"));
625 JSONObject app = o.getJSONObject("app1");
627 assertEquals(true, app.getBoolean("enabled"));
628 assertEquals("abcdef", app.getString("name"));
632 public void testpm15m() {
634 dbClient.delete(new DeleteQuery(Entity.Historicalperformance15min, null).toSql());
635 } catch (SQLException e) {
637 fail("problem clearing pmdata15m");
639 ReadPmdata15mListOutputBuilder data = dbProvider.readPmdata15mList(createInput(1, 20));
640 assertEquals(0, data.getData().size());
641 List<PmdataEntity> list = null;
643 list = loadListFile("/pmdata15m.json", PmdataEntity.class);
644 } catch (JSONException | IOException e) {
646 fail("failed to load pmdata15m");
648 dbProvider.doWritePerformanceData(list);
649 data = dbProvider.readPmdata15mList(createInput(1, 20));
650 assertEquals(10, data.getData().size());
651 ReadPmdata15mLtpListOutputBuilder ltpdata = null;
653 ltpdata = dbProvider.readPmdata15mLtpList(createInput("node-name", "sim12600", 1, 20));
654 } catch (IOException e) {
656 fail("failed to read pmdata15m ltp list");
658 assertEquals(3, ltpdata.getData().size());
659 ReadPmdata15mDeviceListOutputBuilder devicedata = null;
661 devicedata = dbProvider.readPmdata15mDeviceList(createInput(1, 20));
662 } catch (IOException e) {
664 fail("failed to read pmdata15m devices list");
666 assertEquals(1, devicedata.getData().size());
670 public void testpm24h() {
672 dbClient.delete(new DeleteQuery(Entity.Historicalperformance24h, null).toSql());
673 } catch (SQLException e) {
675 fail("problem clearing pmdata24h");
677 ReadPmdata24hListOutputBuilder data = dbProvider.readPmdata24hList(createInput(1, 20));
678 assertEquals(0, data.getData().size());
679 List<PmdataEntity> list = null;
681 list = loadListFile("/pmdata24h.json", PmdataEntity.class);
682 } catch (JSONException | IOException e) {
684 fail("failed to load pmdata24h");
686 dbProvider.doWritePerformanceData(list);
687 data = dbProvider.readPmdata24hList(createInput(1, 20));
688 assertEquals(1, data.getData().size());
689 ReadPmdata24hLtpListOutputBuilder ltpdata = null;
691 ltpdata = dbProvider.readPmdata24hLtpList(createInput("node-name", "test", 1, 20));
692 } catch (IOException e) {
694 fail("failed to read pmdata15m ltp list");
696 assertEquals(1, ltpdata.getData().size());
697 ReadPmdata24hDeviceListOutputBuilder devicedata = null;
699 devicedata = dbProvider.readPmdata24hDeviceList(createInput(1, 20));
700 } catch (IOException e) {
702 fail("failed to read pmdata15m devices list");
704 assertEquals(1, devicedata.getData().size());
707 static EntityInput createInput(int page, int size) {
708 return createInput(null, null, page, size);
711 private static <T> List<T> loadListFile(String filename, Class<T> clazz) throws JSONException, IOException {
712 List<T> list = new ArrayList<>();
713 JSONArray a = new JSONArray(loadFile(filename));
714 for (int i = 0; i < a.length(); i++) {
715 list.add(loadData(a.getJSONObject(i).toString(), clazz));
720 private static <T> T loadData(String content, Class<T> clazz) throws IOException {
721 YangToolsMapper mapper = new YangToolsMapper();
722 return mapper.readValue(content, clazz);
725 private static String loadFile(String filename) throws IOException {
726 return String.join("\n", IoUtils.readAllLines(TestMariaDataProvider.class.getResourceAsStream(filename)));
729 static EntityInput createInput(String filter, String filterValue, int page, int size) {
730 ReadFaultcurrentListInputBuilder builder = new ReadFaultcurrentListInputBuilder().setPagination(
731 new PaginationBuilder().setPage(Uint64.valueOf(page)).setSize(Uint32.valueOf(size)).build());
732 if (filter != null && filterValue != null) {
733 Filter f = new FilterBuilder().setProperty(filter).setFiltervalue(filterValue).build();
734 Map<FilterKey, Filter> fmap = new HashMap<>();
735 fmap.put(f.key(), f);
736 builder.setFilter(fmap);
738 return builder.build();