This is an automated email from the ASF dual-hosted git repository.
strongduanmu 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 ec9d301cb9a Minor refacotr for E2E test framework (#38724)
ec9d301cb9a is described below
commit ec9d301cb9a0a7595f05390504d73992dc7f94e8
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Wed May 27 10:09:13 2026 +0800
Minor refacotr for E2E test framework (#38724)
---
.../storage/type/NativeStorageContainer.java | 29 +++++++++++++++++++---
.../test/e2e/sql/it/sql/dql/BaseDQLE2EIT.java | 22 +++++++++-------
.../dml/standard/UpdateStatementTestCase.java | 4 +++
3 files changed, 42 insertions(+), 13 deletions(-)
diff --git
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/storage/type/NativeStorageContainer.java
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/storage/type/NativeStorageContainer.java
index a657b09ca6c..7cdc7831c5a 100644
---
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/storage/type/NativeStorageContainer.java
+++
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/storage/type/NativeStorageContainer.java
@@ -36,6 +36,7 @@ import javax.sql.DataSource;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
@@ -44,8 +45,11 @@ import java.util.Map;
*/
public final class NativeStorageContainer implements StorageContainer {
+ private static final Collection<String> INITIALIZED_DATABASES = new
HashSet<>();
+
private final NativeDatabaseEnvironment env;
+ @Getter
private final DatabaseType databaseType;
private final String scenario;
@@ -73,10 +77,26 @@ public final class NativeStorageContainer implements
StorageContainer {
}
private void initDatabase() {
- if (null != option) {
- DataSource dataSource =
StorageContainerUtils.generateDataSource(option.getConnectOption().getURL(env.getHost(),
env.getPort(databaseType)), env.getUser(), env.getPassword(), 2);
- new MountSQLResourceGenerator(option.getType(),
option.getCreateOption()).generate(0, scenario).keySet().forEach(each ->
SQLScriptUtils.execute(dataSource, each));
+ if (null == option) {
+ return;
}
+ synchronized (INITIALIZED_DATABASES) {
+ String initDatabaseCacheKey = getInitDatabaseCacheKey();
+ if (!INITIALIZED_DATABASES.contains(initDatabaseCacheKey)) {
+ initDatabase(initDatabaseCacheKey);
+ }
+ }
+ }
+
+ private void initDatabase(final String initDatabaseCacheKey) {
+ DataSource dataSource =
StorageContainerUtils.generateDataSource(option.getConnectOption().getURL(env.getHost(),
env.getPort(databaseType)),
+ env.getUser(), env.getPassword(), 2);
+ new MountSQLResourceGenerator(option.getType(),
option.getCreateOption()).generate(0, scenario).keySet().forEach(each ->
SQLScriptUtils.execute(dataSource, each));
+ INITIALIZED_DATABASES.add(initDatabaseCacheKey);
+ }
+
+ private String getInitDatabaseCacheKey() {
+ return String.join(":", String.valueOf(scenario),
databaseType.getType(), env.getHost(),
String.valueOf(env.getPort(databaseType)));
}
private Map<String, DataSource> createDataSourceMap(final Type type) {
@@ -86,7 +106,8 @@ public final class NativeStorageContainer implements
StorageContainer {
private Map<String, DataSource> getDataSourceMap(final Collection<String>
databaseNames) {
Map<String, DataSource> result = new HashMap<>(databaseNames.size(),
1F);
for (String each : databaseNames) {
- DataSource dataSource =
StorageContainerUtils.generateDataSource(option.getConnectOption().getURL(env.getHost(),
env.getPort(databaseType), each), env.getUser(), env.getPassword(), 2);
+ DataSource dataSource =
StorageContainerUtils.generateDataSource(option.getConnectOption().getURL(env.getHost(),
env.getPort(databaseType), each),
+ env.getUser(), env.getPassword(), 2);
result.put(each, dataSource);
}
return result;
diff --git
a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/sql/it/sql/dql/BaseDQLE2EIT.java
b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/sql/it/sql/dql/BaseDQLE2EIT.java
index 08756bfb120..c692a9c0507 100644
---
a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/sql/it/sql/dql/BaseDQLE2EIT.java
+++
b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/sql/it/sql/dql/BaseDQLE2EIT.java
@@ -89,16 +89,20 @@ public abstract class BaseDQLE2EIT implements SQLE2EIT {
private void fillDataOnlyOnce(final AssertionTestParameter testParam)
throws IOException, JAXBException {
String cacheKey = testParam.getKey() + "-" +
System.identityHashCode(getEnvironmentEngine().getActualDataSourceMap());
- if (!FILLED_SUITES.contains(cacheKey)) {
- synchronized (FILLED_SUITES) {
- if (!FILLED_SUITES.contains(cacheKey)) {
- new DataSetEnvironmentManager(
- new ScenarioDataPath(testParam.getScenario(),
Type.ACTUAL).getDataSetFile(), getEnvironmentEngine().getActualDataSourceMap(),
testParam.getDatabaseType()).fillData();
- new DataSetEnvironmentManager(
- new ScenarioDataPath(testParam.getScenario(),
Type.EXPECTED).getDataSetFile(),
getEnvironmentEngine().getExpectedDataSourceMap(),
testParam.getDatabaseType()).fillData();
- FILLED_SUITES.add(cacheKey);
- }
+ if (FILLED_SUITES.contains(cacheKey)) {
+ return;
+ }
+ synchronized (FILLED_SUITES) {
+ if (FILLED_SUITES.contains(cacheKey)) {
+ return;
}
+ new DataSetEnvironmentManager(
+ new ScenarioDataPath(testParam.getScenario(),
Type.ACTUAL).getDataSetFile(), getEnvironmentEngine().getActualDataSourceMap(),
+ testParam.getDatabaseType()).fillData();
+ new DataSetEnvironmentManager(
+ new ScenarioDataPath(testParam.getScenario(),
Type.EXPECTED).getDataSetFile(),
getEnvironmentEngine().getExpectedDataSourceMap(),
+ testParam.getDatabaseType()).fillData();
+ FILLED_SUITES.add(cacheKey);
}
}
diff --git
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/dml/standard/UpdateStatementTestCase.java
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/dml/standard/UpdateStatementTestCase.java
index 82080592e86..f2fb8705242 100644
---
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/dml/standard/UpdateStatementTestCase.java
+++
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/dml/standard/UpdateStatementTestCase.java
@@ -27,6 +27,7 @@ import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.s
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.set.ExpectedSetClause;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.table.ExpectedTable;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.where.ExpectedWhereClause;
+import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.with.ExpectedWithClause;
import javax.xml.bind.annotation.XmlElement;
@@ -37,6 +38,9 @@ import javax.xml.bind.annotation.XmlElement;
@Setter
public final class UpdateStatementTestCase extends SQLParserTestCase {
+ @XmlElement(name = "with")
+ private ExpectedWithClause withClause;
+
@XmlElement
private ExpectedTable table;