dao timescale test suite added, testcontainers version upgraded to support timescaledb
This commit is contained in:
		
							parent
							
								
									6445fec439
								
							
						
					
					
						commit
						f0d19afd9c
					
				@ -0,0 +1,28 @@
 | 
			
		||||
/**
 | 
			
		||||
 * Copyright © 2016-2022 The Thingsboard Authors
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
 * you may not use this file except in compliance with the License.
 | 
			
		||||
 * You may obtain a copy of the License at
 | 
			
		||||
 *
 | 
			
		||||
 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
package org.thingsboard.server.dao;
 | 
			
		||||
 | 
			
		||||
import org.junit.extensions.cpsuite.ClasspathSuite;
 | 
			
		||||
import org.junit.extensions.cpsuite.ClasspathSuite.ClassnameFilters;
 | 
			
		||||
import org.junit.runner.RunWith;
 | 
			
		||||
 | 
			
		||||
@RunWith(ClasspathSuite.class)
 | 
			
		||||
@ClassnameFilters({
 | 
			
		||||
        "org.thingsboard.server.dao.service.*.nosql.*ServiceTimescaleTest",
 | 
			
		||||
})
 | 
			
		||||
public class TimescaleDaoServiceTestSuite {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,65 @@
 | 
			
		||||
/**
 | 
			
		||||
 * Copyright © 2016-2022 The Thingsboard Authors
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
 * you may not use this file except in compliance with the License.
 | 
			
		||||
 * You may obtain a copy of the License at
 | 
			
		||||
 *
 | 
			
		||||
 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
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 TimescaleSqlInitializer {
 | 
			
		||||
 | 
			
		||||
    private static final List<String> sqlFiles = List.of(
 | 
			
		||||
            "sql/schema-timescale.sql",
 | 
			
		||||
            "sql/schema-entities.sql",
 | 
			
		||||
            "sql/schema-entities-idx.sql",
 | 
			
		||||
            "sql/schema-entities-idx-psql-addon.sql",
 | 
			
		||||
            "sql/system-data.sql",
 | 
			
		||||
            "sql/system-test-psql.sql");
 | 
			
		||||
    private static final String dropAllTablesSqlFile = "sql/timescale/drop-all-tables.sql";
 | 
			
		||||
 | 
			
		||||
    public static void initDb(Connection conn) {
 | 
			
		||||
        cleanUpDb(conn);
 | 
			
		||||
        log.info("initialize Timescale 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 Timescale database. Reason: " + e.getMessage(), e);
 | 
			
		||||
        }
 | 
			
		||||
        log.info("Timescale DB is initialized!");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private static void cleanUpDb(Connection conn) {
 | 
			
		||||
        log.info("clean up Timescale 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 Timescale database. Reason: " + e.getMessage(), e);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,33 @@
 | 
			
		||||
/**
 | 
			
		||||
 * Copyright © 2016-2022 The Thingsboard Authors
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
 * you may not use this file except in compliance with the License.
 | 
			
		||||
 * You may obtain a copy of the License at
 | 
			
		||||
 *
 | 
			
		||||
 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
package org.thingsboard.server.dao.service;
 | 
			
		||||
 | 
			
		||||
import org.springframework.test.context.TestPropertySource;
 | 
			
		||||
 | 
			
		||||
import java.lang.annotation.Documented;
 | 
			
		||||
import java.lang.annotation.ElementType;
 | 
			
		||||
import java.lang.annotation.Inherited;
 | 
			
		||||
import java.lang.annotation.Retention;
 | 
			
		||||
import java.lang.annotation.RetentionPolicy;
 | 
			
		||||
import java.lang.annotation.Target;
 | 
			
		||||
 | 
			
		||||
@Target(ElementType.TYPE)
 | 
			
		||||
@Retention(RetentionPolicy.RUNTIME)
 | 
			
		||||
@Inherited
 | 
			
		||||
@Documented
 | 
			
		||||
@TestPropertySource(locations = {"classpath:application-test.properties", "classpath:timescale-test.properties"})
 | 
			
		||||
public @interface DaoTimescaleTest {
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,23 @@
 | 
			
		||||
/**
 | 
			
		||||
 * Copyright © 2016-2022 The Thingsboard Authors
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
 * you may not use this file except in compliance with the License.
 | 
			
		||||
 * You may obtain a copy of the License at
 | 
			
		||||
 *
 | 
			
		||||
 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
package org.thingsboard.server.dao.service.timeseries.nosql;
 | 
			
		||||
 | 
			
		||||
import org.thingsboard.server.dao.service.DaoTimescaleTest;
 | 
			
		||||
import org.thingsboard.server.dao.service.timeseries.BaseTimeseriesServiceTest;
 | 
			
		||||
 | 
			
		||||
@DaoTimescaleTest
 | 
			
		||||
public class TimeseriesServiceTimescaleTest extends BaseTimeseriesServiceTest {
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										18
									
								
								dao/src/test/resources/timescale-test.properties
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								dao/src/test/resources/timescale-test.properties
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,18 @@
 | 
			
		||||
database.ts.type=timescale
 | 
			
		||||
database.ts_latest.type=timescale
 | 
			
		||||
 | 
			
		||||
sql.ts_inserts_executor_type=fixed
 | 
			
		||||
sql.ts_inserts_fixed_thread_pool_size=10
 | 
			
		||||
 | 
			
		||||
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
 | 
			
		||||
spring.jpa.properties.hibernate.order_by.default_null_ordering=last
 | 
			
		||||
spring.jpa.properties.hibernate.jdbc.log.warnings=false
 | 
			
		||||
 | 
			
		||||
spring.jpa.show-sql=false
 | 
			
		||||
 | 
			
		||||
spring.jpa.hibernate.ddl-auto=none
 | 
			
		||||
spring.datasource.username=postgres
 | 
			
		||||
spring.datasource.password=postgres
 | 
			
		||||
spring.datasource.url=jdbc:tc:timescaledb:latest-pg12:///thingsboard?TC_DAEMON=true&TC_TMPFS=/testtmpfs:rw&?TC_INITFUNCTION=org.thingsboard.server.dao.TimescaleSqlInitializer::initDb
 | 
			
		||||
spring.datasource.driverClassName=org.testcontainers.jdbc.ContainerDatabaseDriver
 | 
			
		||||
spring.datasource.hikari.maximumPoolSize = 50
 | 
			
		||||
							
								
								
									
										2
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								pom.xml
									
									
									
									
									
								
							@ -133,7 +133,7 @@
 | 
			
		||||
        <spring-test-dbunit.version>1.3.0</spring-test-dbunit.version> <!-- 2016 -->
 | 
			
		||||
        <takari-cpsuite.version>1.2.7</takari-cpsuite.version> <!-- 2015 -->
 | 
			
		||||
        <!--      BLACKBOX TEST SCOPE     -->
 | 
			
		||||
        <testcontainers.version>1.16.0</testcontainers.version>
 | 
			
		||||
        <testcontainers.version>1.17.3</testcontainers.version>
 | 
			
		||||
        <zeroturnaround.version>1.12</zeroturnaround.version>
 | 
			
		||||
        <opensmpp.version>3.0.0</opensmpp.version>
 | 
			
		||||
        <jgit.version>6.1.0.202203080745-r</jgit.version>
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user