Refactor Testcontainers configuration for Apache Cassandra and image name substitution.

This commit is contained in:
John Blum
2023-05-12 20:21:08 -07:00
parent 68a9ab6650
commit 54ab0fb789
2 changed files with 37 additions and 32 deletions

View File

@@ -74,6 +74,7 @@ public class TestcontainersCassandraConfiguration extends TestCassandraConfigura
// Testcontainers Constants
private static final String TESTCONTAINERS_HUB_IMAGE_NAME_PREFIX = "harbor-repo.vmware.com/dockerhub-proxy-cache/";
private static final String TESTCONTAINERS_HTTPS_PROXY = String.format("https://%s", TESTCONTAINERS_HUB_IMAGE_NAME_PREFIX);
private static final String TESTCONTAINERS_PULL_PAUSE_TIMEOUT = "5"; // 5 seconds
private static final String TESTCONTAINERS_RYUK_DISABLED = "true";
private static final String TESTCONTAINERS_RYUK_ENABLED = "false";
@@ -100,21 +101,7 @@ public class TestcontainersCassandraConfiguration extends TestCassandraConfigura
return this.logger;
}
protected void logInfo(String message, Object... arguments) {
Logger logger = getLogger();
if (logger.isInfoEnabled()) {
logger.info(String.format(message, arguments), arguments);
}
}
protected void logToSystemOut(String message, Object... arguments) {
System.out.printf(message, arguments);
System.out.flush();
}
private @NonNull GenericContainer<?> logContainerConfiguration(@NonNull GenericContainer<?> cassandraContainer) {
protected @NonNull GenericContainer<?> logContainerConfiguration(@NonNull GenericContainer<?> cassandraContainer) {
logInfo("Is Jenkins Environment [{}]", isJenkinsEnvironment());
logToSystemOut("Is Jenkins Environment [%s]", isNotJenkinsEnvironment());
@@ -129,6 +116,20 @@ public class TestcontainersCassandraConfiguration extends TestCassandraConfigura
return cassandraContainer;
}
protected void logInfo(String message, Object... arguments) {
Logger logger = getLogger();
if (logger.isInfoEnabled()) {
logger.info(String.format(message, arguments), arguments);
}
}
protected void logToSystemOut(String message, Object... arguments) {
System.out.printf(message, arguments);
System.out.flush();
}
private @NonNull GenericContainer<?> newCassandraContainer(@NonNull Environment environment) {
return new CassandraContainer<>(CASSANDRA_DOCKER_IMAGE_NAME)
@@ -138,14 +139,8 @@ public class TestcontainersCassandraConfiguration extends TestCassandraConfigura
.withReuse(true);
}
// Information (feedback) received from Sergei Egorov.
private @NonNull GenericContainer<?> newEnvironmentOptimizedCassandraContainer(@NonNull Environment environment) {
return withCassandraEnvironmentConfiguration(newCassandraContainer(environment)
.withEnv("JVM_OPTS", "-Dcassandra.skip_wait_for_gossip_to_settle=0 -Dcassandra.initial_token=0")
.withEnv("CASSANDRA_SNITCH", "SimpleSnitch")
.withEnv("HEAP_NEWSIZE", "128M")
.withEnv("MAX_HEAP_SIZE", "1024M"), environment);
return withCassandraEnvironmentConfiguration(newCassandraContainer(environment), environment);
}
private @NonNull CassandraTemplate newCassandraTemplate(@NonNull CqlSession session) {
@@ -173,8 +168,10 @@ public class TestcontainersCassandraConfiguration extends TestCassandraConfigura
return isNotJenkinsEnvironment()
? cassandraContainer.withEnv("TESTCONTAINERS_RYUK_DISABLED", TESTCONTAINERS_RYUK_DISABLED)
: cassandraContainer.withEnv("TESTCONTAINERS_HUB_IMAGE_NAME_PREFIX", TESTCONTAINERS_HUB_IMAGE_NAME_PREFIX);
//: cassandraContainer;
.withEnv("TESTCONTAINERS_PULL_PAUSE_TIMEOUT", TESTCONTAINERS_PULL_PAUSE_TIMEOUT)
: cassandraContainer.withEnv("TESTCONTAINERS_HUB_IMAGE_NAME_PREFIX", TESTCONTAINERS_HUB_IMAGE_NAME_PREFIX)
.withEnv("TESTCONTAINERS_PULL_PAUSE_TIMEOUT", TESTCONTAINERS_PULL_PAUSE_TIMEOUT);
//: cassandraContainer;
}
private @NonNull GenericContainer<?> withCassandraServer(@NonNull GenericContainer<?> cassandraContainer,

View File

@@ -44,10 +44,24 @@ public class VmwHarborProxyImageNameSubstitutor extends ImageNameSubstitutor {
@Override
public DockerImageName apply(DockerImageName original) {
logInfo("Is Jenkins Environment [{}]", isJenkinsEnvironment());
String originalDockerImageName = original.asCanonicalNameString();
String resolvedDockerImageName = originalDockerImageName;
String resolvedDockerImageName = resolveDockerImageName(originalDockerImageName);;
logInfo("Original Docker Image Name [%s]", originalDockerImageName);
logInfo("Resolved Docker Image Name [{}]", resolvedDockerImageName);
return DockerImageName.parse(resolvedDockerImageName);
}
private boolean isJenkinsEnvironment() {
return Boolean.TRUE.equals(Boolean.getBoolean("jenkins"));
}
private String resolveDockerImageName(String originalDockerImageName) {
String resolvedDockerImageName = originalDockerImageName;
if (originalDockerImageName.contains(VMWARE_HARBOR_PROXY_URL)) {
originalDockerImageName = originalDockerImageName.substring(TESTCONTAINERS_HUB_IMAGE_NAME_PREFIX.length() - 1);
@@ -57,13 +71,7 @@ public class VmwHarborProxyImageNameSubstitutor extends ImageNameSubstitutor {
resolvedDockerImageName = String.format(TESTCONTAINERS_HUB_IMAGE_NAME_TEMPLATE, originalDockerImageName);
}
logInfo("Resolved Docker Image Name [{}]", resolvedDockerImageName);
return DockerImageName.parse(resolvedDockerImageName);
}
private boolean isJenkinsEnvironment() {
return Boolean.TRUE.equals(Boolean.getBoolean("jenkins"));
return resolvedDockerImageName;
}
@Override