DBZ-3724 RHEL tests for SQL Server
This commit is contained in:
parent
6f3f2db076
commit
339702b18f
@ -0,0 +1,57 @@
|
|||||||
|
/*
|
||||||
|
* Copyright Debezium Authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache Software License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*/
|
||||||
|
package io.debezium.testing.system.tools.databases.sqlserver;
|
||||||
|
|
||||||
|
import static io.debezium.testing.system.tools.ConfigProperties.DATABASE_SQLSERVER_SA_PASSWORD;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.net.URISyntaxException;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.nio.file.Paths;
|
||||||
|
|
||||||
|
import org.testcontainers.containers.MSSQLServerContainer;
|
||||||
|
import org.testcontainers.images.builder.Transferable;
|
||||||
|
|
||||||
|
import io.debezium.testing.system.tools.databases.AbstractDockerSqlDatabaseController;
|
||||||
|
|
||||||
|
public class DockerSqlServerController extends AbstractDockerSqlDatabaseController<MSSQLServerContainer<?>> {
|
||||||
|
|
||||||
|
private static final String DB_INIT_SCRIPT_PATH = "/database-resources/sqlserver/inventory.sql";
|
||||||
|
private static final String DB_INIT_SCRIPT_PATH_CONTAINER = "/opt/inventory.sql";
|
||||||
|
private final Path initScript;
|
||||||
|
|
||||||
|
private final MSSQLServerContainer<?> container;
|
||||||
|
|
||||||
|
public DockerSqlServerController(MSSQLServerContainer<?> container) {
|
||||||
|
super(container);
|
||||||
|
this.container = container;
|
||||||
|
try {
|
||||||
|
initScript = Paths.get(getClass().getResource(DB_INIT_SCRIPT_PATH).toURI());
|
||||||
|
}
|
||||||
|
catch (URISyntaxException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getDatabasePort() {
|
||||||
|
return MSSQLServerContainer.MS_SQL_SERVER_PORT;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initialize() throws InterruptedException {
|
||||||
|
try {
|
||||||
|
container.copyFileToContainer(Transferable.of(Files.readAllBytes(initScript)), DB_INIT_SCRIPT_PATH_CONTAINER);
|
||||||
|
container.execInContainer(
|
||||||
|
"/opt/mssql-tools/bin/sqlcmd", "-U", "sa", "-P", DATABASE_SQLSERVER_SA_PASSWORD, "-i", DB_INIT_SCRIPT_PATH_CONTAINER);
|
||||||
|
}
|
||||||
|
catch (IOException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,55 @@
|
|||||||
|
/*
|
||||||
|
* Copyright Debezium Authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache Software License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*/
|
||||||
|
package io.debezium.testing.system.tools.databases.sqlserver;
|
||||||
|
|
||||||
|
import static io.debezium.testing.system.tools.ConfigProperties.DATABASE_SQLSERVER_SA_PASSWORD;
|
||||||
|
import static io.debezium.testing.system.tools.ConfigProperties.DOCKER_IMAGE_SQLSERVER;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.testcontainers.containers.MSSQLServerContainer;
|
||||||
|
|
||||||
|
import io.debezium.testing.system.tools.AbstractDockerDeployer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Jakub Cechacek
|
||||||
|
*/
|
||||||
|
public final class DockerSqlServerDeployer
|
||||||
|
extends AbstractDockerDeployer<DockerSqlServerController, MSSQLServerContainer<?>> {
|
||||||
|
|
||||||
|
private static final Logger LOGGER = LoggerFactory.getLogger(DockerSqlServerDeployer.class);
|
||||||
|
|
||||||
|
private DockerSqlServerDeployer(MSSQLServerContainer<?> container) {
|
||||||
|
super(container);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected DockerSqlServerController getController(MSSQLServerContainer<?> container) {
|
||||||
|
return new DockerSqlServerController(container);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Builder
|
||||||
|
extends DockerBuilder<Builder, MSSQLServerContainer<?>, DockerSqlServerDeployer> {
|
||||||
|
|
||||||
|
public Builder() {
|
||||||
|
this(new MSSQLServerContainer<>(DOCKER_IMAGE_SQLSERVER));
|
||||||
|
}
|
||||||
|
|
||||||
|
public Builder(MSSQLServerContainer<?> container) {
|
||||||
|
super(container);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DockerSqlServerDeployer build() {
|
||||||
|
container
|
||||||
|
.withPassword(DATABASE_SQLSERVER_SA_PASSWORD)
|
||||||
|
.withEnv("MSSQL_AGENT_ENABLED", "true")
|
||||||
|
.withEnv("MSSQL_PID", "Standard");
|
||||||
|
|
||||||
|
return new DockerSqlServerDeployer(container);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,30 @@
|
|||||||
|
/*
|
||||||
|
* Copyright Debezium Authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache Software License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*/
|
||||||
|
package io.debezium.testing.system.fixtures.databases;
|
||||||
|
|
||||||
|
import io.debezium.testing.system.fixtures.DockerNetwork;
|
||||||
|
import io.debezium.testing.system.fixtures.TestSetupFixture;
|
||||||
|
import io.debezium.testing.system.tools.databases.SqlDatabaseController;
|
||||||
|
import io.debezium.testing.system.tools.databases.sqlserver.DockerSqlServerDeployer;
|
||||||
|
|
||||||
|
public interface DockerSqlServer
|
||||||
|
extends TestSetupFixture, SqlDatabaseFixture, DockerNetwork {
|
||||||
|
|
||||||
|
default void setupDatabase() throws Exception {
|
||||||
|
Class.forName("org.postgresql.Driver");
|
||||||
|
DockerSqlServerDeployer deployer = new DockerSqlServerDeployer.Builder()
|
||||||
|
.withNetwork(getNetwork())
|
||||||
|
.build();
|
||||||
|
SqlDatabaseController controller = deployer.deploy();
|
||||||
|
controller.initialize();
|
||||||
|
setDbController(controller);
|
||||||
|
}
|
||||||
|
|
||||||
|
default void teardownDatabase() throws Exception {
|
||||||
|
getDbController().reload();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
* Copyright Debezium Authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache Software License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*/
|
||||||
|
package io.debezium.testing.system.tests.sqlserver;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.MethodOrderer;
|
||||||
|
import org.junit.jupiter.api.Tag;
|
||||||
|
import org.junit.jupiter.api.TestInstance;
|
||||||
|
import org.junit.jupiter.api.TestMethodOrder;
|
||||||
|
|
||||||
|
import io.debezium.testing.system.fixtures.connectors.SqlServerConnector;
|
||||||
|
import io.debezium.testing.system.fixtures.databases.DockerSqlServer;
|
||||||
|
import io.debezium.testing.system.fixtures.kafka.DockerKafka;
|
||||||
|
import io.debezium.testing.system.tests.DockerConnectorTest;
|
||||||
|
import io.debezium.testing.system.tools.databases.SqlDatabaseController;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Jakub Cechacek
|
||||||
|
*/
|
||||||
|
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
|
||||||
|
@Tag("acceptance")
|
||||||
|
@Tag("sqlserver")
|
||||||
|
@Tag("docker")
|
||||||
|
@Tag("rhel")
|
||||||
|
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
|
||||||
|
public class DockerRhelSqlServerConnectorIT
|
||||||
|
extends DockerConnectorTest<SqlDatabaseController>
|
||||||
|
implements DockerKafka, DockerSqlServer, SqlServerConnector, SqlServerTestCases {
|
||||||
|
}
|
@ -0,0 +1 @@
|
|||||||
|
mcr.microsoft.com/mssql/server:2019-latest
|
Loading…
Reference in New Issue
Block a user