ef8998875ff54fe0c47d10e76f528dd70c68613c
[ccsdk/features.git] /
1 /*
2  * ============LICENSE_START=======================================================
3  * ONAP : ccsdk features
4  * ================================================================================
5  * Copyright (C) 2021 highstreet technologies GmbH Intellectual Property.
6  * All rights reserved.
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
11  *
12  *     http://www.apache.org/licenses/LICENSE-2.0
13  *
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=========================================================
20  *
21  */
22 package org.onap.ccsdk.features.sdnr.wt.dataprovider.setup;
23
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;
62
63 public class TestMariaDBMapper {
64
65
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";
72
73     //    private static DbLibService dbService;
74
75     private static MariaDBTestBase testBase;
76     private static SqlDBDataProvider dbProvider;
77
78     @BeforeClass
79     public static void init() throws Exception {
80
81         testBase = new MariaDBTestBase();
82         dbProvider = testBase.getDbProvider();
83         dbProvider.waitForDatabaseReady(30, TimeUnit.SECONDS);
84         //  dbProvider.setControllerId();
85
86     }
87
88     @AfterClass
89     public static void close() {
90         try {
91             testBase.close();
92         } catch (ManagedProcessException e) {
93             e.printStackTrace();
94         }
95     }
96
97     @Test
98     public void testCreateSdnrDBTables() {
99         createTables(dbProvider.getDBService());
100     }
101
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);
115     }
116
117     //@Test
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"))
130                 .build();
131         builder.setNodeDetails(nodeDetails);
132         builder.setPassword("password");
133         builder.setPort(Uint32.valueOf(50000));
134         builder.setStatus(ConnectionLogStatus.Connected);
135         builder.setUsername("admin");
136         try {
137             writeEntry(builder.build(), Entity.NetworkelementConnection);
138         } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException
139                 | JsonProcessingException e) {
140             e.printStackTrace();
141         }
142     }
143
144     //@Test
145     public void testRead() {
146         List<NetworkElementConnection> con =
147                 readEntry(Entity.NetworkelementConnection, NetworkElementConnection.class, "ROADM-A");
148         System.out.println(con);
149     }
150
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);
154         List<T> list = null;
155         try {
156             ResultSet data = dbProvider.getDBService().read(selectStatement.toSql());
157             list = SqlDBMapper.read(data, clazz);
158             try { data.close(); } catch (SQLException ignore) { }
159
160
161         } catch (SQLException | IllegalAccessException | IllegalArgumentException | InvocationTargetException
162                 | InstantiationException | SecurityException | NoSuchMethodException | JsonProcessingException e) {
163             e.printStackTrace();
164
165         }
166         return list;
167     }
168
169     private <T extends DataObject> boolean writeEntry(T data, Entity entity) throws IllegalAccessException,
170             IllegalArgumentException, InvocationTargetException, JsonProcessingException {
171
172         final InsertQuery<T> insertStatement = new InsertQuery<T>(entity, data, dbProvider.getControllerId());
173         System.out.println(insertStatement);
174         try {
175             return dbProvider.getDBService().write(insertStatement.toSql());
176
177         } catch (SQLException e) {
178             e.printStackTrace();
179
180         }
181
182         return false;
183     }
184
185     private static boolean createTableOdl(SqlDBClient dbService) {
186         String createStatement = null;
187         createStatement = SqlDBMapper.createTableOdl();
188         System.out.println(createStatement);
189         try {
190             return dbService.write(createStatement);
191         } catch (SQLException e) {
192             e.printStackTrace();
193
194         }
195         return false;
196     }
197
198     public static boolean createTable(SqlDBClient dbService, Class<?> cls, Entity entity, boolean autoIndex) {
199         return createTable(dbService, cls, entity, autoIndex, true);
200     }
201     public static boolean createTable(SqlDBClient dbService, Class<?> cls, Entity entity, boolean autoIndex,
202             boolean withControllerId) {
203         String createStatement = null;
204         try {
205             createStatement = SqlDBMapper.createTable(cls, entity, "", autoIndex,withControllerId);
206         } catch (UnableToMapClassException e) {
207             fail(e.getMessage());
208         }
209         System.out.println(createStatement);
210         return dbService.createTable(createStatement);
211     }
212 }