Skip to content

Commit ed0e581

Browse files
authored
Add StorageContainerConfigurationOption.isSupportDockerEntrypoint() (#36617)
* Add StorageContainerConfigurationOption.isSupportDockerEntrypoint() * Add StorageContainerConfigurationOption.isSupportDockerEntrypoint() * Add StorageContainerConfigurationOption.isSupportDockerEntrypoint()
1 parent 34fd356 commit ed0e581

File tree

5 files changed

+84
-20
lines changed

5 files changed

+84
-20
lines changed

test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/option/StorageContainerConfigurationOption.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,4 +102,31 @@ public interface StorageContainerConfigurationOption extends DatabaseTypedSPI {
102102
* @return container startup timeout seconds
103103
*/
104104
long getStartupTimeoutSeconds();
105+
106+
/**
107+
* Whether support docker entrypoint.
108+
*
109+
* @return is support docker entrypoint or not
110+
*/
111+
default boolean isSupportDockerEntrypoint() {
112+
return true;
113+
}
114+
115+
/**
116+
* Get default user when unsupported docker entrypoint.
117+
*
118+
* @return default user
119+
*/
120+
default Optional<String> getDefaultUserWhenUnsupportedDockerEntrypoint() {
121+
return Optional.empty();
122+
}
123+
124+
/**
125+
* Get default password when unsupported docker entrypoint.
126+
*
127+
* @return default password
128+
*/
129+
default Optional<String> getDefaultPasswordWhenUnsupportedDockerEntrypoint() {
130+
return Optional.empty();
131+
}
105132
}

test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/option/dialect/HiveStorageContainerConfigurationOption.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,14 +77,29 @@ public boolean withPrivilegedMode() {
7777

7878
@Override
7979
public Optional<String> getDefaultDatabaseName(final int majorVersion) {
80-
return Optional.empty();
80+
return Optional.of("default");
8181
}
8282

8383
@Override
8484
public long getStartupTimeoutSeconds() {
8585
return 180L;
8686
}
8787

88+
@Override
89+
public boolean isSupportDockerEntrypoint() {
90+
return false;
91+
}
92+
93+
@Override
94+
public Optional<String> getDefaultUserWhenUnsupportedDockerEntrypoint() {
95+
return Optional.of("");
96+
}
97+
98+
@Override
99+
public Optional<String> getDefaultPasswordWhenUnsupportedDockerEntrypoint() {
100+
return Optional.of("");
101+
}
102+
88103
@Override
89104
public String getDatabaseType() {
90105
return "Hive";

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

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,11 @@
1717

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

20+
import com.github.dockerjava.api.command.InspectContainerResponse;
2021
import com.google.common.base.Preconditions;
2122
import com.google.common.base.Strings;
2223
import lombok.Getter;
24+
import lombok.SneakyThrows;
2325
import org.apache.shardingsphere.database.connector.core.spi.DatabaseTypedSPILoader;
2426
import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
2527
import org.apache.shardingsphere.test.e2e.env.container.atomic.DockerITContainer;
@@ -29,14 +31,17 @@
2931
import org.apache.shardingsphere.test.e2e.env.container.atomic.storage.mount.MountSQLResourceGenerator;
3032
import org.apache.shardingsphere.test.e2e.env.container.atomic.storage.option.StorageContainerConfigurationOption;
3133
import org.apache.shardingsphere.test.e2e.env.container.atomic.util.DockerImageVersion;
34+
import org.apache.shardingsphere.test.e2e.env.container.atomic.util.SQLScriptUtils;
3235
import org.apache.shardingsphere.test.e2e.env.container.atomic.util.StorageContainerUtils;
3336
import org.apache.shardingsphere.test.e2e.env.container.wait.JdbcConnectionWaitStrategy;
3437
import org.apache.shardingsphere.test.e2e.env.runtime.datasource.DataSourceEnvironment;
3538
import org.apache.shardingsphere.test.e2e.env.runtime.scenario.database.DatabaseEnvironmentManager;
3639
import org.apache.shardingsphere.test.e2e.env.runtime.scenario.path.ScenarioDataPath.Type;
3740

3841
import javax.sql.DataSource;
42+
import java.sql.Connection;
3943
import java.sql.DriverManager;
44+
import java.sql.SQLException;
4045
import java.time.Duration;
4146
import java.util.Collection;
4247
import java.util.Collections;
@@ -81,10 +86,17 @@ protected final void configure() {
8186
setCommands();
8287
addEnvironments();
8388
mapResources(new MountConfigurationResourceGenerator(option).generate(majorVersion, scenario));
84-
mapResources(new MountSQLResourceGenerator(option).generate(majorVersion, scenario));
89+
if (option.isSupportDockerEntrypoint()) {
90+
mapResources(new MountSQLResourceGenerator(option).generate(majorVersion, scenario));
91+
}
8592
setPrivilegedMode();
8693
withExposedPorts(getExposedPort());
87-
setWaitStrategy(new JdbcConnectionWaitStrategy(() -> DriverManager.getConnection(getURL(), StorageContainerConstants.CHECK_READY_USER, StorageContainerConstants.CHECK_READY_PASSWORD)));
94+
if (option.isSupportDockerEntrypoint()) {
95+
setWaitStrategy(new JdbcConnectionWaitStrategy(() -> DriverManager.getConnection(getURL(), StorageContainerConstants.CHECK_READY_USER, StorageContainerConstants.CHECK_READY_PASSWORD)));
96+
} else {
97+
setWaitStrategy(new JdbcConnectionWaitStrategy(() -> DriverManager.getConnection(getURL(),
98+
option.getDefaultUserWhenUnsupportedDockerEntrypoint().orElse(""), option.getDefaultPasswordWhenUnsupportedDockerEntrypoint().orElse(""))));
99+
}
88100
withStartupTimeout(Duration.ofSeconds(option.getStartupTimeoutSeconds()));
89101
}
90102

@@ -112,6 +124,22 @@ private String getURL() {
112124
.orElseGet(() -> dataSourceEnvironment.getURL("localhost", getFirstMappedPort()));
113125
}
114126

127+
@SneakyThrows({SQLException.class, InterruptedException.class})
128+
@Override
129+
protected final void containerIsStarted(final InspectContainerResponse containerInfo) {
130+
if (option.isSupportDockerEntrypoint()) {
131+
return;
132+
}
133+
Thread.sleep(10000L);
134+
try (
135+
Connection connection = DriverManager.getConnection(DatabaseTypedSPILoader.getService(DataSourceEnvironment.class, option.getType()).getURL("localhost", getFirstMappedPort()),
136+
option.getDefaultUserWhenUnsupportedDockerEntrypoint().orElse(""), option.getDefaultPasswordWhenUnsupportedDockerEntrypoint().orElse(""))) {
137+
for (String each : new MountSQLResourceGenerator(option).generate(majorVersion, scenario).keySet()) {
138+
SQLScriptUtils.execute(connection, each);
139+
}
140+
}
141+
}
142+
115143
@Override
116144
protected void postStart() {
117145
actualDataSourceMap.putAll(createAccessDataSources(getDataSourceNames(getDataSourceNameAndTypeMap(Type.ACTUAL))));

test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/util/SQLScriptUtils.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,17 @@ public static void execute(final DataSource dataSource, final String scriptFileP
6161
}
6262
}
6363

64+
/**
65+
* Execute SQL script.
66+
*
67+
* @param connection connection
68+
* @param scriptFilePath script file path
69+
*/
70+
@SneakyThrows({SQLException.class, IOException.class})
71+
public static void execute(final Connection connection, final String scriptFilePath) {
72+
executeBatch(connection, readSQLs(scriptFilePath));
73+
}
74+
6475
private static Collection<String> readSQLs(final String scriptFilePath) throws IOException {
6576
Collection<String> result = new LinkedList<>();
6677
try (

test/e2e/env/src/test/resources/container/hive/init-sql/99-common-check-ready.sql

Lines changed: 0 additions & 17 deletions
This file was deleted.

0 commit comments

Comments
 (0)