This is an automated email from the ASF dual-hosted git repository.
zhangliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new ed0e581b73a Add
StorageContainerConfigurationOption.isSupportDockerEntrypoint() (#36617)
ed0e581b73a is described below
commit ed0e581b73adc1259f45a06d891e57a8bf95edab
Author: Liang Zhang <[email protected]>
AuthorDate: Thu Sep 18 16:23:21 2025 +0800
Add StorageContainerConfigurationOption.isSupportDockerEntrypoint() (#36617)
* Add StorageContainerConfigurationOption.isSupportDockerEntrypoint()
* Add StorageContainerConfigurationOption.isSupportDockerEntrypoint()
* Add StorageContainerConfigurationOption.isSupportDockerEntrypoint()
---
.../StorageContainerConfigurationOption.java | 27 ++++++++++++++++++
.../HiveStorageContainerConfigurationOption.java | 17 +++++++++++-
.../type/docker/DockerStorageContainer.java | 32 ++++++++++++++++++++--
.../env/container/atomic/util/SQLScriptUtils.java | 11 ++++++++
.../hive/init-sql/99-common-check-ready.sql | 17 ------------
5 files changed, 84 insertions(+), 20 deletions(-)
diff --git
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/option/StorageContainerConfigurationOption.java
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/option/StorageContainerConfigurationOption.java
index cfdc238b278..2a5dfe8d97e 100644
---
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/option/StorageContainerConfigurationOption.java
+++
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/option/StorageContainerConfigurationOption.java
@@ -102,4 +102,31 @@ public interface StorageContainerConfigurationOption
extends DatabaseTypedSPI {
* @return container startup timeout seconds
*/
long getStartupTimeoutSeconds();
+
+ /**
+ * Whether support docker entrypoint.
+ *
+ * @return is support docker entrypoint or not
+ */
+ default boolean isSupportDockerEntrypoint() {
+ return true;
+ }
+
+ /**
+ * Get default user when unsupported docker entrypoint.
+ *
+ * @return default user
+ */
+ default Optional<String> getDefaultUserWhenUnsupportedDockerEntrypoint() {
+ return Optional.empty();
+ }
+
+ /**
+ * Get default password when unsupported docker entrypoint.
+ *
+ * @return default password
+ */
+ default Optional<String>
getDefaultPasswordWhenUnsupportedDockerEntrypoint() {
+ return Optional.empty();
+ }
}
diff --git
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/option/dialect/HiveStorageContainerConfigurationOption.java
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/option/dialect/HiveStorageContainerConfigurationOption.java
index 903fb38e18b..b31d009c59b 100644
---
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/option/dialect/HiveStorageContainerConfigurationOption.java
+++
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/option/dialect/HiveStorageContainerConfigurationOption.java
@@ -77,7 +77,7 @@ public final class HiveStorageContainerConfigurationOption
implements StorageCon
@Override
public Optional<String> getDefaultDatabaseName(final int majorVersion) {
- return Optional.empty();
+ return Optional.of("default");
}
@Override
@@ -85,6 +85,21 @@ public final class HiveStorageContainerConfigurationOption
implements StorageCon
return 180L;
}
+ @Override
+ public boolean isSupportDockerEntrypoint() {
+ return false;
+ }
+
+ @Override
+ public Optional<String> getDefaultUserWhenUnsupportedDockerEntrypoint() {
+ return Optional.of("");
+ }
+
+ @Override
+ public Optional<String>
getDefaultPasswordWhenUnsupportedDockerEntrypoint() {
+ return Optional.of("");
+ }
+
@Override
public String getDatabaseType() {
return "Hive";
diff --git
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/docker/DockerStorageContainer.java
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/docker/DockerStorageContainer.java
index 63d5fbdbad5..652f59fd9ae 100644
---
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/docker/DockerStorageContainer.java
+++
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/docker/DockerStorageContainer.java
@@ -17,9 +17,11 @@
package
org.apache.shardingsphere.test.e2e.env.container.atomic.storage.type.docker;
+import com.github.dockerjava.api.command.InspectContainerResponse;
import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
import lombok.Getter;
+import lombok.SneakyThrows;
import
org.apache.shardingsphere.database.connector.core.spi.DatabaseTypedSPILoader;
import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
import
org.apache.shardingsphere.test.e2e.env.container.atomic.DockerITContainer;
@@ -29,6 +31,7 @@ import
org.apache.shardingsphere.test.e2e.env.container.atomic.storage.mount.Mou
import
org.apache.shardingsphere.test.e2e.env.container.atomic.storage.mount.MountSQLResourceGenerator;
import
org.apache.shardingsphere.test.e2e.env.container.atomic.storage.option.StorageContainerConfigurationOption;
import
org.apache.shardingsphere.test.e2e.env.container.atomic.util.DockerImageVersion;
+import
org.apache.shardingsphere.test.e2e.env.container.atomic.util.SQLScriptUtils;
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.datasource.DataSourceEnvironment;
@@ -36,7 +39,9 @@ import
org.apache.shardingsphere.test.e2e.env.runtime.scenario.database.Database
import
org.apache.shardingsphere.test.e2e.env.runtime.scenario.path.ScenarioDataPath.Type;
import javax.sql.DataSource;
+import java.sql.Connection;
import java.sql.DriverManager;
+import java.sql.SQLException;
import java.time.Duration;
import java.util.Collection;
import java.util.Collections;
@@ -81,10 +86,17 @@ public class DockerStorageContainer extends
DockerITContainer implements Storage
setCommands();
addEnvironments();
mapResources(new
MountConfigurationResourceGenerator(option).generate(majorVersion, scenario));
- mapResources(new
MountSQLResourceGenerator(option).generate(majorVersion, scenario));
+ if (option.isSupportDockerEntrypoint()) {
+ mapResources(new
MountSQLResourceGenerator(option).generate(majorVersion, scenario));
+ }
setPrivilegedMode();
withExposedPorts(getExposedPort());
- setWaitStrategy(new JdbcConnectionWaitStrategy(() ->
DriverManager.getConnection(getURL(),
StorageContainerConstants.CHECK_READY_USER,
StorageContainerConstants.CHECK_READY_PASSWORD)));
+ if (option.isSupportDockerEntrypoint()) {
+ setWaitStrategy(new JdbcConnectionWaitStrategy(() ->
DriverManager.getConnection(getURL(),
StorageContainerConstants.CHECK_READY_USER,
StorageContainerConstants.CHECK_READY_PASSWORD)));
+ } else {
+ setWaitStrategy(new JdbcConnectionWaitStrategy(() ->
DriverManager.getConnection(getURL(),
+
option.getDefaultUserWhenUnsupportedDockerEntrypoint().orElse(""),
option.getDefaultPasswordWhenUnsupportedDockerEntrypoint().orElse(""))));
+ }
withStartupTimeout(Duration.ofSeconds(option.getStartupTimeoutSeconds()));
}
@@ -112,6 +124,22 @@ public class DockerStorageContainer extends
DockerITContainer implements Storage
.orElseGet(() -> dataSourceEnvironment.getURL("localhost",
getFirstMappedPort()));
}
+ @SneakyThrows({SQLException.class, InterruptedException.class})
+ @Override
+ protected final void containerIsStarted(final InspectContainerResponse
containerInfo) {
+ if (option.isSupportDockerEntrypoint()) {
+ return;
+ }
+ Thread.sleep(10000L);
+ try (
+ Connection connection =
DriverManager.getConnection(DatabaseTypedSPILoader.getService(DataSourceEnvironment.class,
option.getType()).getURL("localhost", getFirstMappedPort()),
+
option.getDefaultUserWhenUnsupportedDockerEntrypoint().orElse(""),
option.getDefaultPasswordWhenUnsupportedDockerEntrypoint().orElse(""))) {
+ for (String each : new
MountSQLResourceGenerator(option).generate(majorVersion, scenario).keySet()) {
+ SQLScriptUtils.execute(connection, each);
+ }
+ }
+ }
+
@Override
protected void postStart() {
actualDataSourceMap.putAll(createAccessDataSources(getDataSourceNames(getDataSourceNameAndTypeMap(Type.ACTUAL))));
diff --git
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/util/SQLScriptUtils.java
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/util/SQLScriptUtils.java
index 6fb40980fd6..e24d6d0a0fc 100644
---
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/util/SQLScriptUtils.java
+++
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/util/SQLScriptUtils.java
@@ -61,6 +61,17 @@ public final class SQLScriptUtils {
}
}
+ /**
+ * Execute SQL script.
+ *
+ * @param connection connection
+ * @param scriptFilePath script file path
+ */
+ @SneakyThrows({SQLException.class, IOException.class})
+ public static void execute(final Connection connection, final String
scriptFilePath) {
+ executeBatch(connection, readSQLs(scriptFilePath));
+ }
+
private static Collection<String> readSQLs(final String scriptFilePath)
throws IOException {
Collection<String> result = new LinkedList<>();
try (
diff --git
a/test/e2e/env/src/test/resources/container/hive/init-sql/99-common-check-ready.sql
b/test/e2e/env/src/test/resources/container/hive/init-sql/99-common-check-ready.sql
deleted file mode 100644
index 6173b933aac..00000000000
---
a/test/e2e/env/src/test/resources/container/hive/init-sql/99-common-check-ready.sql
+++ /dev/null
@@ -1,17 +0,0 @@
---
--- Licensed to the Apache Software Foundation (ASF) under one or more
--- contributor license agreements. See the NOTICE file distributed with
--- The ASF licenses this file to You under the Apache License, Version 2.0
--- (the "License"); you may not use this file except in compliance with
--- the License. You may obtain a copy of the License at
---
--- http://www.apache.org/licenses/LICENSE-2.0
---
--- Unless required by applicable law or agreed to in writing, software
--- distributed under the License is distributed on an "AS IS" BASIS,
--- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
--- See the License for the specific language governing permissions and
--- limitations under the License.
---
-
-CREATE USER 'ready_user' PASSWORD 'Ready@123';