DBZ-3724 RHEL tests for DB2
This commit is contained in:
parent
339702b18f
commit
e2302659e6
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@ -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();
|
||||
}
|
||||
|
||||
}
|
@ -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 {
|
||||
}
|
@ -1 +1,2 @@
|
||||
mcr.microsoft.com/mssql/server:2019-latest
|
||||
quay.io/debezium/db2-cdc:latest
|
||||
|
Loading…
Reference in New Issue
Block a user