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 49796f6b10b Refactor TransactionE2EEnvironment (#36708)
49796f6b10b is described below
commit 49796f6b10b4b0b746d8344e27957d1e8047824d
Author: Liang Zhang <[email protected]>
AuthorDate: Thu Sep 25 20:30:06 2025 +0800
Refactor TransactionE2EEnvironment (#36708)
* Refactor TransactionE2EEnvironment
* Refactor TransactionE2EEnvironment
* Refactor TransactionE2EEnvironment
---
.../engine/base/TransactionBaseE2EIT.java | 8 ++--
.../transaction/env/TransactionE2EEnvironment.java | 53 +++++++---------------
.../src/test/resources/env/e2e-env.properties | 27 ++++++-----
3 files changed, 37 insertions(+), 51 deletions(-)
diff --git
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/operation/transaction/engine/base/TransactionBaseE2EIT.java
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/operation/transaction/engine/base/TransactionBaseE2EIT.java
index 7e283b3ce0f..bce77a3aa62 100644
---
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/operation/transaction/engine/base/TransactionBaseE2EIT.java
+++
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/operation/transaction/engine/base/TransactionBaseE2EIT.java
@@ -267,8 +267,8 @@ public abstract class TransactionBaseE2EIT {
*/
public void addResource(final Connection connection, final String
databaseName, final TransactionContainerComposer containerComposer) throws
SQLException {
String addSourceResource = commonSQL.getSourceAddNewResourceTemplate()
- .replace("${user}",
ENV.getActualDataSourceUsername(containerComposer.getDatabaseType()))
- .replace("${password}",
ENV.getActualDataSourcePassword(containerComposer.getDatabaseType()))
+ .replace("${user}", ENV.getActualDataSourceUsername())
+ .replace("${password}", ENV.getActualDataSourcePassword())
.replace("${ds2}", getActualJdbcUrlTemplate(databaseName,
containerComposer));
executeWithLog(connection, addSourceResource);
int resourceCount = countWithLog("SHOW STORAGE UNITS FROM
sharding_db", containerComposer);
@@ -329,7 +329,7 @@ public abstract class TransactionBaseE2EIT {
}
private static boolean isEnabled() {
- return !ENV.getNeedToRunTestCases().isEmpty() && null != ENV.getType();
+ return !ENV.getScenarios().isEmpty() && null != ENV.getType();
}
private static final class TestCaseArgumentsProvider implements
ArgumentsProvider {
@@ -373,7 +373,7 @@ public abstract class TransactionBaseE2EIT {
log.warn("Transaction test cases are empty.");
}
for (Class<? extends BaseTransactionTestCase> each : TEST_CASES) {
- if (!ENV.getNeedToRunTestCases().isEmpty() &&
!ENV.getNeedToRunTestCases().contains(each.getSimpleName())) {
+ if (!ENV.getScenarios().isEmpty() &&
!ENV.getScenarios().contains(each.getSimpleName())) {
log.info("Collect transaction test case, need to run cases
don't contain this, skip: {}.", each.getName());
continue;
}
diff --git
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/operation/transaction/env/TransactionE2EEnvironment.java
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/operation/transaction/env/TransactionE2EEnvironment.java
index 132e19d1b7b..69c791c4144 100644
---
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/operation/transaction/env/TransactionE2EEnvironment.java
+++
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/operation/transaction/env/TransactionE2EEnvironment.java
@@ -19,13 +19,11 @@ package
org.apache.shardingsphere.test.e2e.operation.transaction.env;
import com.google.common.base.Strings;
import lombok.Getter;
-import lombok.extern.slf4j.Slf4j;
+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.constants.ProxyContainerConstants;
import
org.apache.shardingsphere.test.e2e.env.container.constants.StorageContainerConstants;
-import
org.apache.shardingsphere.test.e2e.env.container.storage.option.dialect.mysql.MySQLStorageContainerCreateOption;
-import
org.apache.shardingsphere.test.e2e.env.container.storage.option.dialect.opengauss.OpenGaussStorageContainerCreateOption;
-import
org.apache.shardingsphere.test.e2e.env.container.storage.option.dialect.postgresql.PostgreSQLStorageContainerCreateOption;
+import
org.apache.shardingsphere.test.e2e.env.container.storage.option.StorageContainerOption;
import org.apache.shardingsphere.test.e2e.env.runtime.type.RunEnvironment.Type;
import
org.apache.shardingsphere.test.e2e.operation.transaction.env.enums.TransactionTestCaseRegistry;
@@ -39,13 +37,14 @@ import java.util.Properties;
import java.util.stream.Collectors;
@Getter
-@Slf4j
public final class TransactionE2EEnvironment {
private static final TransactionE2EEnvironment INSTANCE = new
TransactionE2EEnvironment();
private final Properties props;
+ private final List<String> scenarios;
+
private final Type type;
private final List<String> portBindings;
@@ -56,8 +55,6 @@ public final class TransactionE2EEnvironment {
private final List<String> openGaussVersions;
- private final List<String> needToRunTestCases;
-
private final List<String> allowTransactionTypes;
private final List<String> allowXAProviders;
@@ -66,15 +63,14 @@ public final class TransactionE2EEnvironment {
private TransactionE2EEnvironment() {
props = loadProperties();
- type = props.containsKey("transaction.e2e.env.type") ? null :
Type.valueOf(props.getProperty("transaction.e2e.env.type").toUpperCase());
- portBindings = splitProperty("transaction.e2e.proxy.port.bindings");
- mysqlVersions = splitProperty("transaction.e2e.docker.mysql.version");
- postgresqlVersions =
splitProperty("transaction.e2e.docker.postgresql.version");
- openGaussVersions =
splitProperty("transaction.e2e.docker.opengauss.version");
- needToRunTestCases = splitProperty("transaction.e2e.env.cases");
+ scenarios = splitProperty("e2e.scenarios");
+ type = props.containsKey("e2e.run.type") ? null :
Type.valueOf(props.getProperty("e2e.run.type").toUpperCase());
+ portBindings = splitProperty("e2e.proxy.port.bindings");
+ mysqlVersions = splitProperty("e2e.artifact.database.mysql.image");
+ postgresqlVersions =
splitProperty("e2e.artifact.database.postgresql.image");
+ openGaussVersions =
splitProperty("e2e.artifact.database.opengauss.image");
allowTransactionTypes =
splitProperty("transaction.e2e.env.transtypes");
allowXAProviders = splitProperty("transaction.e2e.env.xa.providers");
- log.info("Loaded properties, allowTransactionTypes:{},
allowXAProviders:{}", allowTransactionTypes, allowXAProviders);
transactionTestCaseRegistryMap = initTransactionTestCaseRegistryMap();
}
@@ -108,43 +104,28 @@ public final class TransactionE2EEnvironment {
*
* @param databaseType database type
* @return default port
- * @throws UnsupportedOperationException unsupported operation exception
*/
public int getActualDataSourceDefaultPort(final DatabaseType databaseType)
{
- switch (databaseType.getType()) {
- case "MySQL":
- return
Integer.parseInt(props.getOrDefault("transaction.e2e.native.mysql.port", new
MySQLStorageContainerCreateOption().getPort()).toString());
- case "PostgreSQL":
- return
Integer.parseInt(props.getOrDefault("transaction.e2e.native.postgresql.port",
new PostgreSQLStorageContainerCreateOption().getPort()).toString());
- case "openGauss":
- return
Integer.parseInt(props.getOrDefault("transaction.e2e.native.opengauss.port",
new OpenGaussStorageContainerCreateOption().getPort()).toString());
- default:
- throw new
UnsupportedOperationException(String.format("Unsupported database type: `%s`",
databaseType.getType()));
- }
+ int defaultPort =
DatabaseTypedSPILoader.getService(StorageContainerOption.class,
databaseType).getCreateOption().getPort();
+ return Integer.parseInt(props.getOrDefault("e2e.native.storage.port",
defaultPort).toString());
}
/**
* Get actual data source username.
*
- * @param databaseType database type
* @return actual data source username
*/
- public String getActualDataSourceUsername(final DatabaseType databaseType)
{
- return type == Type.NATIVE
- ?
String.valueOf(props.getOrDefault(String.format("transaction.e2e.native.%s.username",
databaseType.getType().toLowerCase()), ProxyContainerConstants.USER))
- : StorageContainerConstants.OPERATION_USER;
+ public String getActualDataSourceUsername() {
+ return type == Type.NATIVE ?
String.valueOf(props.getOrDefault("e2e.native.storage.username",
ProxyContainerConstants.USER)) : StorageContainerConstants.OPERATION_USER;
}
/**
* Get actual data source password.
*
- * @param databaseType database type
- * @return actual data source username
+ * @return actual data source password
*/
- public String getActualDataSourcePassword(final DatabaseType databaseType)
{
- return type == Type.NATIVE
- ?
props.getOrDefault(String.format("transaction.e2e.native.%s.password",
databaseType.getType().toLowerCase()),
ProxyContainerConstants.PASSWORD).toString()
- : StorageContainerConstants.OPERATION_PASSWORD;
+ public String getActualDataSourcePassword() {
+ return type == Type.NATIVE ?
props.getOrDefault("e2e.native.storage.password",
ProxyContainerConstants.PASSWORD).toString() :
StorageContainerConstants.OPERATION_PASSWORD;
}
/**
diff --git
a/test/e2e/operation/transaction/src/test/resources/env/e2e-env.properties
b/test/e2e/operation/transaction/src/test/resources/env/e2e-env.properties
index 65f115246b6..91230d650c7 100644
--- a/test/e2e/operation/transaction/src/test/resources/env/e2e-env.properties
+++ b/test/e2e/operation/transaction/src/test/resources/env/e2e-env.properties
@@ -14,21 +14,26 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
-# transaction.e2e.type=DOCKER,NATIVE
-transaction.e2e.env.type=
-# transaction.e2e.proxy.binding.ports=63308:3308
-# transaction.e2e.env.cases=ClassicTransferTestCase
-transaction.e2e.env.cases=TransactionDeadlockTestCase,
MultiJDBCConnectionsTestCase, MultiTransactionInConnectionTestCase,
MultiOperationsCommitAndRollbackTestCase, MySQLAutoCommitTestCase,
PostgreSQLAutoCommitTestCase, BroadcastTableTransactionTestCase,
ExceptionInTransactionTestCase, MultiTableCommitAndRollbackTestCase,
SingleTableCommitAndRollbackTestCase, MySQLSetReadOnlyTestCase,
MySQLLocalTruncateTestCase, MySQLXATruncateTestCase, OpenGaussCursorTestCase,
NestedTransactionTestCase, [...]
+
+#e2e.scenarios=ClassicTransferTestCase
+e2e.scenarios=TransactionDeadlockTestCase, MultiJDBCConnectionsTestCase,
MultiTransactionInConnectionTestCase, MultiOperationsCommitAndRollbackTestCase,
MySQLAutoCommitTestCase, PostgreSQLAutoCommitTestCase,
BroadcastTableTransactionTestCase, ExceptionInTransactionTestCase,
MultiTableCommitAndRollbackTestCase, SingleTableCommitAndRollbackTestCase,
MySQLSetReadOnlyTestCase, MySQLLocalTruncateTestCase, MySQLXATruncateTestCase,
OpenGaussCursorTestCase, NestedTransactionTestCase, ReadwriteSp [...]
+
+#e2e.run.type=DOCKER,NATIVE
+e2e.run.type=
+
# transaction.e2e.env.transtypes=LOCAL, XA, BASE
transaction.e2e.env.transtypes=LOCAL, XA
# transaction.e2e.env.xa.providers=Atomikos, Narayana
transaction.e2e.env.xa.providers=Atomikos, Narayana
-# transaction.e2e.docker.mysql.version=mysql:5.7,mysql:8.0
-transaction.e2e.docker.mysql.version=
-#
transaction.e2e.docker.postgresql.version=postgres:10-alpine,postgres:11-alpine,postgres:12-alpine,postgres:13-alpine,postgres:14-alpine
-transaction.e2e.docker.postgresql.version=
-# transaction.e2e.docker.opengauss.version=opengauss/opengauss:3.1.0
-transaction.e2e.docker.opengauss.version=
+
+#e2e.proxy.port.bindings=63308:3308
+
+#e2e.artifact.database.mysql.image=mysql:5.7,mysql:8.0
+e2e.artifact.database.mysql.image=
+#e2e.artifact.database.postgresql.image=postgres:10-alpine,postgres:11-alpine,postgres:12-alpine,postgres:13-alpine,postgres:14-alpine
+e2e.artifact.database.postgresql.image=
+#e2e.artifact.database.opengauss.image=opengauss/opengauss:3.1.0
+e2e.artifact.database.opengauss.image=
e2e.native.storage.host=127.0.0.1
e2e.native.storage.port=3306