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;
|
package org.thingsboard.server.dao;
|
||||||
|
|
||||||
import org.junit.ClassRule;
|
|
||||||
import org.junit.extensions.cpsuite.ClasspathSuite;
|
import org.junit.extensions.cpsuite.ClasspathSuite;
|
||||||
import org.junit.extensions.cpsuite.ClasspathSuite.ClassnameFilters;
|
import org.junit.extensions.cpsuite.ClasspathSuite.ClassnameFilters;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
|
|
||||||
@RunWith(ClasspathSuite.class)
|
@RunWith(ClasspathSuite.class)
|
||||||
@ClassnameFilters({
|
@ClassnameFilters({
|
||||||
"org.thingsboard.server.dao.service.psql.*SqlTest",
|
"org.thingsboard.server.dao.service.psql.*SqlTest",
|
||||||
@ -45,32 +42,4 @@ import java.util.Arrays;
|
|||||||
"org.thingsboard.server.dao.service.timeseries.psql.*SqlTest"
|
"org.thingsboard.server.dao.service.timeseries.psql.*SqlTest"
|
||||||
})
|
})
|
||||||
public class PostgreSqlDaoServiceTestSuite {
|
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.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
|
||||||
spring.datasource.username=postgres
|
spring.datasource.username=postgres
|
||||||
spring.datasource.password=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
|
spring.datasource.driverClassName=org.testcontainers.jdbc.ContainerDatabaseDriver
|
||||||
#org.postgresql.Driver
|
#org.postgresql.Driver
|
||||||
spring.datasource.hikari.maximumPoolSize=20
|
spring.datasource.hikari.maximumPoolSize=50
|
||||||
service.type=monolith
|
service.type=monolith
|
||||||
#database.ts.type=timescale
|
#database.ts.type=timescale
|
||||||
#database.ts.type=sql
|
#database.ts.type=sql
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user