This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang 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 7310499208e Fix auto commit in jdbc adapter (#28660)
7310499208e is described below
commit 7310499208eb7ec75c7a07df3645f0c2d311b75c
Author: ZhangCheng <[email protected]>
AuthorDate: Sun Oct 8 11:30:22 2023 +0800
Fix auto commit in jdbc adapter (#28660)
* Fix auto commit in jdbc adapter
* Fix auto commit in jdbc adapter
* Fix auto commit in jdbc adapter
* Fix auto commit in jdbc adapter
* Fix auto commit in jdbc adapter
---
.../jdbc/adapter/AbstractStatementAdapter.java | 4 +-
.../core/connection/ShardingSphereConnection.java | 27 +++++--
.../statement/ShardingSpherePreparedStatement.java | 13 +++
.../core/statement/ShardingSphereStatement.java | 13 +++
.../proxy/backend/connector/DatabaseConnector.java | 3 +
.../cases/alterresource/AddResourceTestCase.java | 6 +-
.../cases/alterresource/CloseResourceTestCase.java | 6 +-
.../cases/autocommit/AutoCommitTestCase.java | 92 ++++++++++++++++++++++
.../cases/autocommit/MySQLAutoCommitTestCase.java | 17 ++--
.../autocommit/PostgreSQLAutoCommitTestCase.java | 17 ++--
.../cases/base/BaseTransactionTestCase.java | 28 ++++++-
.../classictransfer/ClassicTransferTestCase.java | 5 +-
.../BroadcastTableTransactionTestCase.java | 6 +-
.../ExceptionInTransactionTestCase.java | 6 +-
.../ImplicitCommitTransactionTestCase.java | 11 ++-
.../MultiJDBCConnectionsTestCase.java | 6 +-
.../MultiOperationsCommitAndRollbackTestCase.java | 6 +-
.../MultiTableCommitAndRollbackTestCase.java | 6 +-
.../MultiTransactionInConnectionTestCase.java | 6 +-
.../SingleTableCommitAndRollbackTestCase.java | 6 +-
.../cases/cursor/OpenGaussCursorTestCase.java | 6 +-
.../deadlock/TransactionDeadlockTestCase.java | 6 +-
.../cases/nested/NestedTransactionTestCase.java | 6 +-
.../cases/readonly/MySQLSetReadOnlyTestCase.java | 6 +-
.../readonly/PostgreSQLSetReadOnlyTestCase.java | 6 +-
.../cases/readonly/SetReadOnlyTestCase.java | 6 +-
.../ReadwriteSplittingInTransactionTestCase.java | 6 +-
.../cases/savepoint/BaseSavePointTestCase.java | 6 +-
.../cases/savepoint/MySQLSavePointTestCase.java | 6 +-
.../savepoint/OpenGaussSavePointTestCase.java | 6 +-
.../savepoint/PostgreSQLSavePointTestCase.java | 6 +-
.../cases/truncate/MySQLLocalTruncateTestCase.java | 6 +-
.../cases/truncate/MySQLXATruncateTestCase.java | 6 +-
.../PostgreSQLAndOpenGaussTruncateTestCase.java | 6 +-
.../engine/base/TransactionBaseE2EIT.java | 8 +-
35 files changed, 248 insertions(+), 128 deletions(-)
diff --git
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/adapter/AbstractStatementAdapter.java
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/adapter/AbstractStatementAdapter.java
index aaed3ccf2ad..fc82caf0a12 100644
---
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/adapter/AbstractStatementAdapter.java
+++
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/adapter/AbstractStatementAdapter.java
@@ -58,10 +58,10 @@ public abstract class AbstractStatementAdapter extends
AbstractUnsupportedOperat
private boolean closed;
protected final boolean isNeedImplicitCommitTransaction(final
ShardingSphereConnection connection, final ExecutionContext executionContext) {
- return isInDistributedTransaction(connection) &&
isModifiedSQL(executionContext) && executionContext.getExecutionUnits().size()
> 1;
+ return connection.getAutoCommit() &&
isNotInDistributedTransaction(connection) && isModifiedSQL(executionContext) &&
executionContext.getExecutionUnits().size() > 1;
}
- private boolean isInDistributedTransaction(final ShardingSphereConnection
connection) {
+ private boolean isNotInDistributedTransaction(final
ShardingSphereConnection connection) {
ConnectionTransaction connectionTransaction =
connection.getDatabaseConnectionManager().getConnectionTransaction();
boolean isInTransaction =
connection.getDatabaseConnectionManager().getConnectionContext().getTransactionContext().isInTransaction();
return
TransactionType.isDistributedTransaction(connectionTransaction.getTransactionType())
&& !isInTransaction;
diff --git
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnection.java
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnection.java
index 055b0840022..c4f0d7631bf 100644
---
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnection.java
+++
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnection.java
@@ -26,6 +26,7 @@ import
org.apache.shardingsphere.driver.jdbc.exception.connection.ConnectionClos
import org.apache.shardingsphere.infra.session.connection.ConnectionContext;
import
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
import org.apache.shardingsphere.mode.manager.ContextManager;
+import org.apache.shardingsphere.transaction.api.TransactionType;
import java.sql.Array;
import java.sql.CallableStatement;
@@ -152,7 +153,7 @@ public final class ShardingSphereConnection extends
AbstractConnectionAdapter {
if
(databaseConnectionManager.getConnectionTransaction().isLocalTransaction()) {
processLocalTransaction();
} else {
- processDistributeTransaction();
+ processDistributedTransaction();
}
}
@@ -163,12 +164,10 @@ public final class ShardingSphereConnection extends
AbstractConnectionAdapter {
}
}
- private void processDistributeTransaction() throws SQLException {
+ private void processDistributedTransaction() throws SQLException {
switch
(databaseConnectionManager.getConnectionTransaction().getDistributedTransactionOperationType(autoCommit))
{
case BEGIN:
- databaseConnectionManager.close();
- databaseConnectionManager.getConnectionTransaction().begin();
-
getConnectionContext().getTransactionContext().setInTransaction(true);
+ beginDistributedTransaction();
break;
case COMMIT:
databaseConnectionManager.getConnectionTransaction().commit();
@@ -178,6 +177,24 @@ public final class ShardingSphereConnection extends
AbstractConnectionAdapter {
}
}
+ private void beginDistributedTransaction() throws SQLException {
+ databaseConnectionManager.close();
+ databaseConnectionManager.getConnectionTransaction().begin();
+ getConnectionContext().getTransactionContext().setInTransaction(true);
+ }
+
+ /**
+ * Handle auto commit.
+ *
+ * @throws SQLException SQL exception
+ */
+ public void handleAutoCommit() throws SQLException {
+ if (!autoCommit &&
TransactionType.isDistributedTransaction(databaseConnectionManager.getConnectionTransaction().getTransactionType())
+ &&
!databaseConnectionManager.getConnectionTransaction().isInTransaction()) {
+ beginDistributedTransaction();
+ }
+ }
+
@Override
public void commit() throws SQLException {
try {
diff --git
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
index 7e7694888c3..beae1457f78 100644
---
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
+++
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
@@ -87,6 +87,7 @@ import
org.apache.shardingsphere.sqlfederation.executor.SQLFederationExecutorCon
import org.apache.shardingsphere.traffic.engine.TrafficEngine;
import
org.apache.shardingsphere.traffic.exception.metadata.EmptyTrafficExecutionUnitException;
import org.apache.shardingsphere.traffic.rule.TrafficRule;
+import org.apache.shardingsphere.transaction.util.AutoCommitUtils;
import java.sql.Connection;
import java.sql.ParameterMetaData;
@@ -267,6 +268,12 @@ public final class ShardingSpherePreparedStatement extends
AbstractPreparedState
return
executor.getSqlFederationEngine().decide(queryContext.getSqlStatementContext(),
queryContext.getParameters(), database, globalRuleMetaData);
}
+ private void handleAutoCommit(final QueryContext queryContext) throws
SQLException {
+ if
(AutoCommitUtils.needOpenTransaction(queryContext.getSqlStatementContext().getSqlStatement()))
{
+ connection.handleAutoCommit();
+ }
+ }
+
private JDBCExecutionUnit createTrafficExecutionUnit(final String
trafficInstanceId, final QueryContext queryContext) throws SQLException {
DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection>
prepareEngine = createDriverExecutionPrepareEngine();
ExecutionUnit executionUnit = new ExecutionUnit(trafficInstanceId, new
SQLUnit(queryContext.getSql(), queryContext.getParameters()));
@@ -338,6 +345,7 @@ public final class ShardingSpherePreparedStatement extends
AbstractPreparedState
}
clearPrevious();
QueryContext queryContext = createQueryContext();
+ handleAutoCommit(queryContext);
trafficInstanceId = getInstanceIdAndSet(queryContext).orElse(null);
if (null != trafficInstanceId) {
JDBCExecutionUnit executionUnit =
createTrafficExecutionUnit(trafficInstanceId, queryContext);
@@ -400,6 +408,7 @@ public final class ShardingSpherePreparedStatement extends
AbstractPreparedState
}
clearPrevious();
QueryContext queryContext = createQueryContext();
+ handleAutoCommit(queryContext);
trafficInstanceId = getInstanceIdAndSet(queryContext).orElse(null);
if (null != trafficInstanceId) {
JDBCExecutionUnit executionUnit =
createTrafficExecutionUnit(trafficInstanceId, queryContext);
@@ -454,6 +463,8 @@ public final class ShardingSpherePreparedStatement extends
AbstractPreparedState
// CHECKSTYLE:ON
connection.rollback();
throw SQLExceptionTransformEngine.toSQLException(ex,
metaDataContexts.getMetaData().getDatabase(databaseName).getProtocolType());
+ } finally {
+ connection.setAutoCommit(true);
}
return result;
}
@@ -469,6 +480,8 @@ public final class ShardingSpherePreparedStatement extends
AbstractPreparedState
// CHECKSTYLE:ON
connection.rollback();
throw SQLExceptionTransformEngine.toSQLException(ex,
metaDataContexts.getMetaData().getDatabase(databaseName).getProtocolType());
+ } finally {
+ connection.setAutoCommit(true);
}
return result;
}
diff --git
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
index 93bed958a6a..1533f0a93db 100644
---
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
+++
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
@@ -81,6 +81,7 @@ import org.apache.shardingsphere.traffic.engine.TrafficEngine;
import
org.apache.shardingsphere.traffic.exception.metadata.EmptyTrafficExecutionUnitException;
import org.apache.shardingsphere.traffic.executor.TrafficExecutorCallback;
import org.apache.shardingsphere.traffic.rule.TrafficRule;
+import org.apache.shardingsphere.transaction.util.AutoCommitUtils;
import java.sql.Connection;
import java.sql.ResultSet;
@@ -310,6 +311,7 @@ public final class ShardingSphereStatement extends
AbstractStatementAdapter {
private int executeUpdate0(final String sql, final ExecuteUpdateCallback
updateCallback, final TrafficExecutorCallback<Integer> trafficCallback) throws
SQLException {
QueryContext queryContext = createQueryContext(sql);
+ handleAutoCommit(queryContext);
databaseName =
queryContext.getDatabaseNameFromSQLStatement().orElse(connection.getDatabaseName());
connection.getDatabaseConnectionManager().getConnectionContext().setCurrentDatabase(databaseName);
trafficInstanceId = getInstanceIdAndSet(queryContext).orElse(null);
@@ -335,6 +337,8 @@ public final class ShardingSphereStatement extends
AbstractStatementAdapter {
// CHECKSTYLE:ON
connection.rollback();
throw SQLExceptionTransformEngine.toSQLException(ex,
metaDataContexts.getMetaData().getDatabase(databaseName).getProtocolType());
+ } finally {
+ connection.setAutoCommit(true);
}
return result;
}
@@ -428,6 +432,7 @@ public final class ShardingSphereStatement extends
AbstractStatementAdapter {
private boolean execute0(final String sql, final ExecuteCallback
executeCallback, final TrafficExecutorCallback<Boolean> trafficCallback) throws
SQLException {
try {
QueryContext queryContext = createQueryContext(sql);
+ handleAutoCommit(queryContext);
databaseName =
queryContext.getDatabaseNameFromSQLStatement().orElse(connection.getDatabaseName());
connection.getDatabaseConnectionManager().getConnectionContext().setCurrentDatabase(databaseName);
trafficInstanceId = getInstanceIdAndSet(queryContext).orElse(null);
@@ -452,6 +457,12 @@ public final class ShardingSphereStatement extends
AbstractStatementAdapter {
}
}
+ private void handleAutoCommit(final QueryContext queryContext) throws
SQLException {
+ if
(AutoCommitUtils.needOpenTransaction(queryContext.getSqlStatementContext().getSqlStatement()))
{
+ connection.handleAutoCommit();
+ }
+ }
+
private JDBCExecutionUnit createTrafficExecutionUnit(final String
trafficInstanceId, final QueryContext queryContext) throws SQLException {
DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection>
prepareEngine = createDriverExecutionPrepareEngine();
ExecutionUnit executionUnit = new ExecutionUnit(trafficInstanceId, new
SQLUnit(queryContext.getSql(), queryContext.getParameters()));
@@ -527,6 +538,8 @@ public final class ShardingSphereStatement extends
AbstractStatementAdapter {
// CHECKSTYLE:ON
connection.rollback();
throw SQLExceptionTransformEngine.toSQLException(ex,
metaDataContexts.getMetaData().getDatabase(databaseName).getProtocolType());
+ } finally {
+ connection.setAutoCommit(true);
}
return result;
}
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/DatabaseConnector.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/DatabaseConnector.java
index 0176ba8657f..6b45eff2eda 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/DatabaseConnector.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/DatabaseConnector.java
@@ -180,6 +180,9 @@ public final class DatabaseConnector implements
DatabaseBackendHandler {
}
private boolean isNeedImplicitCommitTransaction(final
Collection<ExecutionContext> executionContexts) {
+ if (!databaseConnectionManager.getConnectionSession().isAutoCommit()) {
+ return false;
+ }
TransactionStatus transactionStatus =
databaseConnectionManager.getConnectionSession().getTransactionStatus();
if
(!TransactionType.isDistributedTransaction(transactionStatus.getTransactionType())
|| transactionStatus.isInTransaction()) {
return false;
diff --git
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/alterresource/AddResourceTestCase.java
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/alterresource/AddResourceTestCase.java
index e464224e42a..f6c8171bdbd 100644
---
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/alterresource/AddResourceTestCase.java
+++
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/alterresource/AddResourceTestCase.java
@@ -18,12 +18,10 @@
package org.apache.shardingsphere.test.e2e.transaction.cases.alterresource;
import
org.apache.shardingsphere.test.e2e.transaction.cases.base.BaseTransactionTestCase;
-import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionBaseE2EIT;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionContainerComposer;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionTestCase;
import
org.apache.shardingsphere.test.e2e.transaction.engine.constants.TransactionTestConstants;
-import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
@@ -36,8 +34,8 @@ import static org.hamcrest.MatcherAssert.assertThat;
@TransactionTestCase(adapters = TransactionTestConstants.PROXY, scenario =
"addResource")
public final class AddResourceTestCase extends BaseTransactionTestCase {
- public AddResourceTestCase(final TransactionBaseE2EIT
baseTransactionITCase, final DataSource dataSource) {
- super(baseTransactionITCase, dataSource);
+ public AddResourceTestCase(final TransactionTestCaseParameter
testCaseParam) {
+ super(testCaseParam);
}
@Override
diff --git
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/alterresource/CloseResourceTestCase.java
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/alterresource/CloseResourceTestCase.java
index a008e8ab5d0..a35dc008183 100644
---
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/alterresource/CloseResourceTestCase.java
+++
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/alterresource/CloseResourceTestCase.java
@@ -19,12 +19,10 @@ package
org.apache.shardingsphere.test.e2e.transaction.cases.alterresource;
import lombok.extern.slf4j.Slf4j;
import
org.apache.shardingsphere.test.e2e.transaction.cases.base.BaseTransactionTestCase;
-import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionBaseE2EIT;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionContainerComposer;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionTestCase;
import
org.apache.shardingsphere.test.e2e.transaction.engine.constants.TransactionTestConstants;
-import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
@@ -35,8 +33,8 @@ import java.sql.SQLException;
@Slf4j
public final class CloseResourceTestCase extends BaseTransactionTestCase {
- public CloseResourceTestCase(final TransactionBaseE2EIT
baseTransactionITCase, final DataSource dataSource) {
- super(baseTransactionITCase, dataSource);
+ public CloseResourceTestCase(final TransactionTestCaseParameter
testCaseParam) {
+ super(testCaseParam);
}
@Override
diff --git
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/autocommit/AutoCommitTestCase.java
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/autocommit/AutoCommitTestCase.java
new file mode 100644
index 00000000000..bebad984546
--- /dev/null
+++
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/autocommit/AutoCommitTestCase.java
@@ -0,0 +1,92 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * 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.
+ */
+
+package org.apache.shardingsphere.test.e2e.transaction.cases.autocommit;
+
+import
org.apache.shardingsphere.test.e2e.transaction.cases.base.BaseTransactionTestCase;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+/**
+ * Auto commit transaction integration test.
+ */
+public abstract class AutoCommitTestCase extends BaseTransactionTestCase {
+
+ protected AutoCommitTestCase(final TransactionTestCaseParameter
testCaseParam) {
+ super(testCaseParam);
+ }
+
+ protected void assertAutoCommitWithStatement() throws SQLException {
+ try (Connection connection = getDataSource().getConnection()) {
+ connection.setAutoCommit(false);
+ executeWithLog(connection, "DELETE FROM account");
+ assertFalse(connection.getAutoCommit());
+ executeWithLog(connection, "INSERT INTO account VALUES (1, 1, 1)");
+ connection.commit();
+ assertFalse(connection.getAutoCommit());
+ executeUpdateWithLog(connection, "INSERT INTO account VALUES (2,
2, 2)");
+ connection.commit();
+ assertFalse(connection.getAutoCommit());
+ executeWithLog(connection, "INSERT INTO account VALUES (3, 3, 3)");
+ connection.rollback();
+ assertFalse(connection.getAutoCommit());
+ assertAccountRowCount(connection, 2);
+ connection.setAutoCommit(true);
+ assertTrue(connection.getAutoCommit());
+ executeWithLog(connection, "INSERT INTO account VALUES (4, 4, 4)");
+ assertAccountRowCount(connection, 3);
+ }
+ }
+
+ protected void assertAutoCommitWithPrepareStatement() throws SQLException {
+ try (Connection connection = getDataSource().getConnection()) {
+ connection.setAutoCommit(false);
+ executeWithLog(connection, "DELETE FROM account");
+ assertFalse(connection.getAutoCommit());
+ PreparedStatement prepareStatement =
connection.prepareStatement("INSERT INTO account VALUES(?, ?, ?)");
+ setPrepareStatementParameters(prepareStatement, 1);
+ prepareStatement.execute();
+ connection.commit();
+ assertFalse(connection.getAutoCommit());
+ setPrepareStatementParameters(prepareStatement, 2);
+ prepareStatement.executeUpdate();
+ connection.commit();
+ assertFalse(connection.getAutoCommit());
+ setPrepareStatementParameters(prepareStatement, 3);
+ prepareStatement.execute();
+ connection.rollback();
+ assertFalse(connection.getAutoCommit());
+ assertAccountRowCount(connection, 2);
+ connection.setAutoCommit(true);
+ assertTrue(connection.getAutoCommit());
+ setPrepareStatementParameters(prepareStatement, 4);
+ prepareStatement.execute();
+ assertAccountRowCount(connection, 3);
+ }
+ }
+
+ private void setPrepareStatementParameters(final PreparedStatement
prepareStatement, final int value) throws SQLException {
+ prepareStatement.setInt(1, value);
+ prepareStatement.setInt(2, value);
+ prepareStatement.setInt(3, value);
+ }
+}
diff --git
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/autocommit/MySQLAutoCommitTestCase.java
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/autocommit/MySQLAutoCommitTestCase.java
index 3fcaac3d2b9..4d56112136c 100644
---
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/autocommit/MySQLAutoCommitTestCase.java
+++
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/autocommit/MySQLAutoCommitTestCase.java
@@ -17,15 +17,12 @@
package org.apache.shardingsphere.test.e2e.transaction.cases.autocommit;
-import
org.apache.shardingsphere.test.e2e.transaction.cases.base.BaseTransactionTestCase;
-import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionBaseE2EIT;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionContainerComposer;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionTestCase;
import
org.apache.shardingsphere.test.e2e.transaction.engine.constants.TransactionTestConstants;
import org.apache.shardingsphere.transaction.api.TransactionType;
import org.awaitility.Awaitility;
-import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.concurrent.TimeUnit;
@@ -36,16 +33,20 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* MySQL auto commit transaction integration test.
*/
-@TransactionTestCase(dbTypes = TransactionTestConstants.MYSQL,
transactionTypes = TransactionType.LOCAL)
-public final class MySQLAutoCommitTestCase extends BaseTransactionTestCase {
+@TransactionTestCase(dbTypes = TransactionTestConstants.MYSQL)
+public final class MySQLAutoCommitTestCase extends AutoCommitTestCase {
- public MySQLAutoCommitTestCase(final TransactionBaseE2EIT
baseTransactionITCase, final DataSource dataSource) {
- super(baseTransactionITCase, dataSource);
+ public MySQLAutoCommitTestCase(final TransactionTestCaseParameter
testCaseParam) {
+ super(testCaseParam);
}
@Override
public void executeTest(final TransactionContainerComposer
containerComposer) throws SQLException {
- assertAutoCommit();
+ if (TransactionType.LOCAL == getTransactionType()) {
+ assertAutoCommit();
+ }
+ assertAutoCommitWithStatement();
+ assertAutoCommitWithPrepareStatement();
}
private void assertAutoCommit() throws SQLException {
diff --git
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/autocommit/PostgreSQLAutoCommitTestCase.java
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/autocommit/PostgreSQLAutoCommitTestCase.java
index 09b53eecaea..d6660ee51e5 100644
---
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/autocommit/PostgreSQLAutoCommitTestCase.java
+++
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/autocommit/PostgreSQLAutoCommitTestCase.java
@@ -17,15 +17,12 @@
package org.apache.shardingsphere.test.e2e.transaction.cases.autocommit;
-import
org.apache.shardingsphere.test.e2e.transaction.cases.base.BaseTransactionTestCase;
-import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionBaseE2EIT;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionContainerComposer;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionTestCase;
import
org.apache.shardingsphere.test.e2e.transaction.engine.constants.TransactionTestConstants;
import org.apache.shardingsphere.transaction.api.TransactionType;
import org.awaitility.Awaitility;
-import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.concurrent.TimeUnit;
@@ -36,16 +33,20 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* PostgreSQL auto commit transaction integration test.
*/
-@TransactionTestCase(dbTypes = TransactionTestConstants.POSTGRESQL,
transactionTypes = TransactionType.LOCAL)
-public final class PostgreSQLAutoCommitTestCase extends
BaseTransactionTestCase {
+@TransactionTestCase(dbTypes = TransactionTestConstants.POSTGRESQL)
+public final class PostgreSQLAutoCommitTestCase extends AutoCommitTestCase {
- public PostgreSQLAutoCommitTestCase(final TransactionBaseE2EIT
baseTransactionITCase, final DataSource dataSource) {
- super(baseTransactionITCase, dataSource);
+ public PostgreSQLAutoCommitTestCase(final TransactionTestCaseParameter
testCaseParam) {
+ super(testCaseParam);
}
@Override
public void executeTest(final TransactionContainerComposer
containerComposer) throws SQLException {
- assertAutoCommit();
+ if (TransactionType.LOCAL == getTransactionType()) {
+ assertAutoCommit();
+ }
+ assertAutoCommitWithStatement();
+ assertAutoCommitWithPrepareStatement();
}
private void assertAutoCommit() throws SQLException {
diff --git
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/base/BaseTransactionTestCase.java
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/base/BaseTransactionTestCase.java
index 1cb2ed2b0f6..77147530320 100644
---
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/base/BaseTransactionTestCase.java
+++
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/base/BaseTransactionTestCase.java
@@ -24,6 +24,7 @@ import lombok.extern.slf4j.Slf4j;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionBaseE2EIT;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionContainerComposer;
import
org.apache.shardingsphere.test.e2e.transaction.engine.constants.TransactionTestConstants;
+import org.apache.shardingsphere.transaction.api.TransactionType;
import javax.sql.DataSource;
import java.sql.Connection;
@@ -42,9 +43,7 @@ import static org.hamcrest.MatcherAssert.assertThat;
@Slf4j
public abstract class BaseTransactionTestCase {
- private final TransactionBaseE2EIT baseTransactionITCase;
-
- private final DataSource dataSource;
+ private final TransactionTestCaseParameter testCaseParam;
/**
* Execute test cases.
@@ -131,4 +130,27 @@ public abstract class BaseTransactionTestCase {
private void assertBalance(final int actual, final int expected) {
assertThat(String.format("Balance is %s, should be %s.", actual,
expected), actual, is(expected));
}
+
+ protected TransactionBaseE2EIT getBaseTransactionITCase() {
+ return testCaseParam.getBaseTransactionITCase();
+ }
+
+ protected DataSource getDataSource() {
+ return testCaseParam.getDataSource();
+ }
+
+ protected TransactionType getTransactionType() {
+ return testCaseParam.getTransactionType();
+ }
+
+ @Getter
+ @RequiredArgsConstructor
+ public static final class TransactionTestCaseParameter {
+
+ private final TransactionBaseE2EIT baseTransactionITCase;
+
+ private final DataSource dataSource;
+
+ private final TransactionType transactionType;
+ }
}
diff --git
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/classictransfer/ClassicTransferTestCase.java
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/classictransfer/ClassicTransferTestCase.java
index 8567c99996f..88c7638554e 100644
---
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/classictransfer/ClassicTransferTestCase.java
+++
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/classictransfer/ClassicTransferTestCase.java
@@ -21,7 +21,6 @@ import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import
org.apache.shardingsphere.test.e2e.transaction.cases.base.BaseTransactionTestCase;
-import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionBaseE2EIT;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionContainerComposer;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionTestCase;
import org.testcontainers.shaded.org.awaitility.Awaitility;
@@ -44,8 +43,8 @@ import static org.hamcrest.MatcherAssert.assertThat;
@TransactionTestCase
public final class ClassicTransferTestCase extends BaseTransactionTestCase {
- public ClassicTransferTestCase(final TransactionBaseE2EIT
baseTransactionITCase, final DataSource dataSource) {
- super(baseTransactionITCase, dataSource);
+ public ClassicTransferTestCase(final TransactionTestCaseParameter
testCaseParam) {
+ super(testCaseParam);
}
@Override
diff --git
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/BroadcastTableTransactionTestCase.java
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/BroadcastTableTransactionTestCase.java
index 4f752361667..ae7a8e86f94 100644
---
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/BroadcastTableTransactionTestCase.java
+++
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/BroadcastTableTransactionTestCase.java
@@ -19,11 +19,9 @@ package
org.apache.shardingsphere.test.e2e.transaction.cases.commitrollback;
import lombok.SneakyThrows;
import
org.apache.shardingsphere.test.e2e.transaction.cases.base.BaseTransactionTestCase;
-import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionBaseE2EIT;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionContainerComposer;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionTestCase;
-import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
@@ -35,8 +33,8 @@ public final class BroadcastTableTransactionTestCase extends
BaseTransactionTest
private static final String T_ADDRESS = "t_address";
- public BroadcastTableTransactionTestCase(final TransactionBaseE2EIT
baseTransactionITCase, final DataSource dataSource) {
- super(baseTransactionITCase, dataSource);
+ public BroadcastTableTransactionTestCase(final
TransactionTestCaseParameter testCaseParam) {
+ super(testCaseParam);
}
@Override
diff --git
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/ExceptionInTransactionTestCase.java
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/ExceptionInTransactionTestCase.java
index 937d0cf85c2..f6103b89fdc 100644
---
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/ExceptionInTransactionTestCase.java
+++
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/ExceptionInTransactionTestCase.java
@@ -19,12 +19,10 @@ package
org.apache.shardingsphere.test.e2e.transaction.cases.commitrollback;
import lombok.extern.slf4j.Slf4j;
import
org.apache.shardingsphere.test.e2e.transaction.cases.base.BaseTransactionTestCase;
-import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionBaseE2EIT;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionContainerComposer;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionTestCase;
import
org.apache.shardingsphere.test.e2e.transaction.engine.constants.TransactionTestConstants;
-import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
@@ -39,8 +37,8 @@ import static org.junit.jupiter.api.Assertions.fail;
@Slf4j
public final class ExceptionInTransactionTestCase extends
BaseTransactionTestCase {
- public ExceptionInTransactionTestCase(final TransactionBaseE2EIT
baseTransactionITCase, final DataSource dataSource) {
- super(baseTransactionITCase, dataSource);
+ public ExceptionInTransactionTestCase(final TransactionTestCaseParameter
testCaseParam) {
+ super(testCaseParam);
}
@Override
diff --git
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/ImplicitCommitTransactionTestCase.java
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/ImplicitCommitTransactionTestCase.java
index e2b10f49037..27eec3afd13 100644
---
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/ImplicitCommitTransactionTestCase.java
+++
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/ImplicitCommitTransactionTestCase.java
@@ -18,16 +18,15 @@
package org.apache.shardingsphere.test.e2e.transaction.cases.commitrollback;
import
org.apache.shardingsphere.test.e2e.transaction.cases.base.BaseTransactionTestCase;
-import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionBaseE2EIT;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionContainerComposer;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionTestCase;
import org.apache.shardingsphere.transaction.api.TransactionType;
-import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* Implicit commit transaction integration test.
@@ -37,8 +36,8 @@ public final class ImplicitCommitTransactionTestCase extends
BaseTransactionTest
private static final String T_ADDRESS = "t_address";
- public ImplicitCommitTransactionTestCase(final TransactionBaseE2EIT
baseTransactionITCase, final DataSource dataSource) {
- super(baseTransactionITCase, dataSource);
+ public ImplicitCommitTransactionTestCase(final
TransactionTestCaseParameter testCaseParam) {
+ super(testCaseParam);
}
@Override
@@ -61,7 +60,9 @@ public final class ImplicitCommitTransactionTestCase extends
BaseTransactionTest
private void assertBroadcastTableImplicitCommit() throws SQLException {
try (Connection connection = getDataSource().getConnection()) {
+ assertTrue(connection.getAutoCommit());
executeWithLog(connection, "INSERT INTO t_address (id, code,
address) VALUES (1, '1', 'Nanjing')");
+ assertTrue(connection.getAutoCommit());
assertThrows(SQLException.class, () -> executeWithLog(connection,
"INSERT INTO t_address (id, code, address) VALUES (1, '1', 'Nanjing')"));
}
try (Connection connection = getDataSource().getConnection()) {
@@ -71,7 +72,9 @@ public final class ImplicitCommitTransactionTestCase extends
BaseTransactionTest
private void assertShardingTableImplicitCommit() throws SQLException {
try (Connection connection = getDataSource().getConnection()) {
+ assertTrue(connection.getAutoCommit());
executeWithLog(connection, "INSERT INTO account(id, balance,
transaction_id) VALUES (1, 1, 1), (2, 2, 2)");
+ assertTrue(connection.getAutoCommit());
assertThrows(SQLException.class, () -> executeWithLog(connection,
"INSERT INTO account(id, balance, transaction_id) VALUES (1, 1, 1), (2, 2,
2)"));
}
try (Connection connection = getDataSource().getConnection()) {
diff --git
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/MultiJDBCConnectionsTestCase.java
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/MultiJDBCConnectionsTestCase.java
index bc60cb2fd81..7c01352f523 100644
---
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/MultiJDBCConnectionsTestCase.java
+++
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/MultiJDBCConnectionsTestCase.java
@@ -18,13 +18,11 @@
package org.apache.shardingsphere.test.e2e.transaction.cases.commitrollback;
import
org.apache.shardingsphere.test.e2e.transaction.cases.base.BaseTransactionTestCase;
-import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionBaseE2EIT;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionContainerComposer;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionTestCase;
import
org.apache.shardingsphere.test.e2e.transaction.engine.constants.TransactionTestConstants;
import org.apache.shardingsphere.transaction.api.TransactionType;
-import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
@@ -35,8 +33,8 @@ import java.sql.SQLException;
@TransactionTestCase(dbTypes = TransactionTestConstants.MYSQL,
transactionTypes = TransactionType.XA)
public final class MultiJDBCConnectionsTestCase extends
BaseTransactionTestCase {
- public MultiJDBCConnectionsTestCase(final TransactionBaseE2EIT
baseTransactionITCase, final DataSource dataSource) {
- super(baseTransactionITCase, dataSource);
+ public MultiJDBCConnectionsTestCase(final TransactionTestCaseParameter
testCaseParam) {
+ super(testCaseParam);
}
@Override
diff --git
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/MultiOperationsCommitAndRollbackTestCase.java
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/MultiOperationsCommitAndRollbackTestCase.java
index 10ba4092a4c..0d454ed4b05 100644
---
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/MultiOperationsCommitAndRollbackTestCase.java
+++
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/MultiOperationsCommitAndRollbackTestCase.java
@@ -18,11 +18,9 @@
package org.apache.shardingsphere.test.e2e.transaction.cases.commitrollback;
import
org.apache.shardingsphere.test.e2e.transaction.cases.base.BaseTransactionTestCase;
-import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionBaseE2EIT;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionContainerComposer;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionTestCase;
-import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
@@ -32,8 +30,8 @@ import java.sql.SQLException;
@TransactionTestCase
public final class MultiOperationsCommitAndRollbackTestCase extends
BaseTransactionTestCase {
- public MultiOperationsCommitAndRollbackTestCase(final TransactionBaseE2EIT
baseTransactionITCase, final DataSource dataSource) {
- super(baseTransactionITCase, dataSource);
+ public MultiOperationsCommitAndRollbackTestCase(final
TransactionTestCaseParameter testCaseParam) {
+ super(testCaseParam);
}
@Override
diff --git
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/MultiTableCommitAndRollbackTestCase.java
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/MultiTableCommitAndRollbackTestCase.java
index df594e3e934..9f1b730a9fb 100644
---
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/MultiTableCommitAndRollbackTestCase.java
+++
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/MultiTableCommitAndRollbackTestCase.java
@@ -18,11 +18,9 @@
package org.apache.shardingsphere.test.e2e.transaction.cases.commitrollback;
import
org.apache.shardingsphere.test.e2e.transaction.cases.base.BaseTransactionTestCase;
-import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionBaseE2EIT;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionContainerComposer;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionTestCase;
-import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
@@ -36,8 +34,8 @@ public final class MultiTableCommitAndRollbackTestCase
extends BaseTransactionTe
private static final String T_ORDER_ITEM = "t_order_item";
- public MultiTableCommitAndRollbackTestCase(final TransactionBaseE2EIT
baseTransactionITCase, final DataSource dataSource) {
- super(baseTransactionITCase, dataSource);
+ public MultiTableCommitAndRollbackTestCase(final
TransactionTestCaseParameter testCaseParam) {
+ super(testCaseParam);
}
@Override
diff --git
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/MultiTransactionInConnectionTestCase.java
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/MultiTransactionInConnectionTestCase.java
index f31030cb3d6..608b8412dcc 100644
---
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/MultiTransactionInConnectionTestCase.java
+++
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/MultiTransactionInConnectionTestCase.java
@@ -18,11 +18,9 @@
package org.apache.shardingsphere.test.e2e.transaction.cases.commitrollback;
import
org.apache.shardingsphere.test.e2e.transaction.cases.base.BaseTransactionTestCase;
-import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionBaseE2EIT;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionContainerComposer;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionTestCase;
-import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
@@ -33,8 +31,8 @@ import java.sql.SQLException;
@TransactionTestCase
public final class MultiTransactionInConnectionTestCase extends
BaseTransactionTestCase {
- public MultiTransactionInConnectionTestCase(final TransactionBaseE2EIT
baseTransactionITCase, final DataSource dataSource) {
- super(baseTransactionITCase, dataSource);
+ public MultiTransactionInConnectionTestCase(final
TransactionTestCaseParameter testCaseParam) {
+ super(testCaseParam);
}
@Override
diff --git
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/SingleTableCommitAndRollbackTestCase.java
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/SingleTableCommitAndRollbackTestCase.java
index 2d5cb408d2f..d93c1e06b48 100644
---
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/SingleTableCommitAndRollbackTestCase.java
+++
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/SingleTableCommitAndRollbackTestCase.java
@@ -18,11 +18,9 @@
package org.apache.shardingsphere.test.e2e.transaction.cases.commitrollback;
import
org.apache.shardingsphere.test.e2e.transaction.cases.base.BaseTransactionTestCase;
-import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionBaseE2EIT;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionContainerComposer;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionTestCase;
-import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
@@ -33,8 +31,8 @@ import java.sql.Statement;
@TransactionTestCase
public final class SingleTableCommitAndRollbackTestCase extends
BaseTransactionTestCase {
- public SingleTableCommitAndRollbackTestCase(final TransactionBaseE2EIT
baseTransactionITCase, final DataSource dataSource) {
- super(baseTransactionITCase, dataSource);
+ public SingleTableCommitAndRollbackTestCase(final
TransactionTestCaseParameter testCaseParam) {
+ super(testCaseParam);
}
@Override
diff --git
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/cursor/OpenGaussCursorTestCase.java
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/cursor/OpenGaussCursorTestCase.java
index bd784c44ee3..88423ef2c8a 100644
---
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/cursor/OpenGaussCursorTestCase.java
+++
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/cursor/OpenGaussCursorTestCase.java
@@ -19,13 +19,11 @@ package
org.apache.shardingsphere.test.e2e.transaction.cases.cursor;
import lombok.extern.slf4j.Slf4j;
import
org.apache.shardingsphere.test.e2e.transaction.cases.base.BaseTransactionTestCase;
-import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionBaseE2EIT;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionContainerComposer;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionTestCase;
import
org.apache.shardingsphere.test.e2e.transaction.engine.command.CursorSQLCommand;
import
org.apache.shardingsphere.test.e2e.transaction.engine.constants.TransactionTestConstants;
-import javax.sql.DataSource;
import javax.xml.bind.JAXB;
import java.sql.Connection;
import java.sql.ResultSet;
@@ -46,8 +44,8 @@ public final class OpenGaussCursorTestCase extends
BaseTransactionTestCase {
private final CursorSQLCommand cursorSQLCommand;
- public OpenGaussCursorTestCase(final TransactionBaseE2EIT
baseTransactionITCase, final DataSource dataSource) {
- super(baseTransactionITCase, dataSource);
+ public OpenGaussCursorTestCase(final TransactionTestCaseParameter
testCaseParam) {
+ super(testCaseParam);
this.cursorSQLCommand = loadCursorSQLCommand();
}
diff --git
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/deadlock/TransactionDeadlockTestCase.java
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/deadlock/TransactionDeadlockTestCase.java
index 00995b4d71b..d971d31c335 100644
---
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/deadlock/TransactionDeadlockTestCase.java
+++
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/deadlock/TransactionDeadlockTestCase.java
@@ -19,12 +19,10 @@ package
org.apache.shardingsphere.test.e2e.transaction.cases.deadlock;
import lombok.extern.slf4j.Slf4j;
import
org.apache.shardingsphere.test.e2e.transaction.cases.base.BaseTransactionTestCase;
-import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionBaseE2EIT;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionContainerComposer;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionTestCase;
import
org.apache.shardingsphere.test.e2e.transaction.engine.constants.TransactionTestConstants;
-import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Collection;
@@ -49,8 +47,8 @@ public final class TransactionDeadlockTestCase extends
BaseTransactionTestCase {
private final ExecutorService executor = Executors.newFixedThreadPool(2);
- public TransactionDeadlockTestCase(final TransactionBaseE2EIT
baseTransactionITCase, final DataSource dataSource) {
- super(baseTransactionITCase, dataSource);
+ public TransactionDeadlockTestCase(final TransactionTestCaseParameter
testCaseParam) {
+ super(testCaseParam);
}
@Override
diff --git
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/nested/NestedTransactionTestCase.java
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/nested/NestedTransactionTestCase.java
index ca349201e10..9bc44a01e4d 100644
---
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/nested/NestedTransactionTestCase.java
+++
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/nested/NestedTransactionTestCase.java
@@ -19,13 +19,11 @@ package
org.apache.shardingsphere.test.e2e.transaction.cases.nested;
import
org.apache.shardingsphere.driver.jdbc.core.connection.ShardingSphereConnection;
import
org.apache.shardingsphere.test.e2e.transaction.cases.base.BaseTransactionTestCase;
-import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionBaseE2EIT;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionContainerComposer;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionTestCase;
import
org.apache.shardingsphere.test.e2e.transaction.engine.constants.TransactionTestConstants;
import org.apache.shardingsphere.transaction.api.TransactionType;
-import javax.sql.DataSource;
import java.sql.SQLException;
import static org.junit.jupiter.api.Assertions.assertFalse;
@@ -37,8 +35,8 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
@TransactionTestCase(transactionTypes = TransactionType.LOCAL, adapters =
TransactionTestConstants.JDBC)
public final class NestedTransactionTestCase extends BaseTransactionTestCase {
- public NestedTransactionTestCase(final TransactionBaseE2EIT
baseTransactionITCase, final DataSource dataSource) {
- super(baseTransactionITCase, dataSource);
+ public NestedTransactionTestCase(final TransactionTestCaseParameter
testCaseParam) {
+ super(testCaseParam);
}
@Override
diff --git
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/readonly/MySQLSetReadOnlyTestCase.java
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/readonly/MySQLSetReadOnlyTestCase.java
index 8b09cdc68d3..ba286048fed 100644
---
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/readonly/MySQLSetReadOnlyTestCase.java
+++
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/readonly/MySQLSetReadOnlyTestCase.java
@@ -18,12 +18,10 @@
package org.apache.shardingsphere.test.e2e.transaction.cases.readonly;
import lombok.extern.slf4j.Slf4j;
-import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionBaseE2EIT;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionContainerComposer;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionTestCase;
import
org.apache.shardingsphere.test.e2e.transaction.engine.constants.TransactionTestConstants;
-import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
@@ -38,8 +36,8 @@ import static org.junit.jupiter.api.Assertions.fail;
@Slf4j
public final class MySQLSetReadOnlyTestCase extends SetReadOnlyTestCase {
- public MySQLSetReadOnlyTestCase(final TransactionBaseE2EIT
baseTransactionITCase, final DataSource dataSource) {
- super(baseTransactionITCase, dataSource);
+ public MySQLSetReadOnlyTestCase(final TransactionTestCaseParameter
testCaseParam) {
+ super(testCaseParam);
}
@Override
diff --git
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/readonly/PostgreSQLSetReadOnlyTestCase.java
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/readonly/PostgreSQLSetReadOnlyTestCase.java
index 251868f24bb..300296be1b8 100644
---
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/readonly/PostgreSQLSetReadOnlyTestCase.java
+++
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/readonly/PostgreSQLSetReadOnlyTestCase.java
@@ -18,12 +18,10 @@
package org.apache.shardingsphere.test.e2e.transaction.cases.readonly;
import lombok.extern.slf4j.Slf4j;
-import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionBaseE2EIT;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionContainerComposer;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionTestCase;
import
org.apache.shardingsphere.test.e2e.transaction.engine.constants.TransactionTestConstants;
-import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
@@ -34,8 +32,8 @@ import java.sql.SQLException;
@Slf4j
public final class PostgreSQLSetReadOnlyTestCase extends SetReadOnlyTestCase {
- public PostgreSQLSetReadOnlyTestCase(final TransactionBaseE2EIT
baseTransactionITCase, final DataSource dataSource) {
- super(baseTransactionITCase, dataSource);
+ public PostgreSQLSetReadOnlyTestCase(final TransactionTestCaseParameter
testCaseParam) {
+ super(testCaseParam);
}
@Override
diff --git
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/readonly/SetReadOnlyTestCase.java
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/readonly/SetReadOnlyTestCase.java
index 5164dae0df5..a2df686fb71 100644
---
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/readonly/SetReadOnlyTestCase.java
+++
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/readonly/SetReadOnlyTestCase.java
@@ -18,9 +18,7 @@
package org.apache.shardingsphere.test.e2e.transaction.cases.readonly;
import
org.apache.shardingsphere.test.e2e.transaction.cases.base.BaseTransactionTestCase;
-import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionBaseE2EIT;
-import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -34,8 +32,8 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
*/
public abstract class SetReadOnlyTestCase extends BaseTransactionTestCase {
- protected SetReadOnlyTestCase(final TransactionBaseE2EIT
baseTransactionITCase, final DataSource dataSource) {
- super(baseTransactionITCase, dataSource);
+ protected SetReadOnlyTestCase(final TransactionTestCaseParameter
testCaseParam) {
+ super(testCaseParam);
}
void assertNotSetReadOnly() throws SQLException {
diff --git
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/readwritesplitting/ReadwriteSplittingInTransactionTestCase.java
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/readwritesplitting/ReadwriteSplittingInTransactionTestCase.java
index 9c3a6af0399..d4533da6bc0 100644
---
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/readwritesplitting/ReadwriteSplittingInTransactionTestCase.java
+++
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/readwritesplitting/ReadwriteSplittingInTransactionTestCase.java
@@ -18,12 +18,10 @@
package
org.apache.shardingsphere.test.e2e.transaction.cases.readwritesplitting;
import
org.apache.shardingsphere.test.e2e.transaction.cases.base.BaseTransactionTestCase;
-import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionBaseE2EIT;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionContainerComposer;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionTestCase;
import
org.apache.shardingsphere.test.e2e.transaction.engine.constants.TransactionTestConstants;
-import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -37,8 +35,8 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
@TransactionTestCase(dbTypes = TransactionTestConstants.MYSQL, scenario =
"readwrite-splitting", adapters = TransactionTestConstants.PROXY)
public final class ReadwriteSplittingInTransactionTestCase extends
BaseTransactionTestCase {
- public ReadwriteSplittingInTransactionTestCase(final TransactionBaseE2EIT
baseTransactionITCase, final DataSource dataSource) {
- super(baseTransactionITCase, dataSource);
+ public ReadwriteSplittingInTransactionTestCase(final
TransactionTestCaseParameter testCaseParam) {
+ super(testCaseParam);
}
@Override
diff --git
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/BaseSavePointTestCase.java
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/BaseSavePointTestCase.java
index 4d88a180b46..038ccc8b0c0 100644
---
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/BaseSavePointTestCase.java
+++
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/BaseSavePointTestCase.java
@@ -18,9 +18,7 @@
package org.apache.shardingsphere.test.e2e.transaction.cases.savepoint;
import
org.apache.shardingsphere.test.e2e.transaction.cases.base.BaseTransactionTestCase;
-import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionBaseE2EIT;
-import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Savepoint;
@@ -30,8 +28,8 @@ import java.sql.Savepoint;
*/
public abstract class BaseSavePointTestCase extends BaseTransactionTestCase {
- protected BaseSavePointTestCase(final TransactionBaseE2EIT
baseTransactionITCase, final DataSource dataSource) {
- super(baseTransactionITCase, dataSource);
+ protected BaseSavePointTestCase(final TransactionTestCaseParameter
testCaseParam) {
+ super(testCaseParam);
}
void assertRollbackToSavepoint() throws SQLException {
diff --git
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/MySQLSavePointTestCase.java
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/MySQLSavePointTestCase.java
index 6e79e555b1c..141a1394fb4 100644
---
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/MySQLSavePointTestCase.java
+++
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/MySQLSavePointTestCase.java
@@ -17,12 +17,10 @@
package org.apache.shardingsphere.test.e2e.transaction.cases.savepoint;
-import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionBaseE2EIT;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionContainerComposer;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionTestCase;
import
org.apache.shardingsphere.test.e2e.transaction.engine.constants.TransactionTestConstants;
-import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
@@ -35,8 +33,8 @@ import static org.hamcrest.MatcherAssert.assertThat;
@TransactionTestCase(dbTypes = TransactionTestConstants.MYSQL)
public final class MySQLSavePointTestCase extends BaseSavePointTestCase {
- public MySQLSavePointTestCase(final TransactionBaseE2EIT
baseTransactionITCase, final DataSource dataSource) {
- super(baseTransactionITCase, dataSource);
+ public MySQLSavePointTestCase(final TransactionTestCaseParameter
testCaseParam) {
+ super(testCaseParam);
}
@Override
diff --git
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/OpenGaussSavePointTestCase.java
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/OpenGaussSavePointTestCase.java
index e982904c28d..888f8cc072a 100644
---
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/OpenGaussSavePointTestCase.java
+++
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/OpenGaussSavePointTestCase.java
@@ -17,13 +17,11 @@
package org.apache.shardingsphere.test.e2e.transaction.cases.savepoint;
-import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionBaseE2EIT;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionContainerComposer;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionTestCase;
import
org.apache.shardingsphere.test.e2e.transaction.engine.constants.TransactionTestConstants;
import org.opengauss.jdbc.PSQLSavepoint;
-import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
@@ -38,8 +36,8 @@ import static org.junit.jupiter.api.Assertions.fail;
@TransactionTestCase(dbTypes = TransactionTestConstants.OPENGAUSS)
public final class OpenGaussSavePointTestCase extends BaseSavePointTestCase {
- public OpenGaussSavePointTestCase(final TransactionBaseE2EIT
baseTransactionITCase, final DataSource dataSource) {
- super(baseTransactionITCase, dataSource);
+ public OpenGaussSavePointTestCase(final TransactionTestCaseParameter
testCaseParam) {
+ super(testCaseParam);
}
@Override
diff --git
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/PostgreSQLSavePointTestCase.java
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/PostgreSQLSavePointTestCase.java
index 692badc7dca..b35bcd84f81 100644
---
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/PostgreSQLSavePointTestCase.java
+++
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/PostgreSQLSavePointTestCase.java
@@ -18,13 +18,11 @@
package org.apache.shardingsphere.test.e2e.transaction.cases.savepoint;
import lombok.SneakyThrows;
-import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionBaseE2EIT;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionContainerComposer;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionTestCase;
import
org.apache.shardingsphere.test.e2e.transaction.engine.constants.TransactionTestConstants;
import org.postgresql.jdbc.PSQLSavepoint;
-import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
@@ -39,8 +37,8 @@ import static org.junit.jupiter.api.Assertions.fail;
@TransactionTestCase(dbTypes = TransactionTestConstants.POSTGRESQL)
public final class PostgreSQLSavePointTestCase extends BaseSavePointTestCase {
- public PostgreSQLSavePointTestCase(final TransactionBaseE2EIT
baseTransactionITCase, final DataSource dataSource) {
- super(baseTransactionITCase, dataSource);
+ public PostgreSQLSavePointTestCase(final TransactionTestCaseParameter
testCaseParam) {
+ super(testCaseParam);
}
@Override
diff --git
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/truncate/MySQLLocalTruncateTestCase.java
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/truncate/MySQLLocalTruncateTestCase.java
index 32147926e67..5a2ddeadd5c 100644
---
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/truncate/MySQLLocalTruncateTestCase.java
+++
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/truncate/MySQLLocalTruncateTestCase.java
@@ -18,13 +18,11 @@
package org.apache.shardingsphere.test.e2e.transaction.cases.truncate;
import
org.apache.shardingsphere.test.e2e.transaction.cases.base.BaseTransactionTestCase;
-import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionBaseE2EIT;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionContainerComposer;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionTestCase;
import
org.apache.shardingsphere.test.e2e.transaction.engine.constants.TransactionTestConstants;
import org.apache.shardingsphere.transaction.api.TransactionType;
-import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
@@ -34,8 +32,8 @@ import java.sql.SQLException;
@TransactionTestCase(dbTypes = TransactionTestConstants.MYSQL,
transactionTypes = TransactionType.LOCAL)
public final class MySQLLocalTruncateTestCase extends BaseTransactionTestCase {
- public MySQLLocalTruncateTestCase(final TransactionBaseE2EIT
baseTransactionITCase, final DataSource dataSource) {
- super(baseTransactionITCase, dataSource);
+ public MySQLLocalTruncateTestCase(final TransactionTestCaseParameter
testCaseParam) {
+ super(testCaseParam);
}
@Override
diff --git
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/truncate/MySQLXATruncateTestCase.java
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/truncate/MySQLXATruncateTestCase.java
index 53f1e3d1b8a..f897aaa8d0b 100644
---
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/truncate/MySQLXATruncateTestCase.java
+++
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/truncate/MySQLXATruncateTestCase.java
@@ -20,13 +20,11 @@ package
org.apache.shardingsphere.test.e2e.transaction.cases.truncate;
import lombok.extern.slf4j.Slf4j;
import
org.apache.shardingsphere.infra.exception.dialect.exception.transaction.TableModifyInTransactionException;
import
org.apache.shardingsphere.test.e2e.transaction.cases.base.BaseTransactionTestCase;
-import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionBaseE2EIT;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionContainerComposer;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionTestCase;
import
org.apache.shardingsphere.test.e2e.transaction.engine.constants.TransactionTestConstants;
import org.apache.shardingsphere.transaction.api.TransactionType;
-import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
@@ -39,8 +37,8 @@ import static org.junit.jupiter.api.Assertions.fail;
@Slf4j
public final class MySQLXATruncateTestCase extends BaseTransactionTestCase {
- public MySQLXATruncateTestCase(final TransactionBaseE2EIT
baseTransactionITCase, final DataSource dataSource) {
- super(baseTransactionITCase, dataSource);
+ public MySQLXATruncateTestCase(final TransactionTestCaseParameter
testCaseParam) {
+ super(testCaseParam);
}
@Override
diff --git
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/truncate/PostgreSQLAndOpenGaussTruncateTestCase.java
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/truncate/PostgreSQLAndOpenGaussTruncateTestCase.java
index f855c0c2b4f..d2d6d27c76c 100644
---
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/truncate/PostgreSQLAndOpenGaussTruncateTestCase.java
+++
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/truncate/PostgreSQLAndOpenGaussTruncateTestCase.java
@@ -18,12 +18,10 @@
package org.apache.shardingsphere.test.e2e.transaction.cases.truncate;
import
org.apache.shardingsphere.test.e2e.transaction.cases.base.BaseTransactionTestCase;
-import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionBaseE2EIT;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionContainerComposer;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionTestCase;
import
org.apache.shardingsphere.test.e2e.transaction.engine.constants.TransactionTestConstants;
-import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
@@ -33,8 +31,8 @@ import java.sql.SQLException;
@TransactionTestCase(dbTypes = {TransactionTestConstants.POSTGRESQL,
TransactionTestConstants.OPENGAUSS})
public final class PostgreSQLAndOpenGaussTruncateTestCase extends
BaseTransactionTestCase {
- public PostgreSQLAndOpenGaussTruncateTestCase(final TransactionBaseE2EIT
baseTransactionITCase, final DataSource dataSource) {
- super(baseTransactionITCase, dataSource);
+ public PostgreSQLAndOpenGaussTruncateTestCase(final
TransactionTestCaseParameter testCaseParam) {
+ super(testCaseParam);
}
@Override
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 a897f0f19ba..b38ddac8491 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
@@ -26,6 +26,7 @@ import
org.apache.shardingsphere.test.e2e.env.container.atomic.enums.AdapterType
import
org.apache.shardingsphere.test.e2e.env.container.atomic.storage.DockerStorageContainer;
import org.apache.shardingsphere.test.e2e.env.runtime.DataSourceEnvironment;
import
org.apache.shardingsphere.test.e2e.transaction.cases.base.BaseTransactionTestCase;
+import
org.apache.shardingsphere.test.e2e.transaction.cases.base.BaseTransactionTestCase.TransactionTestCaseParameter;
import
org.apache.shardingsphere.test.e2e.transaction.engine.command.CommonSQLCommand;
import
org.apache.shardingsphere.test.e2e.transaction.engine.constants.TransactionTestConstants;
import
org.apache.shardingsphere.test.e2e.transaction.env.TransactionE2EEnvironment;
@@ -43,7 +44,6 @@ import org.junit.jupiter.params.provider.ArgumentsProvider;
import org.junit.jupiter.params.provider.ArgumentsSource;
import org.testcontainers.shaded.org.awaitility.Awaitility;
-import javax.sql.DataSource;
import javax.xml.bind.JAXB;
import java.io.File;
import java.sql.Connection;
@@ -136,7 +136,8 @@ public abstract class TransactionBaseE2EIT {
for (Class<? extends BaseTransactionTestCase> each :
testParam.getTransactionTestCaseClasses()) {
log.info("Transaction IT {} -> {} test begin.", testParam,
each.getSimpleName());
try {
- each.getConstructor(TransactionBaseE2EIT.class,
DataSource.class).newInstance(this,
containerComposer.getDataSource()).execute(containerComposer);
+
each.getConstructor(TransactionTestCaseParameter.class).newInstance(new
TransactionTestCaseParameter(this, containerComposer.getDataSource(),
testParam.getTransactionTypes().get(0)))
+ .execute(containerComposer);
// CHECKSTYLE:OFF
} catch (final Exception ex) {
// CHECKSTYLE:ON
@@ -158,7 +159,8 @@ public abstract class TransactionBaseE2EIT {
}
log.info("Call transaction IT {} -> {} -> {} -> {} test begin.",
testParam, transactionType, provider, each.getSimpleName());
try {
- each.getConstructor(TransactionBaseE2EIT.class,
DataSource.class).newInstance(this,
containerComposer.getDataSource()).execute(containerComposer);
+
each.getConstructor(TransactionTestCaseParameter.class).newInstance(new
TransactionTestCaseParameter(this, containerComposer.getDataSource(),
transactionType))
+ .execute(containerComposer);
// CHECKSTYLE:OFF
} catch (final Exception ex) {
// CHECKSTYLE:ON