Skip to content

Commit de2a7f1

Browse files
authored
Refactor DockerStorageContainer (#36622)
1 parent 680c617 commit de2a7f1

File tree

1 file changed

+25
-15
lines changed

1 file changed

+25
-15
lines changed

test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/storage/type/DockerStorageContainer.java

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@
3131
import org.apache.shardingsphere.test.e2e.env.container.storage.mount.MountSQLResourceGenerator;
3232
import org.apache.shardingsphere.test.e2e.env.container.storage.option.StorageContainerConfigurationOption;
3333
import org.apache.shardingsphere.test.e2e.env.container.util.DockerImageVersion;
34+
import org.apache.shardingsphere.test.e2e.env.container.util.JdbcConnectCheckingWaitStrategy;
3435
import org.apache.shardingsphere.test.e2e.env.container.util.SQLScriptUtils;
3536
import org.apache.shardingsphere.test.e2e.env.container.util.StorageContainerUtils;
36-
import org.apache.shardingsphere.test.e2e.env.container.util.JdbcConnectCheckingWaitStrategy;
3737
import org.apache.shardingsphere.test.e2e.env.runtime.datasource.DataSourceEnvironment;
3838
import org.apache.shardingsphere.test.e2e.env.runtime.scenario.database.DatabaseEnvironmentManager;
3939
import org.apache.shardingsphere.test.e2e.env.runtime.scenario.path.ScenarioDataPath.Type;
@@ -63,6 +63,8 @@ public final class DockerStorageContainer extends DockerITContainer implements S
6363

6464
private final int majorVersion;
6565

66+
private final DataSourceEnvironment dataSourceEnvironment;
67+
6668
@Getter
6769
private final Map<String, DataSource> actualDataSourceMap = new LinkedHashMap<>();
6870

@@ -74,6 +76,7 @@ public DockerStorageContainer(final String containerImage, final StorageContaine
7476
this.option = option;
7577
this.scenario = scenario;
7678
majorVersion = new DockerImageVersion(getContainerImage(containerImage, option)).getMajorVersion();
79+
dataSourceEnvironment = DatabaseTypedSPILoader.getService(DataSourceEnvironment.class, option.getType());
7780
}
7881

7982
private static String getContainerImage(final String containerImage, final StorageContainerConfigurationOption option) {
@@ -85,20 +88,11 @@ private static String getContainerImage(final String containerImage, final Stora
8588
protected void configure() {
8689
setCommands();
8790
addEnvironments();
88-
mapResources(new MountConfigurationResourceGenerator(option).generate(majorVersion, scenario));
89-
if (option.isSupportDockerEntrypoint()) {
90-
mapResources(new MountSQLResourceGenerator(option).generate(majorVersion, scenario));
91-
}
91+
mountConfigurations();
92+
mountSQLFiles();
9293
setPrivilegedMode();
9394
withExposedPorts(getExposedPort());
94-
if (option.isSupportDockerEntrypoint()) {
95-
setWaitStrategy(new JdbcConnectCheckingWaitStrategy(() -> DriverManager.getConnection(
96-
getURL(), StorageContainerConstants.CHECK_READY_USER, StorageContainerConstants.CHECK_READY_PASSWORD)));
97-
} else {
98-
setWaitStrategy(new JdbcConnectCheckingWaitStrategy(() -> DriverManager.getConnection(
99-
getURL(), option.getDefaultUserWhenUnsupportedDockerEntrypoint().orElse(""), option.getDefaultPasswordWhenUnsupportedDockerEntrypoint().orElse(""))));
100-
}
101-
withStartupTimeout(Duration.ofSeconds(option.getStartupTimeoutSeconds()));
95+
setWaitStrategy();
10296
}
10397

10498
private void setCommands() {
@@ -112,14 +106,30 @@ private void addEnvironments() {
112106
option.getEnvironments().forEach(this::addEnv);
113107
}
114108

109+
private void mountConfigurations() {
110+
mapResources(new MountConfigurationResourceGenerator(option).generate(majorVersion, scenario));
111+
}
112+
113+
private void mountSQLFiles() {
114+
if (option.isSupportDockerEntrypoint()) {
115+
mapResources(new MountSQLResourceGenerator(option).generate(majorVersion, scenario));
116+
}
117+
}
118+
115119
private void setPrivilegedMode() {
116120
if (option.withPrivilegedMode()) {
117121
withPrivilegedMode(true);
118122
}
119123
}
120124

125+
private void setWaitStrategy() {
126+
String user = option.isSupportDockerEntrypoint() ? StorageContainerConstants.CHECK_READY_USER : option.getDefaultUserWhenUnsupportedDockerEntrypoint().orElse("");
127+
String password = option.isSupportDockerEntrypoint() ? StorageContainerConstants.CHECK_READY_PASSWORD : option.getDefaultPasswordWhenUnsupportedDockerEntrypoint().orElse("");
128+
setWaitStrategy(new JdbcConnectCheckingWaitStrategy(() -> DriverManager.getConnection(getURL(), user, password)));
129+
withStartupTimeout(Duration.ofSeconds(option.getStartupTimeoutSeconds()));
130+
}
131+
121132
private String getURL() {
122-
DataSourceEnvironment dataSourceEnvironment = DatabaseTypedSPILoader.getService(DataSourceEnvironment.class, option.getType());
123133
return option.getDefaultDatabaseName(majorVersion)
124134
.map(optional -> dataSourceEnvironment.getURL("localhost", getFirstMappedPort(), optional))
125135
.orElseGet(() -> dataSourceEnvironment.getURL("localhost", getFirstMappedPort()));
@@ -133,7 +143,7 @@ protected void containerIsStarted(final InspectContainerResponse containerInfo)
133143
}
134144
Thread.sleep(10000L);
135145
try (
136-
Connection connection = DriverManager.getConnection(DatabaseTypedSPILoader.getService(DataSourceEnvironment.class, option.getType()).getURL("localhost", getFirstMappedPort()),
146+
Connection connection = DriverManager.getConnection(dataSourceEnvironment.getURL("localhost", getFirstMappedPort()),
137147
option.getDefaultUserWhenUnsupportedDockerEntrypoint().orElse(""), option.getDefaultPasswordWhenUnsupportedDockerEntrypoint().orElse(""))) {
138148
for (String each : new MountSQLResourceGenerator(option).generate(majorVersion, scenario).keySet()) {
139149
SQLScriptUtils.execute(connection, each);

0 commit comments

Comments
 (0)