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.HashSet;
31 import java.util.List;
32 import java.util.concurrent.TimeUnit;
33 import org.junit.AfterClass;
34 import org.junit.BeforeClass;
35 import org.junit.Test;
36 import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.SqlDBClient;
37 import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.data.SqlDBDataProvider;
38 import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.database.SqlDBMapper;
39 import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.database.SqlDBMapper.UnableToMapClassException;
40 import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.query.InsertQuery;
41 import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.query.SelectQuery;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ConnectionLogStatus;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ConnectionlogEntity;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Entity;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.EventlogEntity;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.FaultcurrentEntity;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.FaultlogEntity;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.GuicutthroughEntity;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.InventoryEntity;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.MaintenanceEntity;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.MediatorServerEntity;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.NetworkElementConnection;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.NetworkElementConnectionBuilder;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.NetworkElementConnectionEntity;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.NetworkElementDeviceType;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Pmdata15mEntity;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Pmdata24hEntity;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.network.element.connection.entity.NodeDetails;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.network.element.connection.entity.NodeDetailsBuilder;
60 import org.opendaylight.yangtools.yang.binding.DataObject;
61 import org.opendaylight.yangtools.yang.common.Uint32;
62 import ch.vorburger.exec.ManagedProcessException;
64 public class TestMariaDBMapper {
67 // private static final String MARIADB_USERNAME = "sdnrdb";
68 // private static final String MARIADB_PASSWORD = "sdnrdb";
69 // private static final String MARIADB_HOST = "10.20.11.159";
70 // private static final String MARIADB_HOST = "sdnrdb";
71 // private static final int MARIADB_PORT = 3306;
72 // private static final String MARIADB_DATABASENAME = "sdnrdb";
74 // private static DbLibService dbService;
76 private static final String SUFFIX = "";
77 private static MariaDBTestBase testBase;
78 private static SqlDBDataProvider dbProvider;
81 public static void init() throws Exception {
83 testBase = new MariaDBTestBase();
84 dbProvider = testBase.getDbProvider();
85 dbProvider.waitForDatabaseReady(30, TimeUnit.SECONDS);
86 // dbProvider.setControllerId();
91 public static void close() {
94 } catch (ManagedProcessException e) {
100 public void testCreateSdnrDBTables() {
101 createTables(dbProvider.getDBService());
104 public static void createTables(SqlDBClient dbService) {
105 createTableOdl(dbService);
106 createTable(dbService, ConnectionlogEntity.class, Entity.Connectionlog, true);
107 createTable(dbService, EventlogEntity.class, Entity.Eventlog, true);
108 createTable(dbService, FaultcurrentEntity.class, Entity.Faultcurrent, false);
109 createTable(dbService, FaultlogEntity.class, Entity.Faultlog, true);
110 createTable(dbService, GuicutthroughEntity.class, Entity.Guicutthrough, true);
111 createTable(dbService, Pmdata15mEntity.class, Entity.Historicalperformance15min, false);
112 createTable(dbService, Pmdata24hEntity.class, Entity.Historicalperformance24h, false);
113 createTable(dbService, InventoryEntity.class, Entity.Inventoryequipment, false);
114 createTable(dbService, MaintenanceEntity.class, Entity.Maintenancemode, false);
115 createTable(dbService, MediatorServerEntity.class, Entity.MediatorServer, true);
116 createTable(dbService, NetworkElementConnectionEntity.class, Entity.NetworkelementConnection, false);
120 public void testInsert() {
121 NetworkElementConnectionBuilder builder = new NetworkElementConnectionBuilder();
122 builder.setId("ROADM-A");
123 builder.setNodeId("ROADM-A");
124 builder.setCoreModelCapability("2017-03-12");
125 builder.setDeviceType(NetworkElementDeviceType.OROADM);
126 builder.setHost("10.20.30.40");
127 builder.setIsRequired(true);
128 NodeDetails nodeDetails = new NodeDetailsBuilder().setAvailableCapabilities(new HashSet<>(Arrays.asList(
129 "urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=explicit&also-supported=report-all,"
130 + "report-all-tagged,trim,explicit",
131 "urn:ietf:params:netconf:capability:validate:1.1", "urn:ietf:params:netconf:capability:url:1.0")))
133 builder.setNodeDetails(nodeDetails);
134 builder.setPassword("password");
135 builder.setPort(Uint32.valueOf(50000));
136 builder.setStatus(ConnectionLogStatus.Connected);
137 builder.setUsername("admin");
139 writeEntry(builder.build(), Entity.NetworkelementConnection);
140 } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException
141 | JsonProcessingException e) {
147 public void testRead() {
148 List<NetworkElementConnection> con =
149 readEntry(Entity.NetworkelementConnection, NetworkElementConnection.class, "ROADM-A");
150 System.out.println(con);
153 private <T extends DataObject> List<T> readEntry(Entity entity, Class<T> clazz, String id) {
154 final SelectQuery selectStatement = new SelectQuery(entity.getName());
155 System.out.println(selectStatement);
158 ResultSet data = dbProvider.getDBService().read(selectStatement.toSql());
159 list = SqlDBMapper.read(data, clazz);
160 try { data.close(); } catch (SQLException ignore) { }
163 } catch (SQLException | IllegalAccessException | IllegalArgumentException | InvocationTargetException
164 | InstantiationException | SecurityException | NoSuchMethodException | JsonProcessingException e) {
171 private <T extends DataObject> boolean writeEntry(T data, Entity entity) throws IllegalAccessException,
172 IllegalArgumentException, InvocationTargetException, JsonProcessingException {
174 final InsertQuery<T> insertStatement = new InsertQuery<T>(entity, data, dbProvider.getControllerId());
175 System.out.println(insertStatement);
177 return dbProvider.getDBService().write(insertStatement.toSql());
179 } catch (SQLException e) {
187 private static boolean createTableOdl(SqlDBClient dbService) {
188 String createStatement = null;
189 createStatement = SqlDBMapper.createTableOdl();
190 System.out.println(createStatement);
192 return dbService.write(createStatement);
193 } catch (SQLException e) {
200 public static boolean createTable(SqlDBClient dbService, Class<?> cls, Entity entity, boolean autoIndex) {
201 return createTable(dbService, cls, entity, autoIndex, true);
203 public static boolean createTable(SqlDBClient dbService, Class<?> cls, Entity entity, boolean autoIndex,
204 boolean withControllerId) {
205 String createStatement = null;
207 createStatement = SqlDBMapper.createTable(cls, entity, SUFFIX, autoIndex,withControllerId);
208 } catch (UnableToMapClassException e) {
209 fail(e.getMessage());
211 System.out.println(createStatement);
212 return dbService.createTable(createStatement);