ceec97e36bfa239e9180ed174755c75bcd0a31ca
[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.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;
63
64 public class TestMariaDBMapper {
65
66
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";
73
74     //    private static DbLibService dbService;
75
76     private static final String SUFFIX = "";
77     private static MariaDBTestBase testBase;
78     private static SqlDBDataProvider dbProvider;
79
80     @BeforeClass
81     public static void init() throws Exception {
82
83         testBase = new MariaDBTestBase();
84         dbProvider = testBase.getDbProvider();
85         dbProvider.waitForDatabaseReady(30, TimeUnit.SECONDS);
86         //  dbProvider.setControllerId();
87
88     }
89
90     @AfterClass
91     public static void close() {
92         try {
93             testBase.close();
94         } catch (ManagedProcessException e) {
95             e.printStackTrace();
96         }
97     }
98
99     @Test
100     public void testCreateSdnrDBTables() {
101         createTables(dbProvider.getDBService());
102     }
103
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);
117     }
118
119     //@Test
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")))
132                 .build();
133         builder.setNodeDetails(nodeDetails);
134         builder.setPassword("password");
135         builder.setPort(Uint32.valueOf(50000));
136         builder.setStatus(ConnectionLogStatus.Connected);
137         builder.setUsername("admin");
138         try {
139             writeEntry(builder.build(), Entity.NetworkelementConnection);
140         } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException
141                 | JsonProcessingException e) {
142             e.printStackTrace();
143         }
144     }
145
146     //@Test
147     public void testRead() {
148         List<NetworkElementConnection> con =
149                 readEntry(Entity.NetworkelementConnection, NetworkElementConnection.class, "ROADM-A");
150         System.out.println(con);
151     }
152
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);
156         List<T> list = null;
157         try {
158             ResultSet data = dbProvider.getDBService().read(selectStatement.toSql());
159             list = SqlDBMapper.read(data, clazz);
160             try { data.close(); } catch (SQLException ignore) { }
161
162
163         } catch (SQLException | IllegalAccessException | IllegalArgumentException | InvocationTargetException
164                 | InstantiationException | SecurityException | NoSuchMethodException | JsonProcessingException e) {
165             e.printStackTrace();
166
167         }
168         return list;
169     }
170
171     private <T extends DataObject> boolean writeEntry(T data, Entity entity) throws IllegalAccessException,
172             IllegalArgumentException, InvocationTargetException, JsonProcessingException {
173
174         final InsertQuery<T> insertStatement = new InsertQuery<T>(entity, data, dbProvider.getControllerId());
175         System.out.println(insertStatement);
176         try {
177             return dbProvider.getDBService().write(insertStatement.toSql());
178
179         } catch (SQLException e) {
180             e.printStackTrace();
181
182         }
183
184         return false;
185     }
186
187     private static boolean createTableOdl(SqlDBClient dbService) {
188         String createStatement = null;
189         createStatement = SqlDBMapper.createTableOdl();
190         System.out.println(createStatement);
191         try {
192             return dbService.write(createStatement);
193         } catch (SQLException e) {
194             e.printStackTrace();
195
196         }
197         return false;
198     }
199
200     public static boolean createTable(SqlDBClient dbService, Class<?> cls, Entity entity, boolean autoIndex) {
201         return createTable(dbService, cls, entity, autoIndex, true);
202     }
203     public static boolean createTable(SqlDBClient dbService, Class<?> cls, Entity entity, boolean autoIndex,
204             boolean withControllerId) {
205         String createStatement = null;
206         try {
207             createStatement = SqlDBMapper.createTable(cls, entity, SUFFIX, autoIndex,withControllerId);
208         } catch (UnableToMapClassException e) {
209             fail(e.getMessage());
210         }
211         System.out.println(createStatement);
212         return dbService.createTable(createStatement);
213     }
214 }