sql dao test: init ODBC connection to Postgres DB with custom PostgreSqlInitializer (class rule replacement, PostgreSQL dao tests able to run as standalone)
This commit is contained in:
		
							parent
							
								
									adb9a8d150
								
							
						
					
					
						commit
						076b1943fb
					
				@ -30,13 +30,10 @@
 | 
			
		||||
 */
 | 
			
		||||
package org.thingsboard.server.dao;
 | 
			
		||||
 | 
			
		||||
import org.junit.ClassRule;
 | 
			
		||||
import org.junit.extensions.cpsuite.ClasspathSuite;
 | 
			
		||||
import org.junit.extensions.cpsuite.ClasspathSuite.ClassnameFilters;
 | 
			
		||||
import org.junit.runner.RunWith;
 | 
			
		||||
 | 
			
		||||
import java.util.Arrays;
 | 
			
		||||
 | 
			
		||||
@RunWith(ClasspathSuite.class)
 | 
			
		||||
@ClassnameFilters({
 | 
			
		||||
        "org.thingsboard.server.dao.service.psql.*SqlTest",
 | 
			
		||||
@ -45,32 +42,4 @@ import java.util.Arrays;
 | 
			
		||||
        "org.thingsboard.server.dao.service.timeseries.psql.*SqlTest"
 | 
			
		||||
})
 | 
			
		||||
public class PostgreSqlDaoServiceTestSuite {
 | 
			
		||||
 | 
			
		||||
    @ClassRule
 | 
			
