Skip to content

Commit

Permalink
[cdc][e2e] Unify logic to clean docker image when connector e2e test …
Browse files Browse the repository at this point in the history
…finished (#2978)

(cherry picked from commit a24c5d1)
  • Loading branch information
GOODBOY008 authored and lvyanquan committed Jan 18, 2024
1 parent 6d7fb2f commit 7ec53d3
Show file tree
Hide file tree
Showing 7 changed files with 43 additions and 68 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ public void createAndInitialize() {
}
}

/** Drop the database if is exists. */
/** Drop the database if it is existing. */
public void dropDatabase() {
try {
try (Connection connection =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
import com.ververica.cdc.connectors.tests.utils.JdbcProxy;
import com.ververica.cdc.connectors.tests.utils.TestUtils;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
Expand Down Expand Up @@ -114,23 +113,6 @@ public void after() {
super.after();
}

@AfterClass
public static void afterClass() {
// Cleanup the db2 image, because it's too large and will cause the next test to fail.
db2Container.getDockerClient().removeImageCmd(DB2_CUSTOM_IMAGE).exec();
db2Container
.getDockerClient()
.listImagesCmd()
.withImageNameFilter(DB2_IMAGE)
.exec()
.forEach(
image ->
db2Container
.getDockerClient()
.removeImageCmd(image.getId())
.exec());
}

@Test
public void testDb2CDC() throws Exception {
List<String> sqlLines =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,14 @@

package com.ververica.cdc.connectors.tests;

import com.github.dockerjava.api.DockerClient;
import com.ververica.cdc.connectors.tests.utils.FlinkContainerTestEnvironment;
import com.ververica.cdc.connectors.tests.utils.JdbcProxy;
import com.ververica.cdc.connectors.tests.utils.TestUtils;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testcontainers.DockerClientFactory;
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.output.Slf4jLogConsumer;
import org.testcontainers.containers.wait.strategy.Wait;
Expand All @@ -46,7 +43,6 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import static org.junit.Assert.assertNotNull;

Expand Down Expand Up @@ -116,21 +112,6 @@ private Connection getTestConnection(String databaseName) {
}
}

@AfterClass
public static void afterClass() {
Stream.of(OB_SERVER, LOG_PROXY).forEach(GenericContainer::stop);

DockerClient client = DockerClientFactory.instance().client();
client.listImagesCmd()
.withImageNameFilter(OB_SERVER_IMAGE)
.exec()
.forEach(image -> client.removeImageCmd(image.getId()).exec());
client.listImagesCmd()
.withImageNameFilter(OB_LOG_PROXY_IMAGE)
.exec()
.forEach(image -> client.removeImageCmd(image.getId()).exec());
}

@Test
public void testOceanBaseCDC() throws Exception {
List<String> sqlLines =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
import com.ververica.cdc.connectors.tests.utils.JdbcProxy;
import com.ververica.cdc.connectors.tests.utils.TestUtils;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
Expand Down Expand Up @@ -84,16 +83,6 @@ public void after() {
super.after();
}

@AfterClass
public static void afterClass() {
// Cleanup the oracle image, because it's too large and will cause the next test to fail.
oracle.getDockerClient()
.listImagesCmd()
.withImageNameFilter(ORACLE_IMAGE)
.exec()
.forEach(image -> oracle.getDockerClient().removeImageCmd(image.getId()).exec());
}

@Test
public void testOracleCDC() throws Exception {
List<String> sqlLines =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,12 @@
import com.ververica.cdc.connectors.tests.utils.JdbcProxy;
import com.ververica.cdc.connectors.tests.utils.TestUtils;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runners.Parameterized;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testcontainers.DockerClientFactory;
import org.testcontainers.containers.MSSQLServerContainer;
import org.testcontainers.containers.output.Slf4jLogConsumer;
import org.testcontainers.lifecycle.Startables;
Expand Down Expand Up @@ -103,12 +101,6 @@ public void after() {
super.after();
}

@AfterClass
public static void afterClass() {
// Cleanup the sqlserver image, because it's too large and will cause the next test to fail.
DockerClientFactory.instance().client().removeImageCmd(MSSQL_SERVER_IMAGE).exec();
}

@Test
public void testSqlServerCDC() throws Exception {
List<String> sqlLines =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
import com.ververica.cdc.connectors.tests.utils.JdbcProxy;
import com.ververica.cdc.connectors.tests.utils.TestUtils;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Test;
Expand Down Expand Up @@ -142,16 +141,6 @@ public void after() {
super.after();
}

@AfterClass
public static void afterClass() {
// Cleanup the TIDB image, because it's too large and will cause the next test to fail.
TIDB.getDockerClient()
.listImagesCmd()
.withImageNameFilter("pingcap/tikv")
.exec()
.forEach(image -> TIDB.getDockerClient().removeImageCmd(image.getId()).exec());
}

@Test
public void testTIDBCDC() throws Exception {
List<String> sqlLines =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,12 @@
import org.apache.flink.table.api.ValidationException;
import org.apache.flink.util.TestLogger;

import com.github.dockerjava.api.DockerClient;
import com.ververica.cdc.connectors.mysql.testutils.MySqlContainer;
import com.ververica.cdc.connectors.mysql.testutils.MySqlVersion;
import com.ververica.cdc.connectors.mysql.testutils.UniqueDatabase;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Rule;
Expand All @@ -38,6 +40,7 @@
import org.junit.runners.Parameterized;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testcontainers.DockerClientFactory;
import org.testcontainers.containers.Container.ExecResult;
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.Network;
Expand Down Expand Up @@ -174,6 +177,45 @@ public void after() {
mysqlInventoryDatabase.dropDatabase();
}

@AfterClass
public static void afterClass() {
DockerClient dockerClient = DockerClientFactory.instance().client();

// List all containers and remove the ones that are not testcontainers related.
dockerClient.listContainersCmd().exec().stream()
.filter(container -> !container.getImage().startsWith("testcontainers"))
.forEach(
container -> {
dockerClient.stopContainerCmd(container.getId()).exec();
dockerClient.removeContainerCmd(container.getId()).exec();
});

// List all images and remove the ones that are not flink、mysql、testcontainers related.
dockerClient.listImagesCmd().exec().stream()
.filter(
image ->
image.getRepoTags() != null
&& Arrays.stream(image.getRepoTags())
.anyMatch(
tag ->
!tag.startsWith("flink:")
&& !tag.startsWith(
"testcontainers")
&& !tag.equals(
MYSQL
.getDockerImageName())))
.forEach(
image -> {
try {
dockerClient.removeImageCmd(image.getId()).exec();
} catch (Exception e) {
LOG.warn(
"Failed to remove image: {}",
String.join(",", image.getRepoTags()));
}
});
}

/** Allow overriding the default flink properties. */
public void overrideFlinkProperties(String properties) {
jobManager.withEnv("FLINK_PROPERTIES", properties);
Expand Down

0 comments on commit 7ec53d3

Please sign in to comment.