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';

Reply via email to