Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.apache.shardingsphere.test.e2e.env.container.atomic.util.DockerImageVersion;
import org.testcontainers.containers.BindMode;
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.wait.strategy.DockerHealthcheckWaitStrategy;
Expand All @@ -42,9 +43,12 @@ public abstract class DockerITContainer extends GenericContainer<DockerITContain

private String name;

private final int majorVersion;

protected DockerITContainer(final String name, final String containerImage) {
super(new RemoteDockerImage(DockerImageName.parse(containerImage)));
this.name = name;
majorVersion = new DockerImageVersion(containerImage).getMajorVersion();
}

protected final void mapResources(final Map<String, String> resources) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,13 @@ public interface StorageContainerConfigurationOption {
*/
int getPort();

/**
* Get default container image name.
*
* @return default container image name
*/
String getDefaultImageName();

/**
* Get container command.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,11 @@ public int getPort() {
return 0;
}

@Override
public String getDefaultImageName() {
return "";
}

@Override
public String getCommand() {
return "";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,11 @@ public int getPort() {
return 10000;
}

@Override
public String getDefaultImageName() {
return "apache/hive:4.0.1";
}

@Override
public String getCommand() {
return "bash -c 'start-hive.sh && tail -f /dev/null'";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,11 @@ public int getPort() {
return 3306;
}

@Override
public String getDefaultImageName() {
return "mariadb:11";
}

@Override
public String getCommand() {
return "--server-id=" + ContainerUtils.generateMySQLServerId();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,11 @@ public int getPort() {
return 3306;
}

@Override
public String getDefaultImageName() {
return "mysql:8.0.40";
}

@Override
public String getCommand() {
return "--server-id=" + ContainerUtils.generateMySQLServerId();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,11 @@ public int getPort() {
return 5432;
}

@Override
public String getDefaultImageName() {
return "opengauss/opengauss:3.1.0";
}

@Override
public String getCommand() {
return "";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,11 @@ public int getPort() {
return 5432;
}

@Override
public String getDefaultImageName() {
return "postgres:12-alpine";
}

@Override
public String getCommand() {
return "-c config_file=/etc/postgresql/postgresql.conf";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@
import org.apache.shardingsphere.test.e2e.env.container.atomic.storage.config.StorageContainerConfiguration;
import org.apache.shardingsphere.test.e2e.env.container.atomic.storage.config.mount.MountConfigurationResourceGenerator;
import org.apache.shardingsphere.test.e2e.env.container.atomic.storage.config.mount.MountSQLResourceGenerator;
import org.apache.shardingsphere.test.e2e.env.container.atomic.util.DockerImageVersion;
import org.apache.shardingsphere.test.e2e.env.container.atomic.util.StorageContainerUtils;
import org.apache.shardingsphere.test.e2e.env.container.wait.JdbcConnectionWaitStrategy;
import org.apache.shardingsphere.test.e2e.env.runtime.DataSourceEnvironment;
Expand All @@ -52,27 +51,24 @@ public abstract class DockerStorageContainer extends DockerITContainer implement

private final StorageContainerConfiguration storageContainerConfig;

private final int majorVersion;

@Getter
private final Map<String, DataSource> actualDataSourceMap = new LinkedHashMap<>();

@Getter
private final Map<String, DataSource> expectedDataSourceMap = new LinkedHashMap<>();

protected DockerStorageContainer(final DatabaseType databaseType, final String containerImage, final StorageContainerConfiguration storageContainerConfig) {
super(databaseType.getType().toLowerCase(), containerImage);
super(databaseType.getType().toLowerCase(), Strings.isNullOrEmpty(containerImage) ? storageContainerConfig.getConfigurationOption().getDefaultImageName() : containerImage);
this.databaseType = databaseType;
this.storageContainerConfig = storageContainerConfig;
majorVersion = new DockerImageVersion(containerImage).getMajorVersion();
}

@Override
protected final void configure() {
setCommands();
addEnvironments();
mapResources(new MountConfigurationResourceGenerator(storageContainerConfig.getConfigurationOption(), databaseType).generate(majorVersion, storageContainerConfig.getScenario()));
mapResources(new MountSQLResourceGenerator(storageContainerConfig.getConfigurationOption(), databaseType).generate(majorVersion, storageContainerConfig.getScenario()));
mapResources(new MountConfigurationResourceGenerator(storageContainerConfig.getConfigurationOption(), databaseType).generate(getMajorVersion(), storageContainerConfig.getScenario()));
mapResources(new MountSQLResourceGenerator(storageContainerConfig.getConfigurationOption(), databaseType).generate(getMajorVersion(), storageContainerConfig.getScenario()));
setPrivilegedMode();
withExposedPorts(getExposedPort());
withStartupTimeout(Duration.of(storageContainerConfig.getConfigurationOption().getStartupTimeoutSeconds(), ChronoUnit.SECONDS));
Expand All @@ -97,7 +93,7 @@ private void setPrivilegedMode() {
}

private String getURL() {
return storageContainerConfig.getConfigurationOption().getDefaultDatabaseName(majorVersion)
return storageContainerConfig.getConfigurationOption().getDefaultDatabaseName(getMajorVersion())
.map(optional -> DataSourceEnvironment.getURL(databaseType, "localhost", getFirstMappedPort(), optional))
.orElseGet(() -> DataSourceEnvironment.getURL(databaseType, "localhost", getFirstMappedPort()));
}
Expand Down Expand Up @@ -134,7 +130,7 @@ public final DataSource createAccessDataSource(final String dataSourceName) {
*/
public final String getJdbcUrl(final String dataSourceName) {
return DataSourceEnvironment.getURL(databaseType, getHost(), getMappedPort(),
Strings.isNullOrEmpty(dataSourceName) ? storageContainerConfig.getConfigurationOption().getDefaultDatabaseName(majorVersion).orElse("") : dataSourceName);
Strings.isNullOrEmpty(dataSourceName) ? storageContainerConfig.getConfigurationOption().getDefaultDatabaseName(getMajorVersion()).orElse("") : dataSourceName);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@

package org.apache.shardingsphere.test.e2e.env.container.atomic.storage.type.docker.impl;

import com.google.common.base.Strings;
import lombok.extern.slf4j.Slf4j;
import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
Expand All @@ -33,7 +32,7 @@
public final class HiveContainer extends DockerStorageContainer {

public HiveContainer(final String containerImage, final StorageContainerConfiguration storageContainerConfig) {
super(TypedSPILoader.getService(DatabaseType.class, "Hive"), Strings.isNullOrEmpty(containerImage) ? "apache/hive:4.0.1" : containerImage, storageContainerConfig);
super(TypedSPILoader.getService(DatabaseType.class, "Hive"), containerImage, storageContainerConfig);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@

package org.apache.shardingsphere.test.e2e.env.container.atomic.storage.type.docker.impl;

import com.google.common.base.Strings;
import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.test.e2e.env.container.atomic.storage.config.StorageContainerConfiguration;
Expand All @@ -29,6 +28,6 @@
public final class MariaDBContainer extends DockerStorageContainer {

public MariaDBContainer(final String containerImage, final StorageContainerConfiguration storageContainerConfig) {
super(TypedSPILoader.getService(DatabaseType.class, "MariaDB"), Strings.isNullOrEmpty(containerImage) ? "mariadb:11" : containerImage, storageContainerConfig);
super(TypedSPILoader.getService(DatabaseType.class, "MariaDB"), containerImage, storageContainerConfig);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@

package org.apache.shardingsphere.test.e2e.env.container.atomic.storage.type.docker.impl;

import com.google.common.base.Strings;
import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.test.e2e.env.container.atomic.storage.config.StorageContainerConfiguration;
Expand All @@ -29,6 +28,6 @@
public final class MySQLContainer extends DockerStorageContainer {

public MySQLContainer(final String containerImage, final StorageContainerConfiguration storageContainerConfig) {
super(TypedSPILoader.getService(DatabaseType.class, "MySQL"), Strings.isNullOrEmpty(containerImage) ? "mysql:8.0.40" : containerImage, storageContainerConfig);
super(TypedSPILoader.getService(DatabaseType.class, "MySQL"), containerImage, storageContainerConfig);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@

package org.apache.shardingsphere.test.e2e.env.container.atomic.storage.type.docker.impl;

import com.google.common.base.Strings;
import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.test.e2e.env.container.atomic.storage.config.StorageContainerConfiguration;
Expand All @@ -29,6 +28,6 @@
public final class OpenGaussContainer extends DockerStorageContainer {

public OpenGaussContainer(final String containerImage, final StorageContainerConfiguration storageContainerConfig) {
super(TypedSPILoader.getService(DatabaseType.class, "openGauss"), Strings.isNullOrEmpty(containerImage) ? "opengauss/opengauss:3.1.0" : containerImage, storageContainerConfig);
super(TypedSPILoader.getService(DatabaseType.class, "openGauss"), containerImage, storageContainerConfig);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@

package org.apache.shardingsphere.test.e2e.env.container.atomic.storage.type.docker.impl;

import com.google.common.base.Strings;
import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.test.e2e.env.container.atomic.storage.config.StorageContainerConfiguration;
Expand All @@ -29,6 +28,6 @@
public final class PostgreSQLContainer extends DockerStorageContainer {

public PostgreSQLContainer(final String containerImage, final StorageContainerConfiguration storageContainerConfig) {
super(TypedSPILoader.getService(DatabaseType.class, "PostgreSQL"), Strings.isNullOrEmpty(containerImage) ? "postgres:12-alpine" : containerImage, storageContainerConfig);
super(TypedSPILoader.getService(DatabaseType.class, "PostgreSQL"), containerImage, storageContainerConfig);
}
}