		||||
    public static CustomSqlUnit sqlUnit = new CustomSqlUnit(
 | 
			
		||||
            Arrays.asList("sql/schema-ts-psql.sql", "sql/schema-entities.sql", "sql/schema-entities-idx.sql"
 | 
			
		||||
                    , "sql/system-data.sql"
 | 
			
		||||
                    , "sql/system-test-psql.sql"
 | 
			
		||||
            ),
 | 
			
		||||
            "sql/psql/drop-all-tables.sql",
 | 
			
		||||
            "psql-test.properties"
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
//    @ClassRule
 | 
			
		||||
//    public static CustomSqlUnit sqlUnit = new CustomSqlUnit(
 | 
			
		||||
//            Arrays.asList("sql/schema-ts-psql.sql"
 | 
			
		||||
//                    , "sql/schema-entities.sql", "sql/schema-entities-idx.sql"
 | 
			
		||||
//                    , "sql/system-data.sql", "sql/system-test.sql"
 | 
			
		||||
//            ),
 | 
			
		||||
//            "sql/psql/drop-all-tables.sql",
 | 
			
		||||
//            "sql-test.properties"
 | 
			
		||||
//    );
 | 
			
		||||
 | 
			
		||||
//    @ClassRule
 | 
			
		||||
//    public static CustomSqlUnit sqlUnit = new CustomSqlUnit(
 | 
			
		||||
//            Arrays.asList("sql/schema-timescale.sql", "sql/schema-entities.sql", "sql/schema-entities-idx.sql", "sql/system-data.sql", "sql/system-test.sql"),
 | 
			
		||||
//            "sql/timescale/drop-all-tables.sql",
 | 
			
		||||
//            "sql-test.properties"
 | 
			
		||||
//    );
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,79 @@
 | 
			
		||||
/**
 | 
			
		||||
 * ThingsBoard, Inc. ("COMPANY") CONFIDENTIAL
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright © 2016-2021 ThingsBoard, Inc. All Rights Reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * NOTICE: All information contained herein is, and remains
 | 
			
		||||
 * the property of ThingsBoard, Inc. and its suppliers,
 | 
			
		||||
 * if any.  The intellectual and technical concepts contained
 | 
			
		||||
 * herein are proprietary to ThingsBoard, Inc.
 | 
			
		||||
 * and its suppliers and may be covered by U.S. and Foreign Patents,
 | 
			
		||||
 * patents in process, and are protected by trade secret or copyright law.
 | 
			
		||||
 *
 | 
			
		||||
 * Dissemination of this information or reproduction of this material is strictly forbidden
 | 
			
		||||
 * unless prior written permission is obtained from COMPANY.
 | 
			
		||||
 *
 | 
			
		||||
 * Access to the source code contained herein is hereby forbidden to anyone except current COMPANY employees,
 | 
			
		||||
 * managers or contractors who have executed Confidentiality and Non-disclosure agreements
 | 
			
		||||
 * explicitly covering such access.
 | 
			
		||||
 *
 | 
			
		||||
 * The copyright notice above does not evidence any actual or intended publication
 | 
			
		||||
 * or disclosure  of  this source code, which includes
 | 
			
		||||
 * information that is confidential and/or proprietary, and is a trade secret, of  COMPANY.
 | 
			
		||||
 * ANY REPRODUCTION, MODIFICATION, DISTRIBUTION, PUBLIC  PERFORMANCE,
 | 
			
		||||
 * OR PUBLIC DISPLAY OF OR THROUGH USE  OF THIS  SOURCE CODE  WITHOUT
 | 
			
		||||
 * THE EXPRESS WRITTEN CONSENT OF COMPANY IS STRICTLY PROHIBITED,
 | 
			
		||||
 * AND IN VIOLATION OF APPLICABLE LAWS AND INTERNATIONAL TREATIES.
 | 
			
		||||
 * THE RECEIPT OR POSSESSION OF THIS SOURCE CODE AND/OR RELATED INFORMATION
 | 
			
		||||
 * DOES NOT CONVEY OR IMPLY ANY RIGHTS TO REPRODUCE, DISCLOSE OR DISTRIBUTE ITS CONTENTS,
 | 
			
		||||
 * OR TO MANUFACTURE, USE, OR SELL ANYTHING THAT IT  MAY DESCRIBE, IN WHOLE OR IN PART.
 | 
			
		||||
 */
 | 
			
		||||
package org.thingsboard.server.dao;
 | 
			
		||||
 | 
			
		||||
import com.google.common.base.Charsets;
 | 
			
		||||
import com.google.common.io.Resources;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.net.URL;
 | 
			
		||||
import java.sql.Connection;
 | 
			
		||||
import java.sql.SQLException;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
@Slf4j
 | 
			
		||||
public class PostgreSqlInitializer {
 | 
			
		||||
 | 
			
		||||
    private static final List<String> sqlFiles = List.of(
 | 
			
		||||
            "sql/schema-ts-psql.sql",
 | 
			
		||||
            "sql/schema-entities.sql",
 | 
			
		||||
            "sql/schema-entities-idx.sql",
 | 
			
		||||
            "sql/system-data.sql",
 | 
			
		||||
            "sql/system-test-psql.sql");
 | 
			
		||||
    private static final String dropAllTablesSqlFile = "sql/psql/drop-all-tables.sql";
 | 
			
		||||
 | 
			
		||||
    public static void initDb(Connection conn) {
 | 
			
		||||
        cleanUpDb(conn);
 | 
			
		||||
        log.info("initialize Postgres DB...");
 | 
			
		||||
        try {
 | 
			
		||||
            for (String sqlFile : sqlFiles) {
 | 
			
		||||
                URL sqlFileUrl = Resources.getResource(sqlFile);
 | 
			
		||||
                String sql = Resources.toString(sqlFileUrl, Charsets.UTF_8);
 | 
			
		||||
                conn.createStatement().execute(sql);
 | 
			
		||||
            }
 | 
			
		||||
        } catch (IOException | SQLException e) {
 | 
			
		||||
            throw new RuntimeException("Unable to init the Postgres database. Reason: " + e.getMessage(), e);
 | 
			
		||||
        }
 | 
			
		||||
        log.info("Postgres DB is initialized!");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private static void cleanUpDb(Connection conn) {
 | 
			
		||||
        log.info("clean up Postgres DB...");
 | 
			
		||||
        try {
 | 
			
		||||
            URL dropAllTableSqlFileUrl = Resources.getResource(dropAllTablesSqlFile);
 | 
			
		||||
            String dropAllTablesSql = Resources.toString(dropAllTableSqlFileUrl, Charsets.UTF_8);
 | 
			
		||||
            conn.createStatement().execute(dropAllTablesSql);
 | 
			
		||||
        } catch (IOException | SQLException e) {
 | 
			
		||||
            throw new RuntimeException("Unable to clean up the Postgres database. Reason: " + e.getMessage(), e);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -12,10 +12,10 @@ spring.jpa.hibernate.ddl-auto=none
 | 
			
		||||
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
 | 
			
		||||
spring.datasource.username=postgres
 | 
			
		||||
spring.datasource.password=postgres
 | 
			
		||||
spring.datasource.url=jdbc:tc:postgresql:12.8:///thingsboard?TC_DAEMON=true&TC_TMPFS=/testtmpfs:rw
 | 
			
		||||
spring.datasource.url=jdbc:tc:postgresql:12.8:///thingsboard?TC_DAEMON=true&TC_TMPFS=/testtmpfs:rw&?TC_INITFUNCTION=org.thingsboard.server.dao.PostgreSqlInitializer::initDb
 | 
			
		||||
spring.datasource.driverClassName=org.testcontainers.jdbc.ContainerDatabaseDriver
 | 
			
		||||
#org.postgresql.Driver
 | 
			
		||||
spring.datasource.hikari.maximumPoolSize=20
 | 
			
		||||
spring.datasource.hikari.maximumPoolSize=50
 | 
			
		||||
service.type=monolith
 | 
			
		||||
#database.ts.type=timescale
 | 
			
		||||
#database.ts.type=sql
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user