This is an automated email from the ASF dual-hosted git repository.
chengzhang 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 544a5e329a4 Add : add debug mode for transaction E2E (#31629)
544a5e329a4 is described below
commit 544a5e329a4cff89251d9b2cd137fcd6a7d07227
Author: 孙念君 Nianjun Sun <[email protected]>
AuthorDate: Tue Jun 11 11:09:33 2024 +0800
Add : add debug mode for transaction E2E (#31629)
* Add : add debug mode for transaction E2E
* Refactor : fix the checkstyle issues
---
.../atomic/adapter/config/AdaptorContainerConfiguration.java | 3 +++
.../config/ProxyClusterContainerConfigurationFactory.java | 3 ++-
.../adapter/impl/ShardingSphereProxyClusterContainer.java | 3 +++
.../PipelineProxyClusterContainerConfigurationFactory.java | 3 ++-
.../composer/ClusterShowProcessListContainerComposer.java | 3 ++-
.../test/e2e/transaction/engine/base/TransactionBaseE2EIT.java | 10 +++++-----
.../test/e2e/transaction/env/TransactionE2EEnvironment.java | 7 +++++--
.../framework/container/compose/DockerContainerComposer.java | 2 +-
.../proxy/ProxyClusterContainerConfigurationFactory.java | 7 +++++--
.../transaction/framework/param/TransactionTestParameter.java | 2 ++
.../transaction/src/test/resources/env/it-env.properties | 3 ++-
.../config/ProxyClusterContainerConfigurationFactory.java | 5 +++--
.../config/ProxyStandaloneContainerConfigurationFactory.java | 5 +++--
13 files changed, 38 insertions(+), 18 deletions(-)
diff --git
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/adapter/config/AdaptorContainerConfiguration.java
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/adapter/config/AdaptorContainerConfiguration.java
index f49ce3b3e6f..c1b5e1330e5 100644
---
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/adapter/config/AdaptorContainerConfiguration.java
+++
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/adapter/config/AdaptorContainerConfiguration.java
@@ -20,6 +20,7 @@ package
org.apache.shardingsphere.test.e2e.env.container.atomic.adapter.config;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
+import java.util.List;
import java.util.Map;
/**
@@ -31,6 +32,8 @@ public final class AdaptorContainerConfiguration {
private final String proxyDataSourceName;
+ private final List<String> portBindings;
+
private final Map<String, String> mountedResources;
private final String adapterContainerImage;
diff --git
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/adapter/config/ProxyClusterContainerConfigurationFactory.java
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/adapter/config/ProxyClusterContainerConfigurationFactory.java
index 5cf7cecc50b..368fed135b7 100644
---
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/adapter/config/ProxyClusterContainerConfigurationFactory.java
+++
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/adapter/config/ProxyClusterContainerConfigurationFactory.java
@@ -23,6 +23,7 @@ import
org.apache.shardingsphere.test.e2e.env.container.atomic.util.AdapterConta
import
org.apache.shardingsphere.test.e2e.env.container.atomic.constants.ProxyContainerConstants;
import java.util.Collections;
+import java.util.LinkedList;
import java.util.Map;
/**
@@ -37,7 +38,7 @@ public final class ProxyClusterContainerConfigurationFactory {
* @return created instance
*/
public static AdaptorContainerConfiguration newInstance() {
- return new AdaptorContainerConfiguration("", getMountedResources(),
AdapterContainerUtils.getAdapterContainerImage(), "");
+ return new AdaptorContainerConfiguration("", new LinkedList<>(),
getMountedResources(), AdapterContainerUtils.getAdapterContainerImage(), "");
}
private static Map<String, String> getMountedResources() {
diff --git
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/adapter/impl/ShardingSphereProxyClusterContainer.java
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/adapter/impl/ShardingSphereProxyClusterContainer.java
index 1b6de75eb34..3a131743f8c 100644
---
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/adapter/impl/ShardingSphereProxyClusterContainer.java
+++
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/adapter/impl/ShardingSphereProxyClusterContainer.java
@@ -69,6 +69,9 @@ public final class ShardingSphereProxyClusterContainer
extends DockerITContainer
setCommand(config.getContainerCommand());
}
withExposedPorts(3307, 33071, 3308);
+ if (!config.getPortBindings().isEmpty()) {
+ setPortBindings(config.getPortBindings());
+ }
addEnv("TZ", "UTC");
mountConfigurationFiles();
setWaitStrategy(new JdbcConnectionWaitStrategy(() ->
DriverManager.getConnection(DataSourceEnvironment.getURL(databaseType,
diff --git
a/test/e2e/operation/pipeline/src/test/java/org/apache/shardingsphere/test/e2e/data/pipeline/framework/container/config/proxy/PipelineProxyClusterContainerConfigurationFactory.java
b/test/e2e/operation/pipeline/src/test/java/org/apache/shardingsphere/test/e2e/data/pipeline/framework/container/config/proxy/PipelineProxyClusterContainerConfigurationFactory.java
index 43b853d672a..d036dfcd696 100644
---
a/test/e2e/operation/pipeline/src/test/java/org/apache/shardingsphere/test/e2e/data/pipeline/framework/container/config/proxy/PipelineProxyClusterContainerConfigurationFactory.java
+++
b/test/e2e/operation/pipeline/src/test/java/org/apache/shardingsphere/test/e2e/data/pipeline/framework/container/config/proxy/PipelineProxyClusterContainerConfigurationFactory.java
@@ -28,6 +28,7 @@ import
org.apache.shardingsphere.test.e2e.env.container.atomic.constants.ProxyCo
import
org.apache.shardingsphere.test.e2e.env.container.atomic.util.AdapterContainerUtils;
import java.util.HashMap;
+import java.util.LinkedList;
import java.util.Map;
/**
@@ -43,7 +44,7 @@ public final class
PipelineProxyClusterContainerConfigurationFactory {
* @return created instance
*/
public static AdaptorContainerConfiguration newInstance(final DatabaseType
databaseType) {
- return new
AdaptorContainerConfiguration(getProxyDatasourceName(databaseType),
getMountedResource(databaseType),
AdapterContainerUtils.getAdapterContainerImage(), "");
+ return new
AdaptorContainerConfiguration(getProxyDatasourceName(databaseType), new
LinkedList<>(), getMountedResource(databaseType),
AdapterContainerUtils.getAdapterContainerImage(), "");
}
private static String getProxyDatasourceName(final DatabaseType
databaseType) {
diff --git
a/test/e2e/operation/showprocesslist/src/test/java/org/apache/shardingsphere/test/e2e/showprocesslist/container/composer/ClusterShowProcessListContainerComposer.java
b/test/e2e/operation/showprocesslist/src/test/java/org/apache/shardingsphere/test/e2e/showprocesslist/container/composer/ClusterShowProcessListContainerComposer.java
index 253eab64891..06365c0ba2e 100644
---
a/test/e2e/operation/showprocesslist/src/test/java/org/apache/shardingsphere/test/e2e/showprocesslist/container/composer/ClusterShowProcessListContainerComposer.java
+++
b/test/e2e/operation/showprocesslist/src/test/java/org/apache/shardingsphere/test/e2e/showprocesslist/container/composer/ClusterShowProcessListContainerComposer.java
@@ -36,6 +36,7 @@ import
org.apache.shardingsphere.test.e2e.showprocesslist.parameter.ShowProcessL
import javax.sql.DataSource;
import java.util.HashMap;
+import java.util.LinkedList;
import java.util.Map;
/**
@@ -56,7 +57,7 @@ public final class ClusterShowProcessListContainerComposer
implements AutoClosea
governanceContainer = isClusterMode(testParam.getRunMode()) ?
containers.registerContainer(GovernanceContainerFactory.newInstance("ZooKeeper"))
: null;
StorageContainer storageContainer =
containers.registerContainer(StorageContainerFactory.newInstance(testParam.getDatabaseType(),
"",
StorageContainerConfigurationFactory.newInstance(testParam.getDatabaseType(),
testParam.getScenario())));
- AdaptorContainerConfiguration containerConfig = new
AdaptorContainerConfiguration(testParam.getScenario(),
+ AdaptorContainerConfiguration containerConfig = new
AdaptorContainerConfiguration(testParam.getScenario(), new LinkedList<>(),
getMountedResources(testParam.getScenario(),
testParam.getDatabaseType(), testParam.getRunMode(),
testParam.getGovernanceCenter()),
AdapterContainerUtils.getAdapterContainerImage(),
"");
jdbcContainer = AdapterContainerFactory.newInstance(
diff --git
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/base/TransactionBaseE2EIT.java
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/base/TransactionBaseE2EIT.java
index 8f1441df760..d87b8bdcc55 100644
---
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/base/TransactionBaseE2EIT.java
+++
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/base/TransactionBaseE2EIT.java
@@ -179,8 +179,8 @@ public abstract class TransactionBaseE2EIT {
/**
* Create account table.
- *
- * @param connection connection
+ *
+ * @param connection connection
* @throws SQLException SQL exception
*/
public void createAccountTable(final Connection connection) throws
SQLException {
@@ -190,7 +190,7 @@ public abstract class TransactionBaseE2EIT {
/**
* Drop account table.
*
- * @param connection connection
+ * @param connection connection
* @throws SQLException SQL exception
*/
public void dropAccountTable(final Connection connection) throws
SQLException {
@@ -286,7 +286,7 @@ public abstract class TransactionBaseE2EIT {
* Create the account table rule with one data source.
*
* @param connection connection
- * @param containerComposer container composer
+ * @param containerComposer container composer
* @throws SQLException SQL exception
*/
public void createOriginalAccountTableRule(final Connection connection,
final TransactionContainerComposer containerComposer) throws SQLException {
@@ -429,7 +429,7 @@ public abstract class TransactionBaseE2EIT {
private void setTestParameters(final Map<String,
TransactionTestParameter> testParams, final TransactionTestCaseRegistry
registry, final String databaseVersion,
final List<TransactionType>
transactionTypes, final List<String> providers, final String scenario, final
Class<? extends BaseTransactionTestCase> caseClass) {
String key = getUniqueKey(registry.getDbType(),
registry.getRunningAdaptor(), transactionTypes, providers, scenario);
- testParams.putIfAbsent(key, new
TransactionTestParameter(getDatabaseType(registry.getDbType()),
registry.getRunningAdaptor(), transactionTypes, providers,
+ testParams.putIfAbsent(key, new
TransactionTestParameter(getDatabaseType(registry.getDbType()),
registry.getRunningAdaptor(), ENV.getPortBindings(), transactionTypes,
providers,
getStorageContainerImageName(registry.getDbType(),
databaseVersion), scenario, new LinkedList<>()));
testParams.get(key).getTransactionTestCaseClasses().add(caseClass);
}
diff --git
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/env/TransactionE2EEnvironment.java
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/env/TransactionE2EEnvironment.java
index 483c1bdd4e0..909297dcdde 100644
---
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/env/TransactionE2EEnvironment.java
+++
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/env/TransactionE2EEnvironment.java
@@ -48,6 +48,8 @@ public final class TransactionE2EEnvironment {
private final TransactionE2EEnvTypeEnum itEnvType;
+ private final List<String> portBindings;
+
private final List<String> mysqlVersions;
private final List<String> postgresqlVersions;
@@ -65,6 +67,7 @@ public final class TransactionE2EEnvironment {
private TransactionE2EEnvironment() {
props = loadProperties();
itEnvType =
TransactionE2EEnvTypeEnum.valueOf(props.getProperty("transaction.it.env.type",
TransactionE2EEnvTypeEnum.NONE.name()).toUpperCase());
+ portBindings = splitProperty("transaction.it.proxy.port.bindings");
mysqlVersions = splitProperty("transaction.it.docker.mysql.version");
postgresqlVersions =
splitProperty("transaction.it.docker.postgresql.version");
openGaussVersions =
splitProperty("transaction.it.docker.opengauss.version");
@@ -155,7 +158,7 @@ public final class TransactionE2EEnvironment {
/**
* Get proxy password.
- *
+ *
* @return proxy password
*/
public String getProxyPassword() {
@@ -165,7 +168,7 @@ public final class TransactionE2EEnvironment {
/**
* Get proxy userName.
- *
+ *
* @return proxy userName
*/
public String getProxyUserName() {
diff --git
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/framework/container/compose/DockerContainerComposer.java
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/framework/container/compose/DockerContainerComposer.java
index bbf1a841d66..749b12e8cb6 100644
---
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/framework/container/compose/DockerContainerComposer.java
+++
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/framework/container/compose/DockerContainerComposer.java
@@ -63,7 +63,7 @@ public final class DockerContainerComposer extends
BaseContainerComposer {
if
(AdapterType.PROXY.getValue().equalsIgnoreCase(testParam.getAdapter())) {
jdbcContainer = null;
proxyContainer = (ShardingSphereProxyClusterContainer)
AdapterContainerFactory.newInstance(AdapterMode.CLUSTER, AdapterType.PROXY,
- databaseType, storageContainer, testParam.getScenario(),
ProxyClusterContainerConfigurationFactory.newInstance(testParam.getScenario(),
databaseType));
+ databaseType, storageContainer, testParam.getScenario(),
ProxyClusterContainerConfigurationFactory.newInstance(testParam.getScenario(),
databaseType, testParam.getPortBindings()));
proxyContainer.dependsOn(governanceContainer, storageContainer);
getContainers().registerContainer(proxyContainer);
} else {
diff --git
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/framework/container/config/proxy/ProxyClusterContainerConfigurationFactory.java
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/framework/container/config/proxy/ProxyClusterContainerConfigurationFactory.java
index 7aa177eb38a..8c439952f82 100644
---
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/framework/container/config/proxy/ProxyClusterContainerConfigurationFactory.java
+++
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/framework/container/config/proxy/ProxyClusterContainerConfigurationFactory.java
@@ -25,6 +25,7 @@ import
org.apache.shardingsphere.test.e2e.env.container.atomic.constants.ProxyCo
import
org.apache.shardingsphere.test.e2e.env.container.atomic.util.AdapterContainerUtils;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
/**
@@ -38,11 +39,13 @@ public final class
ProxyClusterContainerConfigurationFactory {
*
* @param scenario scenario
* @param databaseType database type
+ * @param portBindings port bindings
* @return created instance
*/
- public static AdaptorContainerConfiguration newInstance(final String
scenario, final DatabaseType databaseType) {
+ public static AdaptorContainerConfiguration newInstance(final String
scenario, final DatabaseType databaseType, final List<String> portBindings) {
String containerCommand = "readwrite-splitting".equals(scenario) ?
"-f" : "";
- return new
AdaptorContainerConfiguration(getProxyDatasourceName(scenario),
getMountedResource(scenario, databaseType),
AdapterContainerUtils.getAdapterContainerImage(), containerCommand);
+ return new
AdaptorContainerConfiguration(getProxyDatasourceName(scenario), portBindings,
getMountedResource(scenario, databaseType),
AdapterContainerUtils.getAdapterContainerImage(),
+ containerCommand);
}
private static String getProxyDatasourceName(final String scenario) {
diff --git
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/framework/param/TransactionTestParameter.java
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/framework/param/TransactionTestParameter.java
index 6164fe7196e..68cda662524 100644
---
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/framework/param/TransactionTestParameter.java
+++
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/framework/param/TransactionTestParameter.java
@@ -34,6 +34,8 @@ public final class TransactionTestParameter {
private final String adapter;
+ private final List<String> portBindings;
+
private final List<TransactionType> transactionTypes;
private final List<String> providers;
diff --git
a/test/e2e/operation/transaction/src/test/resources/env/it-env.properties
b/test/e2e/operation/transaction/src/test/resources/env/it-env.properties
index 16f1bf562fd..151579d1880 100644
--- a/test/e2e/operation/transaction/src/test/resources/env/it-env.properties
+++ b/test/e2e/operation/transaction/src/test/resources/env/it-env.properties
@@ -16,7 +16,8 @@
#
# transaction.it.type=NONE,DOCKER,NATIVE
transaction.it.env.type=NONE
-# transaction.it.env.cases=ClassicTransferTestCase,
PostgreSQLSavePointTestCase, MySQLSavePointTestCase
+# transaction.it.proxy.binding.ports=63308:3308
+# transaction.it.env.cases=ClassicTransferTestCase,
PostgreSQLSavePointTestCase, MySQLSavePointTestCase
transaction.it.env.cases=TransactionDeadlockTestCase,
MultiJDBCConnectionsTestCase, MultiTransactionInConnectionTestCase,
MultiOperationsCommitAndRollbackTestCase, MySQLAutoCommitTestCase,
PostgreSQLAutoCommitTestCase, BroadcastTableTransactionTestCase,
ExceptionInTransactionTestCase, MultiTableCommitAndRollbackTestCase,
SingleTableCommitAndRollbackTestCase, MySQLSetReadOnlyTestCase,
MySQLLocalTruncateTestCase, MySQLXATruncateTestCase, OpenGaussCursorTestCase,
NestedTransactionTestCase, [...]
# transaction.it.env.transtypes=LOCAL, XA, BASE
transaction.it.env.transtypes=LOCAL, XA
diff --git
a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/container/config/ProxyClusterContainerConfigurationFactory.java
b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/container/config/ProxyClusterContainerConfigurationFactory.java
index 7bb606c5067..d53b92c8a37 100644
---
a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/container/config/ProxyClusterContainerConfigurationFactory.java
+++
b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/container/config/ProxyClusterContainerConfigurationFactory.java
@@ -26,6 +26,7 @@ import org.jetbrains.annotations.NotNull;
import java.net.URL;
import java.util.HashMap;
+import java.util.LinkedList;
import java.util.Map;
/**
@@ -36,14 +37,14 @@ public final class
ProxyClusterContainerConfigurationFactory {
/**
* Create instance of adaptor container configuration.
- *
+ *
* @param scenario scenario
* @param databaseType database type
* @param adapterContainerImage adapter container image
* @return created instance
*/
public static AdaptorContainerConfiguration newInstance(final String
scenario, final DatabaseType databaseType, final String adapterContainerImage) {
- return new AdaptorContainerConfiguration(scenario,
getMountedResources(scenario, databaseType), adapterContainerImage, "");
+ return new AdaptorContainerConfiguration(scenario, new LinkedList<>(),
getMountedResources(scenario, databaseType), adapterContainerImage, "");
}
private static Map<String, String> getMountedResources(final String
scenario, final DatabaseType databaseType) {
diff --git
a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/container/config/ProxyStandaloneContainerConfigurationFactory.java
b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/container/config/ProxyStandaloneContainerConfigurationFactory.java
index e01e26c5eda..dc04869f75a 100644
---
a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/container/config/ProxyStandaloneContainerConfigurationFactory.java
+++
b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/container/config/ProxyStandaloneContainerConfigurationFactory.java
@@ -27,6 +27,7 @@ import org.jetbrains.annotations.NotNull;
import java.net.URL;
import java.util.HashMap;
+import java.util.LinkedList;
import java.util.Map;
/**
@@ -37,13 +38,13 @@ public final class
ProxyStandaloneContainerConfigurationFactory {
/**
* Create instance of adaptor container configuration.
- *
+ *
* @param scenario scenario
* @param databaseType database type
* @return created instance
*/
public static AdaptorContainerConfiguration newInstance(final String
scenario, final DatabaseType databaseType) {
- return new AdaptorContainerConfiguration(scenario,
getMountedResources(scenario, databaseType),
AdapterContainerUtils.getAdapterContainerImage(), "");
+ return new AdaptorContainerConfiguration(scenario, new LinkedList<>(),
getMountedResources(scenario, databaseType),
AdapterContainerUtils.getAdapterContainerImage(), "");
}
private static Map<String, String> getMountedResources(final String
scenario, final DatabaseType databaseType) {