2 * ============LICENSE_START=======================================================
3 * ONAP : ccsdk features
4 * ================================================================================
5 * Copyright (C) 2021 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.setup;
24 import static org.junit.Assert.fail;
25 import com.fasterxml.jackson.core.JsonProcessingException;
26 import java.lang.reflect.InvocationTargetException;
27 import java.sql.ResultSet;
28 import java.sql.SQLException;
29 import java.util.Arrays;
30 import java.util.List;
31 import java.util.concurrent.TimeUnit;
32 import org.junit.AfterClass;
33 import org.junit.BeforeClass;
34 import org.junit.Test;
35 import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.SqlDBClient;
36 import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.data.SqlDBDataProvider;
37 import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.database.SqlDBMapper;
38 import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.database.SqlDBMapper.UnableToMapClassException;
39 import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.query.InsertQuery;
40 import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.query.SelectQuery;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ConnectionLogStatus;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ConnectionlogEntity;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Entity;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.EventlogEntity;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.FaultcurrentEntity;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.FaultlogEntity;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.GuicutthroughEntity;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.InventoryEntity;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.MaintenanceEntity;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.MediatorServerEntity;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.NetworkElementConnection;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.NetworkElementConnectionBuilder;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.NetworkElementConnectionEntity;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.NetworkElementDeviceType;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Pmdata15mEntity;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Pmdata24hEntity;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.network.element.connection.entity.NodeDetails;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.network.element.connection.entity.NodeDetailsBuilder;
59 import org.opendaylight.yangtools.yang.binding.DataObject;
60 import org.opendaylight.yangtools.yang.common.Uint32;
61 import ch.vorburger.exec.ManagedProcessException;
63 public class TestMariaDBMapper {
66 // private static final String MARIADB_USERNAME = "sdnrdb";
67 // private static final String MARIADB_PASSWORD = "sdnrdb";
68 // private static final String MARIADB_HOST = "10.20.11.159";
69 // private static final String MARIADB_HOST = "sdnrdb";
70 // private static final int MARIADB_PORT = 3306;
71 // private static final String MARIADB_DATABASENAME = "sdnrdb";
73 // private static DbLibService dbService;
75 private static MariaDBTestBase testBase;
76 private static SqlDBDataProvider dbProvider;
79 public static void init() throws Exception {
81 testBase = new MariaDBTestBase();
82 dbProvider = testBase.getDbProvider();
83 dbProvider.waitForDatabaseReady(30, TimeUnit.SECONDS);
84 // dbProvider.setControllerId();
89 public static void close() {
92 } catch (ManagedProcessException e) {
98 public void testCreateSdnrDBTables() {
99 createTables(dbProvider.getDBService());
102 public static void createTables(SqlDBClient dbService) {
103 createTableOdl(dbService);
104 createTable(dbService, ConnectionlogEntity.class, Entity.Connectionlog, true);
105 createTable(dbService, EventlogEntity.class, Entity.Eventlog, true);
106 createTable(dbService, FaultcurrentEntity.class, Entity.Faultcurrent, false);
107 createTable(dbService, FaultlogEntity.class, Entity.Faultlog, true);
108 createTable(dbService, GuicutthroughEntity.class, Entity.Guicutthrough, true);
109 createTable(dbService, Pmdata15mEntity.class, Entity.Historicalperformance15min, false);
110 createTable(dbService, Pmdata24hEntity.class, Entity.Historicalperformance24h, false);
111 createTable(dbService, InventoryEntity.class, Entity.Inventoryequipment, false);
112 createTable(dbService, MaintenanceEntity.class, Entity.Maintenancemode, false);
113 createTable(dbService, MediatorServerEntity.class, Entity.MediatorServer, true);
114 createTable(dbService, NetworkElementConnectionEntity.class, Entity.NetworkelementConnection, false);
118 public void testInsert() {
119 NetworkElementConnectionBuilder builder = new NetworkElementConnectionBuilder();
120 builder.setId("ROADM-A");
121 builder.setNodeId("ROADM-A");
122 builder.setCoreModelCapability("2017-03-12");
123 builder.setDeviceType(NetworkElementDeviceType.OROADM);
124 builder.setHost("10.20.30.40");
125 builder.setIsRequired(true);
126 NodeDetails nodeDetails = new NodeDetailsBuilder().setAvailableCapabilities(Arrays.asList(
127 "urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=explicit&also-supported=report-all,"
128 + "report-all-tagged,trim,explicit",
129 "urn:ietf:params:netconf:capability:validate:1.1", "urn:ietf:params:netconf:capability:url:1.0"))
131 builder.setNodeDetails(nodeDetails);
132 builder.setPassword("password");
133 builder.setPort(Uint32.valueOf(50000));
134 builder.setStatus(ConnectionLogStatus.Connected);
135 builder.setUsername("admin");
137 writeEntry(builder.build(), Entity.NetworkelementConnection);
138 } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException
139 | JsonProcessingException e) {
145 public void testRead() {
146 List<NetworkElementConnection> con =
147 readEntry(Entity.NetworkelementConnection, NetworkElementConnection.class, "ROADM-A");
148 System.out.println(con);
151 private <T extends DataObject> List<T> readEntry(Entity entity, Class<T> clazz, String id) {
152 final SelectQuery selectStatement = new SelectQuery(entity.getName());
153 System.out.println(selectStatement);
156 ResultSet data = dbProvider.getDBService().read(selectStatement.toSql());
157 list = SqlDBMapper.read(data, clazz);
158 try { data.close(); } catch (SQLException ignore) { }
161 } catch (SQLException | IllegalAccessException | IllegalArgumentException | InvocationTargetException
162 | InstantiationException | SecurityException | NoSuchMethodException | JsonProcessingException e) {
169 private <T extends DataObject> boolean writeEntry(T data, Entity entity) throws IllegalAccessException,
170 IllegalArgumentException, InvocationTargetException, JsonProcessingException {
172 final InsertQuery<T> insertStatement = new InsertQuery<T>(entity, data, dbProvider.getControllerId());
173 System.out.println(insertStatement);
175 return dbProvider.getDBService().write(insertStatement.toSql());
177 } catch (SQLException e) {
185 private static boolean createTableOdl(SqlDBClient dbService) {
186 String createStatement = null;
187 createStatement = SqlDBMapper.createTableOdl();
188 System.out.println(createStatement);
190 return dbService.write(createStatement);
191 } catch (SQLException e) {
198 public static boolean createTable(SqlDBClient dbService, Class<?> cls, Entity entity, boolean autoIndex) {
199 return createTable(dbService, cls, entity, autoIndex, true);
201 public static boolean createTable(SqlDBClient dbService, Class<?> cls, Entity entity, boolean autoIndex,
202 boolean withControllerId) {
203 String createStatement = null;
205 createStatement = SqlDBMapper.createTable(cls, entity, "", autoIndex,withControllerId);
206 } catch (UnableToMapClassException e) {
207 fail(e.getMessage());
209 System.out.println(createStatement);
210 return dbService.createTable(createStatement);