DBZ-3724 RHEL tests for DB2

This commit is contained in:
jcechace 2021-07-27 01:40:03 +02:00 committed by Jiri Pechanec
parent 339702b18f
commit e2302659e6
5 changed files with 174 additions and 0 deletions

View File

@ -0,0 +1,45 @@
/*
* 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.db2;
import static io.debezium.testing.system.tools.ConfigProperties.DATABASE_DB2_DBZ_PASSWORD;
import static io.debezium.testing.system.tools.ConfigProperties.DATABASE_DB2_DBZ_USERNAME;
import java.sql.Connection;
import java.sql.SQLException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testcontainers.containers.Db2Container;
import io.debezium.testing.system.tools.databases.AbstractDockerSqlDatabaseController;
import io.debezium.testing.system.tools.databases.SqlDatabaseClient;
public class DockerDB2Controller extends AbstractDockerSqlDatabaseController<Db2Container> {
private static final Logger LOGGER = LoggerFactory.getLogger(OcpDB2Controller.class);
public DockerDB2Controller(Db2Container container) {
super(container);
}
@Override
public int getDatabasePort() {
return Db2Container.DB2_PORT;
}
@Override
public void initialize() throws InterruptedException {
LOGGER.info("Waiting until DB2 instance is ready");
SqlDatabaseClient client = getDatabaseClient(DATABASE_DB2_DBZ_USERNAME, DATABASE_DB2_DBZ_PASSWORD);
try (Connection connection = client.connect()) {
LOGGER.info("Database connection established successfully!");
}
catch (SQLException e) {
throw new RuntimeException(e);
}
}
}

View File

@ -0,0 +1,67 @@
/*
* 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.db2;
import static io.debezium.testing.system.tools.ConfigProperties.DATABASE_DB2_DBZ_DBNAME;
import static io.debezium.testing.system.tools.ConfigProperties.DATABASE_DB2_PASSWORD;
import static io.debezium.testing.system.tools.ConfigProperties.DOCKER_IMAGE_DB2;
import java.time.Duration;
import java.time.temporal.ChronoUnit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testcontainers.containers.Db2Container;
import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.utility.DockerImageName;
import io.debezium.testing.system.tools.AbstractDockerDeployer;
/**
* @author Jakub Cechacek
*/
public final class DockerDB2Deployer
extends AbstractDockerDeployer<DockerDB2Controller, Db2Container> {
private static final Logger LOGGER = LoggerFactory.getLogger(DockerDB2Deployer.class);
private DockerDB2Deployer(Db2Container container) {
super(container);
}
@Override
protected DockerDB2Controller getController(Db2Container container) {
return new DockerDB2Controller(container);
}
public static class Builder
extends DockerBuilder<Builder, Db2Container, DockerDB2Deployer> {
public Builder() {
this(new Db2Container(
DockerImageName.parse(DOCKER_IMAGE_DB2).asCompatibleSubstituteFor("ibmcom/db2")));
}
public Builder(Db2Container container) {
super(container);
}
@Override
public DockerDB2Deployer build() {
container
.withDatabaseName(DATABASE_DB2_DBZ_DBNAME)
.withPassword(DATABASE_DB2_PASSWORD)
.acceptLicense()
.withEnv("ARCHIVE_LOGS", "true")
.withEnv("AUTOCONFIG", "true")
.withPrivilegedMode(true)
.waitingFor(Wait.forLogMessage(".*CDC setup completed.*", 1))
.withStartupTimeout(Duration.of(15, ChronoUnit.MINUTES));
return new DockerDB2Deployer(container);
}
}
}

View File

@ -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.db2.DockerDB2Deployer;
public interface DockerDb2
extends TestSetupFixture, SqlDatabaseFixture, DockerNetwork {
default void setupDatabase() throws Exception {
Class.forName("org.postgresql.Driver");
DockerDB2Deployer deployer = new DockerDB2Deployer.Builder()
.withNetwork(getNetwork())
.build();
SqlDatabaseController controller = deployer.deploy();
controller.initialize();
setDbController(controller);
}
default void teardownDatabase() throws Exception {
getDbController().reload();
}
}

View File

@ -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.db2;
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.DB2Connector;
import io.debezium.testing.system.fixtures.databases.DockerDb2;
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("db2 ")
@Tag("docker")
@Tag("rhel")
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class DockerRhelDB2ConnectorIT
extends DockerConnectorTest<SqlDatabaseController>
implements DockerKafka, DockerDb2, DB2Connector, DB2TestCases {
}

View File

@ -1 +1,2 @@
mcr.microsoft.com/mssql/server:2019-latest
quay.io/debezium/db2-cdc:latest