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