DBZ-3929 Docker tests for Oracle
This commit is contained in:
parent
cbdbfec27a
commit
e402afd84a
@ -11,7 +11,7 @@ public abstract class AbstractDockerSqlDatabaseController<C extends JdbcDatabase
|
||||
extends AbstractDockerDatabaseController<C, SqlDatabaseClient>
|
||||
implements SqlDatabaseController {
|
||||
|
||||
private final C container;
|
||||
protected final C container;
|
||||
|
||||
public AbstractDockerSqlDatabaseController(C container) {
|
||||
super(container);
|
||||
|
@ -0,0 +1,60 @@
|
||||
/*
|
||||
* 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.oracle;
|
||||
|
||||
import io.debezium.testing.system.tools.databases.AbstractDockerSqlDatabaseController;
|
||||
import io.debezium.testing.system.tools.databases.db2.OcpDB2Controller;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.testcontainers.containers.OracleContainer;
|
||||
import org.testcontainers.images.builder.Transferable;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URISyntaxException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
|
||||
import static io.debezium.testing.system.tools.ConfigProperties.DATABASE_ORACLE_PASSWORD;
|
||||
import static io.debezium.testing.system.tools.ConfigProperties.DATABASE_ORACLE_PDBNAME;
|
||||
import static io.debezium.testing.system.tools.ConfigProperties.DATABASE_ORACLE_USERNAME;
|
||||
|
||||
public class DockerOracleController extends AbstractDockerSqlDatabaseController<OracleContainer> {
|
||||
|
||||
private static final String DB_INIT_SCRIPT_PATH = "/database-resources/oracle/inventory.sql";
|
||||
private static final String DB_INIT_SCRIPT_PATH_CONTAINER = "/home/oracle/inventory.sql";
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(DockerOracleController.class);
|
||||
|
||||
private final Path initScript;
|
||||
|
||||
public DockerOracleController(OracleContainer container) {
|
||||
super(container);
|
||||
try {
|
||||
initScript = Paths.get(getClass().getResource(DB_INIT_SCRIPT_PATH).toURI());
|
||||
} catch (URISyntaxException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDatabasePort() {
|
||||
return 1521;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initialize() throws InterruptedException {
|
||||
try {
|
||||
container.copyFileToContainer(Transferable.of(Files.readAllBytes(initScript)), DB_INIT_SCRIPT_PATH_CONTAINER);
|
||||
container.execInContainer(
|
||||
"sqlplus", "-S",
|
||||
DATABASE_ORACLE_USERNAME + "/" + DATABASE_ORACLE_PASSWORD + "@//localhost:1521/" + DATABASE_ORACLE_PDBNAME,
|
||||
"@" + DB_INIT_SCRIPT_PATH_CONTAINER
|
||||
);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,63 @@
|
||||
/*
|
||||
* 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.oracle;
|
||||
|
||||
import static io.debezium.testing.system.tools.ConfigProperties.DATABASE_ORACLE_PASSWORD;
|
||||
import static io.debezium.testing.system.tools.ConfigProperties.DATABASE_ORACLE_PDBNAME;
|
||||
import static io.debezium.testing.system.tools.ConfigProperties.DATABASE_ORACLE_USERNAME;
|
||||
import static io.debezium.testing.system.tools.ConfigProperties.DOCKER_IMAGE_ORACLE;
|
||||
|
||||
import java.time.Duration;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.testcontainers.containers.OracleContainer;
|
||||
import org.testcontainers.utility.DockerImageName;
|
||||
|
||||
import io.debezium.testing.system.tools.AbstractDockerDeployer;
|
||||
|
||||
/**
|
||||
* @author Jakub Cechacek
|
||||
*/
|
||||
public final class DockerOracleDeployer
|
||||
extends AbstractDockerDeployer<DockerOracleController, OracleContainer> {
|
||||
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(DockerOracleDeployer.class);
|
||||
|
||||
private DockerOracleDeployer(OracleContainer container) {
|
||||
super(container);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected DockerOracleController getController(OracleContainer container) {
|
||||
return new DockerOracleController(container);
|
||||
}
|
||||
|
||||
public static class Builder
|
||||
extends DockerBuilder<Builder, OracleContainer, DockerOracleDeployer> {
|
||||
|
||||
public Builder() {
|
||||
this(new OracleContainer(
|
||||
DockerImageName.parse(DOCKER_IMAGE_ORACLE).asCompatibleSubstituteFor("gvenzl/oracle-xe")));
|
||||
}
|
||||
|
||||
public Builder(OracleContainer container) {
|
||||
super(container);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DockerOracleDeployer build() {
|
||||
container
|
||||
.withDatabaseName(DATABASE_ORACLE_PDBNAME)
|
||||
.withUsername(DATABASE_ORACLE_USERNAME)
|
||||
.withPassword(DATABASE_ORACLE_PASSWORD)
|
||||
.withStartupTimeout(Duration.of(15, ChronoUnit.MINUTES));
|
||||
|
||||
return new DockerOracleDeployer(container);
|
||||
}
|
||||
}
|
||||
}
|
@ -24,11 +24,8 @@ public class DockerSqlServerController extends AbstractDockerSqlDatabaseControll
|
||||
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());
|
||||
}
|
||||
|
@ -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.oracle.DockerOracleDeployer;
|
||||
|
||||
public interface DockerOracle
|
||||
extends TestSetupFixture, SqlDatabaseFixture, DockerNetwork {
|
||||
|
||||
default void setupDatabase() throws Exception {
|
||||
Class.forName("oracle.jdbc.OracleDriver");
|
||||
DockerOracleDeployer deployer = new DockerOracleDeployer.Builder()
|
||||
.withNetwork(getNetwork())
|
||||
.build();
|
||||
SqlDatabaseController controller = deployer.deploy();
|
||||
controller.initialize();
|
||||
setDbController(controller);
|
||||
}
|
||||
|
||||
default void teardownDatabase() throws Exception {
|
||||
getDbController().reload();
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
/*
|
||||
* 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.oracle;
|
||||
|
||||
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.OracleConnector;
|
||||
import io.debezium.testing.system.fixtures.databases.DockerOracle;
|
||||
import io.debezium.testing.system.fixtures.kafka.DockerKafka;
|
||||
import io.debezium.testing.system.tests.DockerConnectorTest;
|
||||
import io.debezium.testing.system.tools.databases.SqlDatabaseController;
|
||||
|
||||
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
|
||||
@Tag("acceptance")
|
||||
@Tag("oracle ")
|
||||
@Tag("docker")
|
||||
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
|
||||
public class DockerOracleConnectorIT
|
||||
extends DockerConnectorTest<SqlDatabaseController>
|
||||
implements DockerKafka, DockerOracle, OracleConnector, OracleTestCases {
|
||||
}
|
Loading…
Reference in New Issue
Block a user