This is an automated email from the ASF dual-hosted git repository.
panjuan 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 117de56e685 Upgrade to junit 5 on transaction E2E (#24560)
117de56e685 is described below
commit 117de56e685b6e18751d566ea86e8ad4f93a4d99
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Mar 12 17:47:05 2023 +0800
Upgrade to junit 5 on transaction E2E (#24560)
---
.../cases/DiscoveryContainerComposer.java | 2 +-
.../cases/alterresource/AddResourceTestCase.java | 11 +-
.../cases/alterresource/CloseResourceTestCase.java | 9 +-
.../cases/autocommit/MySQLAutoCommitTestCase.java | 3 +-
.../autocommit/PostgreSQLAutoCommitTestCase.java | 3 +-
.../cases/base/BaseTransactionTestCase.java | 8 +-
.../classictransfer/ClassicTransferTestCase.java | 3 +-
.../BroadcastTableTransactionTestCase.java | 3 +-
.../ExceptionInTransactionTestCase.java | 3 +-
.../MultiJDBCConnectionsTestCase.java | 3 +-
.../MultiOperationsCommitAndRollbackTestCase.java | 3 +-
.../MultiTableCommitAndRollbackTestCase.java | 3 +-
.../MultiTransactionInConnectionTestCase.java | 3 +-
.../SingleTableCommitAndRollbackTestCase.java | 3 +-
.../cases/cursor/OpenGaussCursorTestCase.java | 8 +-
.../cases/nested/NestedTransactionTestCase.java | 3 +-
.../cases/readonly/MySQLSetReadOnlyTestCase.java | 3 +-
.../readonly/PostgreSQLSetReadOnlyTestCase.java | 3 +-
.../cases/savepoint/MySQLSavePointTestCase.java | 3 +-
.../savepoint/OpenGaussSavePointTestCase.java | 3 +-
.../savepoint/PostgreSQLSavePointTestCase.java | 3 +-
.../cases/settype/SetTransactionTypeTestCase.java | 3 +-
.../settype/TransactionTypeHolderTestCase.java | 3 +-
.../cases/truncate/MySQLLocalTruncateTestCase.java | 3 +-
.../cases/truncate/MySQLXATruncateTestCase.java | 3 +-
.../PostgreSQLAndOpenGaussTruncateTestCase.java | 3 +-
.../e2e/transaction/engine/base/BaseE2EIT.java | 344 ------------------
.../engine/base/TransactionBaseE2EIT.java | 403 +++++++++++++++++----
.../engine/base/TransactionContainerComposer.java | 88 +++++
.../engine/base/TransactionE2ESettings.java | 37 ++
.../database/mysql/MySQLJdbcTransactionE2ETT.java | 35 +-
.../database/mysql/MySQLProxyTransactionE2EIT.java | 37 +-
.../opengauss/OpenGaussJdbcTransactionE2EIT.java | 37 +-
.../opengauss/OpenGaussProxyTransactionE2EIT.java | 37 +-
.../postgresql/PostgreSQLJdbcTransactionE2EIT.java | 37 +-
.../PostgreSQLProxyTransactionE2EIT.java | 37 +-
36 files changed, 537 insertions(+), 656 deletions(-)
diff --git
a/test/e2e/discovery/src/test/java/org/apache/shardingsphere/test/e2e/discovery/cases/DiscoveryContainerComposer.java
b/test/e2e/discovery/src/test/java/org/apache/shardingsphere/test/e2e/discovery/cases/DiscoveryContainerComposer.java
index 661d490bd98..812bdaf9d1e 100644
---
a/test/e2e/discovery/src/test/java/org/apache/shardingsphere/test/e2e/discovery/cases/DiscoveryContainerComposer.java
+++
b/test/e2e/discovery/src/test/java/org/apache/shardingsphere/test/e2e/discovery/cases/DiscoveryContainerComposer.java
@@ -46,6 +46,6 @@ public final class DiscoveryContainerComposer implements
AutoCloseable {
@Override
public void close() {
- containerComposer.close();
+ containerComposer.stop();
}
}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/alterresource/AddResourceTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/alterresource/AddResourceTestCase.java
index 9ee31f9a806..81d7238c283 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/alterresource/AddResourceTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/alterresource/AddResourceTestCase.java
@@ -19,6 +19,7 @@ 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;
@@ -40,13 +41,13 @@ public final class AddResourceTestCase extends
BaseTransactionTestCase {
}
@Override
- public void executeTest() throws SQLException {
- assertAddResource();
+ public void executeTest(final TransactionContainerComposer
containerComposer) throws SQLException {
+ assertAddResource(containerComposer);
}
- private void assertAddResource() throws SQLException {
+ private void assertAddResource(final TransactionContainerComposer
containerComposer) throws SQLException {
Connection connection = getDataSource().getConnection();
- getBaseTransactionITCase().addResource(connection, "transaction_it_2");
+ getBaseTransactionITCase().addResource(connection, "transaction_it_2",
containerComposer);
createThreeDataSourceAccountTableRule(connection);
reCreateAccountTable(connection);
assertRollback();
@@ -56,7 +57,7 @@ public final class AddResourceTestCase extends
BaseTransactionTestCase {
private void createThreeDataSourceAccountTableRule(final Connection
connection) throws SQLException {
executeWithLog(connection, "DROP SHARDING TABLE RULE account;");
- executeWithLog(connection,
getBaseTransactionITCase().getCommonSQLCommand().getCreateThreeDataSourceAccountTableRule());
+ executeWithLog(connection,
getBaseTransactionITCase().getCommonSQL().getCreateThreeDataSourceAccountTableRule());
int ruleCount = countWithLog(connection, "SHOW SHARDING TABLE RULES
FROM sharding_db;");
assertThat(ruleCount, is(3));
}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/alterresource/CloseResourceTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/alterresource/CloseResourceTestCase.java
index c33964df6a4..f7d6ae0439c 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/alterresource/CloseResourceTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/alterresource/CloseResourceTestCase.java
@@ -20,6 +20,7 @@ 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;
@@ -39,13 +40,13 @@ public final class CloseResourceTestCase extends
BaseTransactionTestCase {
}
@Override
- public void executeTest() throws SQLException {
- assertCloseResource();
+ public void executeTest(final TransactionContainerComposer
containerComposer) throws SQLException {
+ assertCloseResource(containerComposer);
}
- private void assertCloseResource() throws SQLException {
+ private void assertCloseResource(final TransactionContainerComposer
containerComposer) throws SQLException {
Connection connection = getDataSource().getConnection();
- getBaseTransactionITCase().createOriginalAccountTableRule(connection);
+ getBaseTransactionITCase().createOriginalAccountTableRule(connection,
containerComposer);
reCreateAccountTable(connection);
assertRollback();
assertCommit();
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/autocommit/MySQLAutoCommitTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/autocommit/MySQLAutoCommitTestCase.java
index 29f036e3c25..5b06887e6f0 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/autocommit/MySQLAutoCommitTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/autocommit/MySQLAutoCommitTestCase.java
@@ -20,6 +20,7 @@ package
org.apache.shardingsphere.test.e2e.transaction.cases.autocommit;
import org.apache.shardingsphere.data.pipeline.core.util.ThreadUtil;
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;
@@ -43,7 +44,7 @@ public final class MySQLAutoCommitTestCase extends
BaseTransactionTestCase {
}
@Override
- public void executeTest() throws SQLException {
+ public void executeTest(final TransactionContainerComposer
containerComposer) throws SQLException {
assertAutoCommit();
}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/autocommit/PostgreSQLAutoCommitTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/autocommit/PostgreSQLAutoCommitTestCase.java
index 1f688ca8d0c..961a088e762 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/autocommit/PostgreSQLAutoCommitTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/autocommit/PostgreSQLAutoCommitTestCase.java
@@ -20,6 +20,7 @@ package
org.apache.shardingsphere.test.e2e.transaction.cases.autocommit;
import org.apache.shardingsphere.data.pipeline.core.util.ThreadUtil;
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;
@@ -43,7 +44,7 @@ public final class PostgreSQLAutoCommitTestCase extends
BaseTransactionTestCase
}
@Override
- public void executeTest() throws SQLException {
+ public void executeTest(final TransactionContainerComposer
containerComposer) throws SQLException {
assertAutoCommit();
}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/base/BaseTransactionTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/base/BaseTransactionTestCase.java
index a98f27e292b..b88a99a19d6 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/base/BaseTransactionTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/base/BaseTransactionTestCase.java
@@ -22,6 +22,7 @@ import lombok.Getter;
import lombok.RequiredArgsConstructor;
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 javax.sql.DataSource;
@@ -48,15 +49,16 @@ public abstract class BaseTransactionTestCase {
/**
* Execute test cases.
*
+ * @param containerComposer container composer
* @throws SQLException SQL exception
*/
- public void execute() throws SQLException {
+ public void execute(final TransactionContainerComposer containerComposer)
throws SQLException {
beforeTest();
- executeTest();
+ executeTest(containerComposer);
afterTest();
}
- protected abstract void executeTest() throws SQLException;
+ protected abstract void executeTest(TransactionContainerComposer
containerComposer) throws SQLException;
protected void beforeTest() throws SQLException {
Connection connection = getDataSource().getConnection();
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/classictransfer/ClassicTransferTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/classictransfer/ClassicTransferTestCase.java
index e8da3e37a4f..1650ca3c1e9 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/classictransfer/ClassicTransferTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/classictransfer/ClassicTransferTestCase.java
@@ -22,6 +22,7 @@ import lombok.Getter;
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;
@@ -46,7 +47,7 @@ public final class ClassicTransferTestCase extends
BaseTransactionTestCase {
}
@Override
- public void executeTest() throws SQLException {
+ public void executeTest(final TransactionContainerComposer
containerComposer) throws SQLException {
Connection connection = getDataSource().getConnection();
executeUpdateWithLog(connection, "insert into account(transaction_id,
balance) values (1,0), (2,100);");
innerRun();
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/BroadcastTableTransactionTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/BroadcastTableTransactionTestCase.java
index b6d90b0b299..4e2beefb701 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/BroadcastTableTransactionTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/BroadcastTableTransactionTestCase.java
@@ -20,6 +20,7 @@ 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;
@@ -52,7 +53,7 @@ public final class BroadcastTableTransactionTestCase extends
BaseTransactionTest
@Override
@SneakyThrows(SQLException.class)
- protected void executeTest() {
+ protected void executeTest(final TransactionContainerComposer
containerComposer) {
rollback();
commit();
}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/ExceptionInTransactionTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/ExceptionInTransactionTestCase.java
index b34f65ba8f5..96f378fbbd2 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/ExceptionInTransactionTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/ExceptionInTransactionTestCase.java
@@ -20,6 +20,7 @@ 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;
@@ -43,7 +44,7 @@ public final class ExceptionInTransactionTestCase extends
BaseTransactionTestCas
}
@Override
- protected void executeTest() throws SQLException {
+ protected void executeTest(final TransactionContainerComposer
containerComposer) throws SQLException {
Connection connection = null;
try {
connection = getDataSource().getConnection();
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/MultiJDBCConnectionsTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/MultiJDBCConnectionsTestCase.java
index 9c5368f43a2..d29debcb89d 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/MultiJDBCConnectionsTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/MultiJDBCConnectionsTestCase.java
@@ -19,6 +19,7 @@ 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;
@@ -39,7 +40,7 @@ public final class MultiJDBCConnectionsTestCase extends
BaseTransactionTestCase
}
@Override
- public void executeTest() throws SQLException {
+ public void executeTest(final TransactionContainerComposer
containerComposer) throws SQLException {
try (Connection connection = getDataSource().getConnection()) {
PreparedStatement statement = connection.prepareStatement("insert
into account(id, balance, transaction_id) values(?, ?, ?)");
connection.setAutoCommit(false);
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/MultiOperationsCommitAndRollbackTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/MultiOperationsCommitAndRollbackTestCase.java
index 0ad4731756a..13a35bff5d1 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/MultiOperationsCommitAndRollbackTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/MultiOperationsCommitAndRollbackTestCase.java
@@ -20,6 +20,7 @@ package
org.apache.shardingsphere.test.e2e.transaction.cases.commitrollback;
import com.google.common.base.Preconditions;
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;
@@ -43,7 +44,7 @@ public final class MultiOperationsCommitAndRollbackTestCase
extends BaseTransact
}
@Override
- public void executeTest() throws SQLException {
+ public void executeTest(final TransactionContainerComposer
containerComposer) throws SQLException {
assertRollback();
assertCommit();
}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/MultiTableCommitAndRollbackTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/MultiTableCommitAndRollbackTestCase.java
index 93634fe9e74..170e64a42e3 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/MultiTableCommitAndRollbackTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/MultiTableCommitAndRollbackTestCase.java
@@ -19,6 +19,7 @@ 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;
@@ -40,7 +41,7 @@ public final class MultiTableCommitAndRollbackTestCase
extends BaseTransactionTe
}
@Override
- public void executeTest() throws SQLException {
+ public void executeTest(final TransactionContainerComposer
containerComposer) throws SQLException {
assertRollback();
assertCommit();
}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/MultiTransactionInConnectionTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/MultiTransactionInConnectionTestCase.java
index accc7c85d15..f31030cb3d6 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/MultiTransactionInConnectionTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/MultiTransactionInConnectionTestCase.java
@@ -19,6 +19,7 @@ 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;
@@ -37,7 +38,7 @@ public final class MultiTransactionInConnectionTestCase
extends BaseTransactionT
}
@Override
- public void executeTest() throws SQLException {
+ public void executeTest(final TransactionContainerComposer
containerComposer) throws SQLException {
try (Connection connection = getDataSource().getConnection()) {
PreparedStatement statement = connection.prepareStatement("insert
into account(id, balance, transaction_id) values(?, ?, ?)");
for (int i = 0; i < 8; i++) {
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/SingleTableCommitAndRollbackTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/SingleTableCommitAndRollbackTestCase.java
index 8fe7258f651..ba6a9d1d6a5 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/SingleTableCommitAndRollbackTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/SingleTableCommitAndRollbackTestCase.java
@@ -19,6 +19,7 @@ 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;
@@ -37,7 +38,7 @@ public final class SingleTableCommitAndRollbackTestCase
extends BaseTransactionT
}
@Override
- public void executeTest() throws SQLException {
+ public void executeTest(final TransactionContainerComposer
containerComposer) throws SQLException {
assertRollback();
assertCommit();
}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/cursor/OpenGaussCursorTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/cursor/OpenGaussCursorTestCase.java
index 258de38633f..659540ce4eb 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/cursor/OpenGaussCursorTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/cursor/OpenGaussCursorTestCase.java
@@ -19,8 +19,8 @@ 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.BaseE2EIT;
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;
@@ -34,8 +34,8 @@ import java.util.Objects;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertFalse;
/**
* OpenGauss cursor transaction integration test.
@@ -52,7 +52,7 @@ public final class OpenGaussCursorTestCase extends
BaseTransactionTestCase {
}
private CursorSQLCommand loadCursorSQLCommand() {
- return
JAXB.unmarshal(Objects.requireNonNull(BaseE2EIT.class.getClassLoader().getResource("env/common/cursor-command.xml")),
CursorSQLCommand.class);
+ return
JAXB.unmarshal(Objects.requireNonNull(TransactionBaseE2EIT.class.getClassLoader().getResource("env/common/cursor-command.xml")),
CursorSQLCommand.class);
}
@Override
@@ -62,7 +62,7 @@ public final class OpenGaussCursorTestCase extends
BaseTransactionTestCase {
}
@Override
- public void executeTest() throws SQLException {
+ public void executeTest(final TransactionContainerComposer
containerComposer) throws SQLException {
Connection connection = getDataSource().getConnection();
singleTableCursorTest(connection);
singleTableCursorOrderByTest(connection);
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/nested/NestedTransactionTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/nested/NestedTransactionTestCase.java
index a6723ec5465..b0afdc06402 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/nested/NestedTransactionTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/nested/NestedTransactionTestCase.java
@@ -20,6 +20,7 @@ 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;
@@ -41,7 +42,7 @@ public class NestedTransactionTestCase extends
BaseTransactionTestCase {
}
@Override
- protected void executeTest() throws SQLException {
+ protected void executeTest(final TransactionContainerComposer
containerComposer) throws SQLException {
ShardingSphereConnection connection = (ShardingSphereConnection)
getDataSource().getConnection();
assertFalse(connection.isHoldTransaction());
connection.setAutoCommit(false);
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/readonly/MySQLSetReadOnlyTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/readonly/MySQLSetReadOnlyTestCase.java
index de2da51cdb1..1043ef62930 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/readonly/MySQLSetReadOnlyTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/readonly/MySQLSetReadOnlyTestCase.java
@@ -19,6 +19,7 @@ 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;
@@ -40,7 +41,7 @@ public final class MySQLSetReadOnlyTestCase extends
SetReadOnlyTestCase {
}
@Override
- public void executeTest() throws SQLException {
+ public void executeTest(final TransactionContainerComposer
containerComposer) throws SQLException {
assertSetReadOnly();
assertNotSetReadOnly();
}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/readonly/PostgreSQLSetReadOnlyTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/readonly/PostgreSQLSetReadOnlyTestCase.java
index f9016ecb4ab..d1b550798cd 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/readonly/PostgreSQLSetReadOnlyTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/readonly/PostgreSQLSetReadOnlyTestCase.java
@@ -19,6 +19,7 @@ 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 org.junit.Assert;
@@ -39,7 +40,7 @@ public final class PostgreSQLSetReadOnlyTestCase extends
SetReadOnlyTestCase {
}
@Override
- public void executeTest() throws SQLException {
+ public void executeTest(final TransactionContainerComposer
containerComposer) throws SQLException {
assertSetReadOnly();
assertNotSetReadOnly();
}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/MySQLSavePointTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/MySQLSavePointTestCase.java
index a399e63aafa..a1a3d5e7671 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/MySQLSavePointTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/MySQLSavePointTestCase.java
@@ -18,6 +18,7 @@
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;
@@ -35,7 +36,7 @@ public final class MySQLSavePointTestCase extends
BaseSavePointTestCase {
}
@Override
- public void executeTest() throws SQLException {
+ public void executeTest(final TransactionContainerComposer
containerComposer) throws SQLException {
assertRollback2Savepoint();
assertReleaseSavepoint();
}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/OpenGaussSavePointTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/OpenGaussSavePointTestCase.java
index fc5ddc468cf..55ab0ff036a 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/OpenGaussSavePointTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/OpenGaussSavePointTestCase.java
@@ -18,6 +18,7 @@
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;
@@ -42,7 +43,7 @@ public final class OpenGaussSavePointTestCase extends
BaseSavePointTestCase {
}
@Override
- public void executeTest() throws SQLException {
+ public void executeTest(final TransactionContainerComposer
containerComposer) throws SQLException {
assertRollback2Savepoint();
assertReleaseSavepoint();
assertErrors();
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/PostgreSQLSavePointTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/PostgreSQLSavePointTestCase.java
index 83990a4b224..86f2f54e87a 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/PostgreSQLSavePointTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/PostgreSQLSavePointTestCase.java
@@ -19,6 +19,7 @@ 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;
@@ -43,7 +44,7 @@ public final class PostgreSQLSavePointTestCase extends
BaseSavePointTestCase {
}
@Override
- public void executeTest() throws SQLException {
+ public void executeTest(final TransactionContainerComposer
containerComposer) throws SQLException {
assertRollback2Savepoint();
assertReleaseSavepoint();
assertErrors();
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/settype/SetTransactionTypeTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/settype/SetTransactionTypeTestCase.java
index 88d58078c17..2ae28dd7749 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/settype/SetTransactionTypeTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/settype/SetTransactionTypeTestCase.java
@@ -19,6 +19,7 @@ package
org.apache.shardingsphere.test.e2e.transaction.cases.settype;
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;
@@ -42,7 +43,7 @@ public class SetTransactionTypeTestCase extends
BaseTransactionTestCase {
}
@Override
- protected void executeTest() throws SQLException {
+ protected void executeTest(final TransactionContainerComposer
containerComposer) throws SQLException {
try (Connection connection = getDataSource().getConnection()) {
assertTransactionType(connection, TransactionType.XA.name());
executeWithLog(connection, "SET DIST VARIABLE TRANSACTION_TYPE =
'LOCAL'");
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/settype/TransactionTypeHolderTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/settype/TransactionTypeHolderTestCase.java
index 186db3cb61a..7e430cf910e 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/settype/TransactionTypeHolderTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/settype/TransactionTypeHolderTestCase.java
@@ -19,6 +19,7 @@ package
org.apache.shardingsphere.test.e2e.transaction.cases.settype;
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;
@@ -42,7 +43,7 @@ public final class TransactionTypeHolderTestCase extends
BaseTransactionTestCase
}
@Override
- protected void executeTest() throws SQLException {
+ protected void executeTest(final TransactionContainerComposer
containerComposer) throws SQLException {
try (Connection connection = getDataSource().getConnection()) {
TransactionTypeHolder.set(TransactionType.LOCAL);
assertThat(TransactionTypeHolder.get(), is(TransactionType.LOCAL));
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/truncate/MySQLLocalTruncateTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/truncate/MySQLLocalTruncateTestCase.java
index c51b1521194..81d657cb1c7 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/truncate/MySQLLocalTruncateTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/truncate/MySQLLocalTruncateTestCase.java
@@ -19,6 +19,7 @@ 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;
@@ -38,7 +39,7 @@ public final class MySQLLocalTruncateTestCase extends
BaseTransactionTestCase {
}
@Override
- public void executeTest() throws SQLException {
+ public void executeTest(final TransactionContainerComposer
containerComposer) throws SQLException {
assertTruncateRollback();
assertTruncateCommit();
}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/truncate/MySQLXATruncateTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/truncate/MySQLXATruncateTestCase.java
index 10b806fc8d1..bb889e59b6c 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/truncate/MySQLXATruncateTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/truncate/MySQLXATruncateTestCase.java
@@ -21,6 +21,7 @@ import lombok.extern.slf4j.Slf4j;
import
org.apache.shardingsphere.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;
@@ -56,7 +57,7 @@ public final class MySQLXATruncateTestCase extends
BaseTransactionTestCase {
}
@Override
- public void executeTest() throws SQLException {
+ public void executeTest(final TransactionContainerComposer
containerComposer) throws SQLException {
assertTruncateInMySQLXATransaction();
}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/truncate/PostgreSQLAndOpenGaussTruncateTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/truncate/PostgreSQLAndOpenGaussTruncateTestCase.java
index 995ff3b1c9e..007c842ecb4 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/truncate/PostgreSQLAndOpenGaussTruncateTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/truncate/PostgreSQLAndOpenGaussTruncateTestCase.java
@@ -19,6 +19,7 @@ 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;
@@ -37,7 +38,7 @@ public final class PostgreSQLAndOpenGaussTruncateTestCase
extends BaseTransactio
}
@Override
- public void executeTest() throws SQLException {
+ public void executeTest(final TransactionContainerComposer
containerComposer) throws SQLException {
assertTruncateRollback();
assertTruncateCommit();
}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/base/BaseE2EIT.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/base/BaseE2EIT.java
deleted file mode 100644
index 56d52e5ee0c..00000000000
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/base/BaseE2EIT.java
+++ /dev/null
@@ -1,344 +0,0 @@
-/*
- * 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.engine.base;
-
-import lombok.AccessLevel;
-import lombok.Getter;
-import lombok.SneakyThrows;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.shardingsphere.data.pipeline.core.util.ThreadUtil;
-import org.apache.shardingsphere.infra.database.metadata.url.JdbcUrlAppender;
-import org.apache.shardingsphere.infra.database.type.DatabaseType;
-import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
-import
org.apache.shardingsphere.infra.database.type.dialect.OpenGaussDatabaseType;
-import
org.apache.shardingsphere.infra.database.type.dialect.PostgreSQLDatabaseType;
-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.container.atomic.util.StorageContainerUtil;
-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.engine.command.CommonSQLCommand;
-import
org.apache.shardingsphere.test.e2e.transaction.engine.constants.TransactionTestConstants;
-import
org.apache.shardingsphere.test.e2e.transaction.env.TransactionE2EEnvironment;
-import
org.apache.shardingsphere.test.e2e.transaction.env.enums.TransactionE2EEnvTypeEnum;
-import
org.apache.shardingsphere.test.e2e.transaction.env.enums.TransactionTestCaseRegistry;
-import
org.apache.shardingsphere.test.e2e.transaction.framework.container.compose.BaseContainerComposer;
-import
org.apache.shardingsphere.test.e2e.transaction.framework.container.compose.DockerContainerComposer;
-import
org.apache.shardingsphere.test.e2e.transaction.framework.container.compose.NativeContainerComposer;
-import
org.apache.shardingsphere.test.e2e.transaction.framework.param.TransactionTestParameter;
-import
org.apache.shardingsphere.test.e2e.transaction.util.TestCaseClassScanner;
-import org.apache.shardingsphere.transaction.api.TransactionType;
-
-import javax.sql.DataSource;
-import javax.xml.bind.JAXB;
-import java.io.File;
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedHashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.concurrent.TimeUnit;
-import java.util.stream.Collectors;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-@Getter(AccessLevel.PROTECTED)
-@Slf4j
-public abstract class BaseE2EIT {
-
- protected static final TransactionE2EEnvironment ENV =
TransactionE2EEnvironment.getInstance();
-
- protected static final JdbcUrlAppender JDBC_URL_APPENDER = new
JdbcUrlAppender();
-
- protected static final String TRANSACTION_IT = "transaction_it";
-
- protected static final String DATA_SOURCE_0 = TRANSACTION_IT + "_0";
-
- protected static final String DATA_SOURCE_1 = TRANSACTION_IT + "_1";
-
- protected static final List<String> ALL_XA_PROVIDERS =
Arrays.asList(TransactionTestConstants.ATOMIKOS,
TransactionTestConstants.BITRONIX, TransactionTestConstants.NARAYANA);
-
- protected static final String SHARDING_DB = "sharding_db";
-
- private static final List<Class<? extends BaseTransactionTestCase>>
TEST_CASES;
-
- private final BaseContainerComposer containerComposer;
-
- @Getter(AccessLevel.PUBLIC)
- private final CommonSQLCommand commonSQLCommand;
-
- private final DatabaseType databaseType;
-
- private final String adapter;
-
- private final AutoDataSource dataSource;
-
- static {
- long startTime = System.currentTimeMillis();
- TEST_CASES = TestCaseClassScanner.scan();
- log.info("Load transaction test case classes time consume: {}.",
System.currentTimeMillis() - startTime);
- }
-
- public BaseE2EIT(final TransactionTestParameter testParam) {
- databaseType = testParam.getDatabaseType();
- adapter = testParam.getAdapter();
- containerComposer = initializeContainerComposer(testParam);
- commonSQLCommand = loadCommonSQLCommand();
- dataSource = isProxyAdapter(testParam) ? createProxyDataSource() :
createJdbcDataSource();
- }
-
- private BaseContainerComposer initializeContainerComposer(final
TransactionTestParameter testParam) {
- BaseContainerComposer result = ENV.getItEnvType() ==
TransactionE2EEnvTypeEnum.DOCKER ? new DockerContainerComposer(testParam) : new
NativeContainerComposer(testParam.getDatabaseType());
- result.start();
- return result;
- }
-
- private CommonSQLCommand loadCommonSQLCommand() {
- return
JAXB.unmarshal(Objects.requireNonNull(BaseE2EIT.class.getClassLoader().getResource("env/common/command.xml")),
CommonSQLCommand.class);
- }
-
- final boolean isProxyAdapter(final TransactionTestParameter testParam) {
- return
AdapterType.PROXY.getValue().equalsIgnoreCase(testParam.getAdapter());
- }
-
- private ProxyDataSource createProxyDataSource() {
- return new ProxyDataSource(containerComposer, SHARDING_DB,
ENV.getProxyUserName(), ENV.getProxyPassword());
- }
-
- private JdbcDataSource createJdbcDataSource() {
- DockerContainerComposer dockerContainerComposer =
(DockerContainerComposer) containerComposer;
- DockerStorageContainer storageContainer =
dockerContainerComposer.getStorageContainer();
- Map<String, DataSource> actualDataSourceMap =
storageContainer.getActualDataSourceMap();
- actualDataSourceMap.put("ds_0", createDataSource(storageContainer,
DATA_SOURCE_0));
- actualDataSourceMap.put("ds_1", createDataSource(storageContainer,
DATA_SOURCE_1));
- return new JdbcDataSource(dockerContainerComposer);
- }
-
- private DataSource createDataSource(final DockerStorageContainer
storageContainer, final String dataSourceName) {
- return
StorageContainerUtil.generateDataSource(DataSourceEnvironment.getURL(databaseType,
storageContainer.getHost(), storageContainer.getMappedPort(), dataSourceName),
- storageContainer.getUsername(),
storageContainer.getPassword(), 50);
- }
-
- protected static Collection<TransactionTestParameter>
getTransactionTestParameters(final Class<? extends TransactionBaseE2EIT>
testCaseClass) {
- TransactionTestCaseRegistry currentTestCaseInfo =
ENV.getTransactionTestCaseRegistryMap().get(testCaseClass.getName());
- Collection<TransactionTestParameter> result = new LinkedList<>();
- if (ENV.getItEnvType() == TransactionE2EEnvTypeEnum.NONE) {
- return result;
- }
- if (ENV.getItEnvType() == TransactionE2EEnvTypeEnum.DOCKER) {
- addTestParameters(currentTestCaseInfo, result);
- }
- if (ENV.getItEnvType() == TransactionE2EEnvTypeEnum.NATIVE &&
"MySQL".equalsIgnoreCase(ENV.getNativeDatabaseType())) {
- addParametersByVersions(ENV.getMysqlVersions(), result,
currentTestCaseInfo);
- }
- return result;
- }
-
- private static void addTestParameters(final TransactionTestCaseRegistry
currentTestCaseInfo, final Collection<TransactionTestParameter> testParams) {
- if
(TransactionTestConstants.MYSQL.equalsIgnoreCase(currentTestCaseInfo.getDbType()))
{
- addParametersByVersions(ENV.getMysqlVersions(), testParams,
currentTestCaseInfo);
- } else if
(TransactionTestConstants.POSTGRESQL.equalsIgnoreCase(currentTestCaseInfo.getDbType()))
{
- addParametersByVersions(ENV.getPostgresqlVersions(), testParams,
currentTestCaseInfo);
- } else if
(TransactionTestConstants.OPENGAUSS.equalsIgnoreCase(currentTestCaseInfo.getDbType()))
{
- addParametersByVersions(ENV.getOpenGaussVersions(), testParams,
currentTestCaseInfo);
- }
- }
-
- private static void addParametersByVersions(final List<String>
databaseVersion, final Collection<TransactionTestParameter> testParams, final
TransactionTestCaseRegistry currentTestCaseInfo) {
- for (String each : databaseVersion) {
- testParams.addAll(addParametersByTestCaseClasses(each,
currentTestCaseInfo));
- }
- }
-
- private static Collection<TransactionTestParameter>
addParametersByTestCaseClasses(final String version, final
TransactionTestCaseRegistry currentTestCaseInfo) {
- Map<String, TransactionTestParameter> testParams = new
LinkedHashMap<>();
- for (Class<? extends BaseTransactionTestCase> each : TEST_CASES) {
- if (!ENV.getNeedToRunTestCases().isEmpty() &&
!ENV.getNeedToRunTestCases().contains(each.getSimpleName())) {
- log.info("Collect transaction test case, need to run cases
don't contain this, skip: {}.", each.getName());
- continue;
- }
- TransactionTestCase annotation =
each.getAnnotation(TransactionTestCase.class);
- if (null == annotation) {
- log.info("Collect transaction test case, annotation is null,
skip: {}.", each.getName());
- continue;
- }
- Optional<String> dbType =
Arrays.stream(annotation.dbTypes()).filter(currentTestCaseInfo.getDbType()::equalsIgnoreCase).findAny();
- if (!dbType.isPresent()) {
- log.info("Collect transaction test case, dbType is not
matched, skip: {}.", each.getName());
- continue;
- }
- Optional<String> runAdapters =
Arrays.stream(annotation.adapters()).filter(currentTestCaseInfo.getRunningAdaptor()::equalsIgnoreCase).findAny();
- if (!runAdapters.isPresent()) {
- log.info("Collect transaction test case, runAdapter is not
matched, skip: {}.", each.getName());
- continue;
- }
- String scenario = annotation.scenario();
- addParametersByTransactionTypes(version, currentTestCaseInfo,
each, annotation, testParams, scenario);
- }
- return testParams.values();
- }
-
- private static void addParametersByTransactionTypes(final String version,
final TransactionTestCaseRegistry currentTestCaseInfo,
- final Class<? extends
BaseTransactionTestCase> caseClass, final TransactionTestCase annotation,
- final Map<String,
TransactionTestParameter> testParams, final String scenario) {
- if
(AdapterType.PROXY.getValue().equals(currentTestCaseInfo.getRunningAdaptor())) {
- List<TransactionType> allowTransactionTypes =
ENV.getAllowTransactionTypes().isEmpty() ?
Arrays.stream(TransactionType.values()).collect(Collectors.toList())
- :
ENV.getAllowTransactionTypes().stream().map(TransactionType::valueOf).collect(Collectors.toList());
- List<String> allowProviders = ENV.getAllowXAProviders().isEmpty()
? ALL_XA_PROVIDERS : ENV.getAllowXAProviders();
- addParameters(version, currentTestCaseInfo, caseClass,
allowTransactionTypes, allowProviders, testParams, scenario);
- } else {
- for (TransactionType each : annotation.transactionTypes()) {
- if (!ENV.getAllowTransactionTypes().isEmpty() &&
!ENV.getAllowTransactionTypes().contains(each.toString())) {
- log.info("Collect transaction test case, need to run
transaction types don't contain this, skip: {}-{}.", caseClass.getName(), each);
- continue;
- }
- addParametersByTransactionProvidersInJDBC(version,
currentTestCaseInfo, caseClass, each, testParams, scenario);
- }
- }
- }
-
- private static void addParametersByTransactionProvidersInJDBC(final String
version, final TransactionTestCaseRegistry currentTestCaseInfo,
- final
Class<? extends BaseTransactionTestCase> caseClass, final TransactionType each,
- final
Map<String, TransactionTestParameter> testParams, final String scenario) {
- if (TransactionType.LOCAL.equals(each)) {
- addParameters(version, currentTestCaseInfo, caseClass,
Collections.singletonList(each), Collections.singletonList(""), testParams,
scenario);
- } else if (TransactionType.XA.equals(each)) {
- List<String> allowProviders = ENV.getAllowXAProviders().isEmpty()
? ALL_XA_PROVIDERS : ENV.getAllowXAProviders();
- for (String provider : allowProviders) {
- addParameters(version, currentTestCaseInfo, caseClass,
Collections.singletonList(each), Collections.singletonList(provider),
testParams, scenario);
- }
- }
- }
-
- private static void addParameters(final String version, final
TransactionTestCaseRegistry currentTestCaseInfo,
- final Class<? extends
BaseTransactionTestCase> caseClass, final List<TransactionType>
transactionTypes, final List<String> providers,
- final Map<String,
TransactionTestParameter> testParams, final String scenario) {
- String uniqueKey = getUniqueKey(currentTestCaseInfo.getDbType(),
currentTestCaseInfo.getRunningAdaptor(), transactionTypes, providers, scenario);
- testParams.putIfAbsent(uniqueKey, new
TransactionTestParameter(getSqlDatabaseType(currentTestCaseInfo.getDbType()),
currentTestCaseInfo.getRunningAdaptor(), transactionTypes, providers,
- getStorageContainerImage(currentTestCaseInfo.getDbType(),
version), scenario, new LinkedList<>()));
-
testParams.get(uniqueKey).getTransactionTestCaseClasses().add(caseClass);
- }
-
- private static String getUniqueKey(final String dbType, final String
runningAdapter, final List<TransactionType> transactionTypes, final
List<String> providers, final String scenario) {
- return dbType + File.separator + runningAdapter + File.separator +
transactionTypes + File.separator + providers + File.separator + scenario;
- }
-
- private static DatabaseType getSqlDatabaseType(final String databaseType) {
- switch (databaseType) {
- case TransactionTestConstants.MYSQL:
- return new MySQLDatabaseType();
- case TransactionTestConstants.POSTGRESQL:
- return new PostgreSQLDatabaseType();
- case TransactionTestConstants.OPENGAUSS:
- return new OpenGaussDatabaseType();
- default:
- throw new
UnsupportedOperationException(String.format("Unsupported database type `%s`.",
databaseType));
- }
- }
-
- private static String getStorageContainerImage(final String databaseType,
final String version) {
- switch (databaseType) {
- case TransactionTestConstants.MYSQL:
- return "mysql/mysql-server:" + version;
- case TransactionTestConstants.POSTGRESQL:
- case TransactionTestConstants.OPENGAUSS:
- return version;
- default:
- throw new
UnsupportedOperationException(String.format("Unsupported database type `%s`.",
databaseType));
- }
- }
-
- final Connection getProxyConnection() throws SQLException {
- return dataSource.getConnection();
- }
-
- private String getActualJdbcUrlTemplate(final String databaseName) {
- if (ENV.getItEnvType() == TransactionE2EEnvTypeEnum.DOCKER) {
- DockerStorageContainer storageContainer =
((DockerContainerComposer) containerComposer).getStorageContainer();
- return DataSourceEnvironment.getURL(getDatabaseType(),
getDatabaseType().getType().toLowerCase() + ".host",
storageContainer.getExposedPort(), databaseName);
- }
- return DataSourceEnvironment.getURL(getDatabaseType(), "127.0.0.1",
ENV.getActualDataSourceDefaultPort(databaseType), databaseName);
- }
-
- /**
- * Add resource.
- *
- * @param connection connection
- * @param databaseName database name
- * @throws SQLException SQL exception
- */
- @SneakyThrows(InterruptedException.class)
- public final void addResource(final Connection connection, final String
databaseName) throws SQLException {
- String addSourceResource =
commonSQLCommand.getSourceAddNewResourceTemplate()
- .replace("${user}",
ENV.getActualDataSourceUsername(databaseType))
- .replace("${password}",
ENV.getActualDataSourcePassword(databaseType))
- .replace("${ds2}", getActualJdbcUrlTemplate(databaseName));
- executeWithLog(connection, addSourceResource);
- int resourceCount = countWithLog("SHOW STORAGE UNITS FROM
sharding_db");
- Thread.sleep(5000L);
- assertThat(resourceCount, is(3));
- }
-
- /**
- * Create the account table rule with one data source.
- *
- * @param connection connection
- * @throws SQLException SQL exception
- */
- public final void createOriginalAccountTableRule(final Connection
connection) throws SQLException {
- executeWithLog(connection, "DROP SHARDING TABLE RULE account;");
- executeWithLog(connection,
getCommonSQLCommand().getCreateOneDataSourceAccountTableRule());
- assertThat(countWithLog("SHOW SHARDING TABLE RULES FROM
sharding_db;"), is(3));
- }
-
- int countWithLog(final String sql) throws SQLException {
- Connection connection = getProxyConnection();
- int retryNumber = 0;
- while (retryNumber <= 3) {
- try {
- Statement statement = connection.createStatement();
- ResultSet resultSet = statement.executeQuery(sql);
- int result = 0;
- while (resultSet.next()) {
- result++;
- }
- return result;
- } catch (final SQLException ex) {
- log.error("Data access error.", ex);
- }
- ThreadUtil.sleep(2, TimeUnit.SECONDS);
- retryNumber++;
- }
- throw new RuntimeException("Can't get result from proxy.");
- }
-
- protected final void executeWithLog(final Connection connection, final
String sql) throws SQLException {
- log.info("Connection execute:{}.", sql);
- connection.createStatement().execute(sql);
- ThreadUtil.sleep(1, TimeUnit.SECONDS);
- }
-}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/base/TransactionBaseE2EIT.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/base/TransactionBaseE2EIT.java
index 4c161369a44..f40cddb61db 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/base/TransactionBaseE2EIT.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/base/TransactionBaseE2EIT.java
@@ -17,32 +17,160 @@
package org.apache.shardingsphere.test.e2e.transaction.engine.base;
+import com.google.common.base.Preconditions;
+import lombok.Getter;
+import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.shardingsphere.data.pipeline.core.util.ThreadUtil;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
+import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
+import
org.apache.shardingsphere.infra.database.type.dialect.OpenGaussDatabaseType;
+import
org.apache.shardingsphere.infra.database.type.dialect.PostgreSQLDatabaseType;
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.engine.command.CommonSQLCommand;
import
org.apache.shardingsphere.test.e2e.transaction.engine.constants.TransactionTestConstants;
+import
org.apache.shardingsphere.test.e2e.transaction.env.TransactionE2EEnvironment;
+import
org.apache.shardingsphere.test.e2e.transaction.env.enums.TransactionE2EEnvTypeEnum;
+import
org.apache.shardingsphere.test.e2e.transaction.env.enums.TransactionTestCaseRegistry;
+import
org.apache.shardingsphere.test.e2e.transaction.framework.container.compose.DockerContainerComposer;
import
org.apache.shardingsphere.test.e2e.transaction.framework.param.TransactionTestParameter;
+import
org.apache.shardingsphere.test.e2e.transaction.util.TestCaseClassScanner;
import org.apache.shardingsphere.transaction.api.TransactionType;
+import org.junit.jupiter.api.condition.EnabledIf;
+import org.junit.jupiter.api.extension.ExtensionContext;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.ArgumentsProvider;
+import org.junit.jupiter.params.provider.ArgumentsSource;
import javax.sql.DataSource;
+import javax.xml.bind.JAXB;
+import java.io.File;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.List;
import java.util.Map;
import java.util.Objects;
+import java.util.Optional;
import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertTrue;
+@Getter
@Slf4j
-public abstract class TransactionBaseE2EIT extends BaseE2EIT {
+public abstract class TransactionBaseE2EIT {
- public TransactionBaseE2EIT(final TransactionTestParameter testParam) {
- super(testParam);
+ private static final List<String> ALL_XA_PROVIDERS =
Arrays.asList(TransactionTestConstants.ATOMIKOS,
TransactionTestConstants.BITRONIX, TransactionTestConstants.NARAYANA);
+
+ private static final List<Class<? extends BaseTransactionTestCase>>
TEST_CASES = TestCaseClassScanner.scan();
+
+ private static final TransactionE2EEnvironment ENV =
TransactionE2EEnvironment.getInstance();
+
+ private final CommonSQLCommand commonSQL;
+
+ public TransactionBaseE2EIT() {
+ commonSQL = loadCommonSQLCommand();
+ }
+
+ private CommonSQLCommand loadCommonSQLCommand() {
+ return
JAXB.unmarshal(Objects.requireNonNull(TransactionBaseE2EIT.class.getClassLoader().getResource("env/common/command.xml")),
CommonSQLCommand.class);
+ }
+
+ @ParameterizedTest(name = "{0}")
+ @EnabledIf("isEnabled")
+ @ArgumentsSource(TestCaseArgumentsProvider.class)
+ public void assertTransaction(final TransactionTestParameter testParam)
throws SQLException {
+ try (TransactionContainerComposer containerComposer = new
TransactionContainerComposer(testParam)) {
+ try {
+ callTestCases(testParam, containerComposer);
+ } finally {
+ containerComposer.getDataSource().close();
+ }
+ }
+ }
+
+ private void callTestCases(final TransactionTestParameter testParam, final
TransactionContainerComposer containerComposer) throws SQLException {
+ if
(AdapterType.PROXY.getValue().equalsIgnoreCase(testParam.getAdapter())) {
+ for (TransactionType each : testParam.getTransactionTypes()) {
+ if (TransactionType.LOCAL.equals(each)) {
+ log.info("Call transaction IT {}, alter transaction rule
{}.", testParam, "");
+ alterTransactionRule(each, "", containerComposer);
+ doCallTestCases(testParam, each, "", containerComposer);
+ } else if (TransactionType.XA.equals(each)) {
+ for (String eachProvider : testParam.getProviders()) {
+ log.info("Call transaction IT {}, alter transaction
rule {}.", testParam, eachProvider);
+ alterTransactionRule(each, eachProvider,
containerComposer);
+ doCallTestCases(testParam, each, eachProvider,
containerComposer);
+ }
+ }
+ }
+ } else {
+ doCallTestCases(testParam, containerComposer);
+ }
+ }
+
+ private void alterTransactionRule(final TransactionType transactionType,
final String providerType, final TransactionContainerComposer
containerComposer) throws SQLException {
+ if (Objects.equals(transactionType, TransactionType.LOCAL)) {
+ alterLocalTransactionRule(containerComposer);
+ } else if (Objects.equals(transactionType, TransactionType.XA)) {
+ alterXaTransactionRule(providerType, containerComposer);
+ }
+ }
+
+ private void doCallTestCases(final TransactionTestParameter testParam,
final TransactionContainerComposer containerComposer) {
+ 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);
+ // CHECKSTYLE:OFF
+ } catch (final Exception ex) {
+ // CHECKSTYLE:ON
+ log.error(String.format("Transaction IT %s -> %s test failed",
testParam, each.getSimpleName()), ex);
+ throw new RuntimeException(ex);
+ }
+ log.info("Transaction IT {} -> {} test end.", testParam,
each.getSimpleName());
+ try {
+ containerComposer.getDataSource().close();
+ } catch (final SQLException ignored) {
+ }
+ }
+ }
+
+ private void doCallTestCases(final TransactionTestParameter testParam,
final TransactionType transactionType, final String provider, final
TransactionContainerComposer containerComposer) {
+ for (Class<? extends BaseTransactionTestCase> each :
testParam.getTransactionTestCaseClasses()) {
+ if
(!Arrays.asList(each.getAnnotation(TransactionTestCase.class).transactionTypes()).contains(transactionType))
{
+ return;
+ }
+ 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);
+ // CHECKSTYLE:OFF
+ } catch (final Exception ex) {
+ // CHECKSTYLE:ON
+ log.error(String.format("Transaction IT %s -> %s test failed",
testParam, each.getSimpleName()), ex);
+ throw new RuntimeException(ex);
+ }
+ log.info("Call transaction IT {} -> {} -> {} -> {} test end.",
testParam, transactionType, provider, each.getSimpleName());
+ try {
+ containerComposer.getDataSource().close();
+ } catch (final SQLException ignored) {
+ }
+ }
}
/**
@@ -52,7 +180,7 @@ public abstract class TransactionBaseE2EIT extends BaseE2EIT
{
* @throws SQLException SQL exception
*/
public void createAccountTable(final Connection connection) throws
SQLException {
- executeWithLog(connection,
getCommonSQLCommand().getCreateAccountTable());
+ executeWithLog(connection, commonSQL.getCreateAccountTable());
}
/**
@@ -65,24 +193,24 @@ public abstract class TransactionBaseE2EIT extends
BaseE2EIT {
executeWithLog(connection, "drop table if exists account;");
}
- private void alterLocalTransactionRule() throws SQLException {
- Connection connection = getProxyConnection();
+ private void alterLocalTransactionRule(final TransactionContainerComposer
containerComposer) throws SQLException {
+ Connection connection =
containerComposer.getDataSource().getConnection();
if (isExpectedTransactionRule(connection, TransactionType.LOCAL, "")) {
return;
}
- String alterLocalTransactionRule =
getCommonSQLCommand().getAlterLocalTransactionRule();
+ String alterLocalTransactionRule =
commonSQL.getAlterLocalTransactionRule();
executeWithLog(connection, alterLocalTransactionRule);
- assertTrue(waitExpectedTransactionRule(TransactionType.LOCAL, ""));
+ assertTrue(waitExpectedTransactionRule(TransactionType.LOCAL, "",
containerComposer));
}
- private void alterXaTransactionRule(final String providerType) throws
SQLException {
- Connection connection = getProxyConnection();
+ private void alterXaTransactionRule(final String providerType, final
TransactionContainerComposer containerComposer) throws SQLException {
+ Connection connection =
containerComposer.getDataSource().getConnection();
if (isExpectedTransactionRule(connection, TransactionType.XA,
providerType)) {
return;
}
- String alterXaTransactionRule =
getCommonSQLCommand().getAlterXATransactionRule().replace("${providerType}",
providerType);
+ String alterXaTransactionRule =
commonSQL.getAlterXATransactionRule().replace("${providerType}", providerType);
executeWithLog(connection, alterXaTransactionRule);
- assertTrue(waitExpectedTransactionRule(TransactionType.XA,
providerType));
+ assertTrue(waitExpectedTransactionRule(TransactionType.XA,
providerType, containerComposer));
}
private boolean isExpectedTransactionRule(final Connection connection,
final TransactionType expectedTransType, final String expectedProviderType)
throws SQLException {
@@ -91,9 +219,9 @@ public abstract class TransactionBaseE2EIT extends BaseE2EIT
{
&&
Objects.equals(transactionRuleMap.get(TransactionTestConstants.PROVIDER_TYPE),
expectedProviderType);
}
- private boolean waitExpectedTransactionRule(final TransactionType
expectedTransType, final String expectedProviderType) throws SQLException {
+ private boolean waitExpectedTransactionRule(final TransactionType
expectedTransType, final String expectedProviderType, final
TransactionContainerComposer containerComposer) throws SQLException {
ThreadUtil.sleep(5, TimeUnit.SECONDS);
- Connection connection = getProxyConnection();
+ Connection connection =
containerComposer.getDataSource().getConnection();
int waitTimes = 0;
do {
if (isExpectedTransactionRule(connection, expectedTransType,
expectedProviderType)) {
@@ -119,71 +247,214 @@ public abstract class TransactionBaseE2EIT extends
BaseE2EIT {
return result;
}
- protected void callTestCases(final TransactionTestParameter testParam)
throws SQLException {
- if
(AdapterType.PROXY.getValue().equalsIgnoreCase(testParam.getAdapter())) {
- for (TransactionType each : testParam.getTransactionTypes()) {
- if (TransactionType.LOCAL.equals(each)) {
- log.info("Call transaction IT {}, alter transaction rule
{}.", testParam, "");
- alterTransactionRule(each, "");
- doCallTestCases(testParam, each, "");
- } else if (TransactionType.XA.equals(each)) {
- for (String eachProvider : testParam.getProviders()) {
- log.info("Call transaction IT {}, alter transaction
rule {}.", testParam, eachProvider);
- alterTransactionRule(each, eachProvider);
- doCallTestCases(testParam, each, eachProvider);
- }
+ /**
+ * Add resource.
+ *
+ * @param connection connection
+ * @param databaseName database name
+ * @param containerComposer container composer
+ * @throws SQLException SQL exception
+ */
+ @SneakyThrows(InterruptedException.class)
+ public void addResource(final Connection connection, final String
databaseName, final TransactionContainerComposer containerComposer) throws
SQLException {
+ String addSourceResource = commonSQL.getSourceAddNewResourceTemplate()
+ .replace("${user}",
ENV.getActualDataSourceUsername(containerComposer.getDatabaseType()))
+ .replace("${password}",
ENV.getActualDataSourcePassword(containerComposer.getDatabaseType()))
+ .replace("${ds2}", getActualJdbcUrlTemplate(databaseName,
containerComposer));
+ executeWithLog(connection, addSourceResource);
+ int resourceCount = countWithLog("SHOW STORAGE UNITS FROM
sharding_db", containerComposer);
+ Thread.sleep(5000L);
+ assertThat(resourceCount, is(3));
+ }
+
+ private String getActualJdbcUrlTemplate(final String databaseName, final
TransactionContainerComposer containerComposer) {
+ if (ENV.getItEnvType() == TransactionE2EEnvTypeEnum.DOCKER) {
+ DockerStorageContainer storageContainer =
((DockerContainerComposer)
containerComposer.getContainerComposer()).getStorageContainer();
+ return
DataSourceEnvironment.getURL(containerComposer.getDatabaseType(),
+
containerComposer.getDatabaseType().getType().toLowerCase() + ".host",
storageContainer.getExposedPort(), databaseName);
+ }
+ return
DataSourceEnvironment.getURL(containerComposer.getDatabaseType(), "127.0.0.1",
ENV.getActualDataSourceDefaultPort(containerComposer.getDatabaseType()),
databaseName);
+ }
+
+ /**
+ * Create the account table rule with one data source.
+ *
+ * @param connection connection
+ * @param containerComposer container composer
+ * @throws SQLException SQL exception
+ */
+ public void createOriginalAccountTableRule(final Connection connection,
final TransactionContainerComposer containerComposer) throws SQLException {
+ executeWithLog(connection, "DROP SHARDING TABLE RULE account;");
+ executeWithLog(connection,
commonSQL.getCreateOneDataSourceAccountTableRule());
+ assertThat(countWithLog("SHOW SHARDING TABLE RULES FROM sharding_db;",
containerComposer), is(3));
+ }
+
+ private void executeWithLog(final Connection connection, final String sql)
throws SQLException {
+ log.info("Connection execute:{}.", sql);
+ connection.createStatement().execute(sql);
+ ThreadUtil.sleep(1, TimeUnit.SECONDS);
+ }
+
+ private int countWithLog(final String sql, final
TransactionContainerComposer containerComposer) throws SQLException {
+ Connection connection =
containerComposer.getDataSource().getConnection();
+ int retryNumber = 0;
+ while (retryNumber <= 3) {
+ try {
+ Statement statement = connection.createStatement();
+ ResultSet resultSet = statement.executeQuery(sql);
+ int result = 0;
+ while (resultSet.next()) {
+ result++;
}
+ return result;
+ } catch (final SQLException ex) {
+ log.error("Data access error.", ex);
}
- } else {
- doCallTestCases(testParam);
+ ThreadUtil.sleep(2, TimeUnit.SECONDS);
+ retryNumber++;
}
+ throw new RuntimeException("Can't get result from proxy.");
}
- private void alterTransactionRule(final TransactionType transactionType,
final String providerType) throws SQLException {
- if (Objects.equals(transactionType, TransactionType.LOCAL)) {
- alterLocalTransactionRule();
- } else if (Objects.equals(transactionType, TransactionType.XA)) {
- alterXaTransactionRule(providerType);
- }
+ private static boolean isEnabled() {
+ return ENV.getItEnvType() != TransactionE2EEnvTypeEnum.NONE;
}
- private void doCallTestCases(final TransactionTestParameter testParam) {
- 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, getDataSource()).execute();
- // CHECKSTYLE:OFF
- } catch (final Exception ex) {
- // CHECKSTYLE:ON
- log.error(String.format("Transaction IT %s -> %s test failed",
testParam, each.getSimpleName()), ex);
- throw new RuntimeException(ex);
+ private static class TestCaseArgumentsProvider implements
ArgumentsProvider {
+
+ @Override
+ public Stream<? extends Arguments> provideArguments(final
ExtensionContext extensionContext) {
+ TransactionE2ESettings settings =
extensionContext.getRequiredTestClass().getAnnotation(TransactionE2ESettings.class);
+ Preconditions.checkNotNull(settings, "Annotation
TransactionE2ESettings is required.");
+ return
getTransactionTestParameters(settings.value()).stream().map(Arguments::of);
+ }
+
+ private Collection<TransactionTestParameter>
getTransactionTestParameters(final Class<? extends TransactionBaseE2EIT>
testCaseClass) {
+ TransactionTestCaseRegistry currentTestCaseInfo =
ENV.getTransactionTestCaseRegistryMap().get(testCaseClass.getName());
+ Collection<TransactionTestParameter> result = new LinkedList<>();
+ if (ENV.getItEnvType() == TransactionE2EEnvTypeEnum.NONE) {
+ return result;
}
- log.info("Transaction IT {} -> {} test end.", testParam,
each.getSimpleName());
- try {
- getDataSource().close();
- } catch (final SQLException ignored) {
+ if (ENV.getItEnvType() == TransactionE2EEnvTypeEnum.DOCKER) {
+ addTestParameters(currentTestCaseInfo, result);
+ }
+ if (ENV.getItEnvType() == TransactionE2EEnvTypeEnum.NATIVE &&
"MySQL".equalsIgnoreCase(ENV.getNativeDatabaseType())) {
+ addParametersByVersions(ENV.getMysqlVersions(), result,
currentTestCaseInfo);
}
+ return result;
}
- }
- private void doCallTestCases(final TransactionTestParameter testParam,
final TransactionType transactionType, final String provider) {
- for (Class<? extends BaseTransactionTestCase> each :
testParam.getTransactionTestCaseClasses()) {
- if
(!Arrays.asList(each.getAnnotation(TransactionTestCase.class).transactionTypes()).contains(transactionType))
{
- return;
+ private void addTestParameters(final TransactionTestCaseRegistry
currentTestCaseInfo, final Collection<TransactionTestParameter> testParams) {
+ if
(TransactionTestConstants.MYSQL.equalsIgnoreCase(currentTestCaseInfo.getDbType()))
{
+ addParametersByVersions(ENV.getMysqlVersions(), testParams,
currentTestCaseInfo);
+ } else if
(TransactionTestConstants.POSTGRESQL.equalsIgnoreCase(currentTestCaseInfo.getDbType()))
{
+ addParametersByVersions(ENV.getPostgresqlVersions(),
testParams, currentTestCaseInfo);
+ } else if
(TransactionTestConstants.OPENGAUSS.equalsIgnoreCase(currentTestCaseInfo.getDbType()))
{
+ addParametersByVersions(ENV.getOpenGaussVersions(),
testParams, currentTestCaseInfo);
}
- log.info("Call transaction IT {} -> {} -> {} -> {} test begin.",
testParam, transactionType, provider, each.getSimpleName());
- try {
- each.getConstructor(TransactionBaseE2EIT.class,
DataSource.class).newInstance(this, getDataSource()).execute();
- // CHECKSTYLE:OFF
- } catch (final Exception ex) {
- // CHECKSTYLE:ON
- log.error(String.format("Transaction IT %s -> %s test failed",
testParam, each.getSimpleName()), ex);
- throw new RuntimeException(ex);
+ }
+
+ private void addParametersByVersions(final List<String>
databaseVersion, final Collection<TransactionTestParameter> testParams, final
TransactionTestCaseRegistry currentTestCaseInfo) {
+ for (String each : databaseVersion) {
+ testParams.addAll(addParametersByTestCaseClasses(each,
currentTestCaseInfo));
}
- log.info("Call transaction IT {} -> {} -> {} -> {} test end.",
testParam, transactionType, provider, each.getSimpleName());
- try {
- getDataSource().close();
- } catch (final SQLException ignored) {
+ }
+
+ private Collection<TransactionTestParameter>
addParametersByTestCaseClasses(final String version, final
TransactionTestCaseRegistry currentTestCaseInfo) {
+ Map<String, TransactionTestParameter> testParams = new
LinkedHashMap<>();
+ for (Class<? extends BaseTransactionTestCase> each : TEST_CASES) {
+ if (!ENV.getNeedToRunTestCases().isEmpty() &&
!ENV.getNeedToRunTestCases().contains(each.getSimpleName())) {
+ log.info("Collect transaction test case, need to run cases
don't contain this, skip: {}.", each.getName());
+ continue;
+ }
+ TransactionTestCase annotation =
each.getAnnotation(TransactionTestCase.class);
+ if (null == annotation) {
+ log.info("Collect transaction test case, annotation is
null, skip: {}.", each.getName());
+ continue;
+ }
+ Optional<String> dbType =
Arrays.stream(annotation.dbTypes()).filter(currentTestCaseInfo.getDbType()::equalsIgnoreCase).findAny();
+ if (!dbType.isPresent()) {
+ log.info("Collect transaction test case, dbType is not
matched, skip: {}.", each.getName());
+ continue;
+ }
+ Optional<String> runAdapters =
Arrays.stream(annotation.adapters()).filter(currentTestCaseInfo.getRunningAdaptor()::equalsIgnoreCase).findAny();
+ if (!runAdapters.isPresent()) {
+ log.info("Collect transaction test case, runAdapter is not
matched, skip: {}.", each.getName());
+ continue;
+ }
+ String scenario = annotation.scenario();
+ addParametersByTransactionTypes(version, currentTestCaseInfo,
each, annotation, testParams, scenario);
+ }
+ return testParams.values();
+ }
+
+ private void addParametersByTransactionTypes(final String version,
final TransactionTestCaseRegistry currentTestCaseInfo,
+ final Class<?
extends BaseTransactionTestCase> caseClass, final TransactionTestCase
annotation,
+ final Map<String,
TransactionTestParameter> testParams, final String scenario) {
+ if
(AdapterType.PROXY.getValue().equals(currentTestCaseInfo.getRunningAdaptor())) {
+ List<TransactionType> allowTransactionTypes =
ENV.getAllowTransactionTypes().isEmpty() ?
Arrays.stream(TransactionType.values()).collect(Collectors.toList())
+ :
ENV.getAllowTransactionTypes().stream().map(TransactionType::valueOf).collect(Collectors.toList());
+ List<String> allowProviders =
ENV.getAllowXAProviders().isEmpty() ? ALL_XA_PROVIDERS :
ENV.getAllowXAProviders();
+ addParameters(version, currentTestCaseInfo, caseClass,
allowTransactionTypes, allowProviders, testParams, scenario);
+ } else {
+ for (TransactionType each : annotation.transactionTypes()) {
+ if (!ENV.getAllowTransactionTypes().isEmpty() &&
!ENV.getAllowTransactionTypes().contains(each.toString())) {
+ log.info("Collect transaction test case, need to run
transaction types don't contain this, skip: {}-{}.", caseClass.getName(), each);
+ continue;
+ }
+ addParametersByTransactionProvidersInJDBC(version,
currentTestCaseInfo, caseClass, each, testParams, scenario);
+ }
+ }
+ }
+
+ private void addParametersByTransactionProvidersInJDBC(final String
version, final TransactionTestCaseRegistry currentTestCaseInfo,
+ final
Class<? extends BaseTransactionTestCase> caseClass, final TransactionType each,
+ final
Map<String, TransactionTestParameter> testParams, final String scenario) {
+ if (TransactionType.LOCAL.equals(each)) {
+ addParameters(version, currentTestCaseInfo, caseClass,
Collections.singletonList(each), Collections.singletonList(""), testParams,
scenario);
+ } else if (TransactionType.XA.equals(each)) {
+ List<String> allowProviders =
ENV.getAllowXAProviders().isEmpty() ? ALL_XA_PROVIDERS :
ENV.getAllowXAProviders();
+ for (String provider : allowProviders) {
+ addParameters(version, currentTestCaseInfo, caseClass,
Collections.singletonList(each), Collections.singletonList(provider),
testParams, scenario);
+ }
+ }
+ }
+
+ private void addParameters(final String version, final
TransactionTestCaseRegistry currentTestCaseInfo,
+ final Class<? extends
BaseTransactionTestCase> caseClass, final List<TransactionType>
transactionTypes, final List<String> providers,
+ final Map<String,
TransactionTestParameter> testParams, final String scenario) {
+ String uniqueKey = getUniqueKey(currentTestCaseInfo.getDbType(),
currentTestCaseInfo.getRunningAdaptor(), transactionTypes, providers, scenario);
+ testParams.putIfAbsent(uniqueKey, new
TransactionTestParameter(getSqlDatabaseType(currentTestCaseInfo.getDbType()),
currentTestCaseInfo.getRunningAdaptor(), transactionTypes, providers,
+ getStorageContainerImage(currentTestCaseInfo.getDbType(),
version), scenario, new LinkedList<>()));
+
testParams.get(uniqueKey).getTransactionTestCaseClasses().add(caseClass);
+ }
+
+ private String getUniqueKey(final String dbType, final String
runningAdapter, final List<TransactionType> transactionTypes, final
List<String> providers, final String scenario) {
+ return dbType + File.separator + runningAdapter + File.separator +
transactionTypes + File.separator + providers + File.separator + scenario;
+ }
+
+ private DatabaseType getSqlDatabaseType(final String databaseType) {
+ switch (databaseType) {
+ case TransactionTestConstants.MYSQL:
+ return new MySQLDatabaseType();
+ case TransactionTestConstants.POSTGRESQL:
+ return new PostgreSQLDatabaseType();
+ case TransactionTestConstants.OPENGAUSS:
+ return new OpenGaussDatabaseType();
+ default:
+ throw new
UnsupportedOperationException(String.format("Unsupported database type `%s`.",
databaseType));
+ }
+ }
+
+ private String getStorageContainerImage(final String databaseType,
final String version) {
+ switch (databaseType) {
+ case TransactionTestConstants.MYSQL:
+ return "mysql/mysql-server:" + version;
+ case TransactionTestConstants.POSTGRESQL:
+ case TransactionTestConstants.OPENGAUSS:
+ return version;
+ default:
+ throw new
UnsupportedOperationException(String.format("Unsupported database type `%s`.",
databaseType));
}
}
}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/base/TransactionContainerComposer.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/base/TransactionContainerComposer.java
new file mode 100644
index 00000000000..d1381bc60fd
--- /dev/null
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/base/TransactionContainerComposer.java
@@ -0,0 +1,88 @@
+/*
+ * 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.engine.base;
+
+import lombok.Getter;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
+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.container.atomic.util.StorageContainerUtil;
+import org.apache.shardingsphere.test.e2e.env.runtime.DataSourceEnvironment;
+import
org.apache.shardingsphere.test.e2e.transaction.env.TransactionE2EEnvironment;
+import
org.apache.shardingsphere.test.e2e.transaction.env.enums.TransactionE2EEnvTypeEnum;
+import
org.apache.shardingsphere.test.e2e.transaction.framework.container.compose.BaseContainerComposer;
+import
org.apache.shardingsphere.test.e2e.transaction.framework.container.compose.DockerContainerComposer;
+import
org.apache.shardingsphere.test.e2e.transaction.framework.container.compose.NativeContainerComposer;
+import
org.apache.shardingsphere.test.e2e.transaction.framework.param.TransactionTestParameter;
+
+import javax.sql.DataSource;
+import java.util.Map;
+
+/**
+ * Transaction container composer.
+ */
+@Getter
+public final class TransactionContainerComposer implements AutoCloseable {
+
+ private static final TransactionE2EEnvironment ENV =
TransactionE2EEnvironment.getInstance();
+
+ private final DatabaseType databaseType;
+
+ private final BaseContainerComposer containerComposer;
+
+ private final AutoDataSource dataSource;
+
+ public TransactionContainerComposer(final TransactionTestParameter
testParam) {
+ databaseType = testParam.getDatabaseType();
+ containerComposer = initContainerComposer(testParam);
+ dataSource = isProxyAdapter(testParam) ? createProxyDataSource() :
createJdbcDataSource();
+ }
+
+ private BaseContainerComposer initContainerComposer(final
TransactionTestParameter testParam) {
+ BaseContainerComposer result = ENV.getItEnvType() ==
TransactionE2EEnvTypeEnum.DOCKER ? new DockerContainerComposer(testParam) : new
NativeContainerComposer(testParam.getDatabaseType());
+ result.start();
+ return result;
+ }
+
+ boolean isProxyAdapter(final TransactionTestParameter testParam) {
+ return
AdapterType.PROXY.getValue().equalsIgnoreCase(testParam.getAdapter());
+ }
+
+ private ProxyDataSource createProxyDataSource() {
+ return new ProxyDataSource(containerComposer, "sharding_db",
ENV.getProxyUserName(), ENV.getProxyPassword());
+ }
+
+ private JdbcDataSource createJdbcDataSource() {
+ DockerContainerComposer dockerContainerComposer =
(DockerContainerComposer) containerComposer;
+ DockerStorageContainer storageContainer =
dockerContainerComposer.getStorageContainer();
+ Map<String, DataSource> actualDataSourceMap =
storageContainer.getActualDataSourceMap();
+ actualDataSourceMap.put("ds_0", createDataSource(storageContainer,
"transaction_it_0"));
+ actualDataSourceMap.put("ds_1", createDataSource(storageContainer,
"transaction_it_1"));
+ return new JdbcDataSource(dockerContainerComposer);
+ }
+
+ private DataSource createDataSource(final DockerStorageContainer
storageContainer, final String dataSourceName) {
+ return
StorageContainerUtil.generateDataSource(DataSourceEnvironment.getURL(databaseType,
storageContainer.getHost(), storageContainer.getMappedPort(), dataSourceName),
+ storageContainer.getUsername(),
storageContainer.getPassword(), 50);
+ }
+
+ @Override
+ public void close() {
+ containerComposer.stop();
+ }
+}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/base/TransactionE2ESettings.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/base/TransactionE2ESettings.java
new file mode 100644
index 00000000000..9b2e2b20625
--- /dev/null
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/base/TransactionE2ESettings.java
@@ -0,0 +1,37 @@
+/*
+ * 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.engine.base;
+
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Transaction E2E Settings.
+ */
+@Inherited
+@Retention(RetentionPolicy.RUNTIME)
+public @interface TransactionE2ESettings {
+
+ /**
+ * Get test case class.
+ *
+ * @return test case class
+ */
+ Class<? extends TransactionBaseE2EIT> value();
+}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/database/mysql/MySQLJdbcTransactionE2ETT.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/database/mysql/MySQLJdbcTransactionE2ETT.java
index 107fdfbb5b4..fbfca36cc80 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/database/mysql/MySQLJdbcTransactionE2ETT.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/database/mysql/MySQLJdbcTransactionE2ETT.java
@@ -18,39 +18,8 @@
package org.apache.shardingsphere.test.e2e.transaction.engine.database.mysql;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionBaseE2EIT;
-import
org.apache.shardingsphere.test.e2e.transaction.framework.param.TransactionTestParameter;
-import org.junit.After;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
+import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionE2ESettings;
-import java.sql.SQLException;
-import java.util.Collection;
-
-@RunWith(Parameterized.class)
+@TransactionE2ESettings(MySQLJdbcTransactionE2ETT.class)
public final class MySQLJdbcTransactionE2ETT extends TransactionBaseE2EIT {
-
- private final TransactionTestParameter testParam;
-
- public MySQLJdbcTransactionE2ETT(final TransactionTestParameter testParam)
{
- super(testParam);
- this.testParam = testParam;
- }
-
- @Parameters(name = "{0}")
- public static Collection<TransactionTestParameter> getTestParameters() {
- return getTransactionTestParameters(MySQLJdbcTransactionE2ETT.class);
- }
-
- @After
- public void after() throws SQLException {
- getDataSource().close();
- getContainerComposer().close();
- }
-
- @Test
- public void assertTransaction() throws SQLException {
- callTestCases(testParam);
- }
}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/database/mysql/MySQLProxyTransactionE2EIT.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/database/mysql/MySQLProxyTransactionE2EIT.java
index b61236de2d4..89e1c57ac41 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/database/mysql/MySQLProxyTransactionE2EIT.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/database/mysql/MySQLProxyTransactionE2EIT.java
@@ -17,42 +17,9 @@
package org.apache.shardingsphere.test.e2e.transaction.engine.database.mysql;
-import lombok.SneakyThrows;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionBaseE2EIT;
-import
org.apache.shardingsphere.test.e2e.transaction.framework.param.TransactionTestParameter;
-import org.junit.After;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
+import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionE2ESettings;
-import java.sql.SQLException;
-import java.util.Collection;
-
-@RunWith(Parameterized.class)
+@TransactionE2ESettings(MySQLProxyTransactionE2EIT.class)
public final class MySQLProxyTransactionE2EIT extends TransactionBaseE2EIT {
-
- private final TransactionTestParameter testParam;
-
- public MySQLProxyTransactionE2EIT(final TransactionTestParameter
testParam) {
- super(testParam);
- this.testParam = testParam;
- }
-
- @Parameters(name = "{0}")
- public static Collection<TransactionTestParameter> getTestParameters() {
- return getTransactionTestParameters(MySQLProxyTransactionE2EIT.class);
- }
-
- @After
- @SneakyThrows(SQLException.class)
- public void after() {
- getDataSource().close();
- getContainerComposer().close();
- }
-
- @Test
- public void assertTransaction() throws SQLException {
- callTestCases(testParam);
- }
}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/database/opengauss/OpenGaussJdbcTransactionE2EIT.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/database/opengauss/OpenGaussJdbcTransactionE2EIT.java
index a3bb564c6fd..d6c9d474f53 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/database/opengauss/OpenGaussJdbcTransactionE2EIT.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/database/opengauss/OpenGaussJdbcTransactionE2EIT.java
@@ -17,42 +17,9 @@
package
org.apache.shardingsphere.test.e2e.transaction.engine.database.opengauss;
-import lombok.SneakyThrows;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionBaseE2EIT;
-import
org.apache.shardingsphere.test.e2e.transaction.framework.param.TransactionTestParameter;
-import org.junit.After;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
+import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionE2ESettings;
-import java.sql.SQLException;
-import java.util.Collection;
-
-@RunWith(Parameterized.class)
+@TransactionE2ESettings(OpenGaussJdbcTransactionE2EIT.class)
public final class OpenGaussJdbcTransactionE2EIT extends TransactionBaseE2EIT {
-
- private final TransactionTestParameter testParam;
-
- public OpenGaussJdbcTransactionE2EIT(final TransactionTestParameter
testParam) {
- super(testParam);
- this.testParam = testParam;
- }
-
- @Parameters(name = "{0}")
- public static Collection<TransactionTestParameter> getTestParameters() {
- return
getTransactionTestParameters(OpenGaussJdbcTransactionE2EIT.class);
- }
-
- @After
- @SneakyThrows(SQLException.class)
- public void after() {
- getDataSource().close();
- getContainerComposer().close();
- }
-
- @Test
- public void assertTransaction() throws SQLException {
- callTestCases(testParam);
- }
}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/database/opengauss/OpenGaussProxyTransactionE2EIT.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/database/opengauss/OpenGaussProxyTransactionE2EIT.java
index b46e983524a..92ea31f70c0 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/database/opengauss/OpenGaussProxyTransactionE2EIT.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/database/opengauss/OpenGaussProxyTransactionE2EIT.java
@@ -17,42 +17,9 @@
package
org.apache.shardingsphere.test.e2e.transaction.engine.database.opengauss;
-import lombok.SneakyThrows;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionBaseE2EIT;
-import
org.apache.shardingsphere.test.e2e.transaction.framework.param.TransactionTestParameter;
-import org.junit.After;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
+import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionE2ESettings;
-import java.sql.SQLException;
-import java.util.Collection;
-
-@RunWith(Parameterized.class)
+@TransactionE2ESettings(OpenGaussProxyTransactionE2EIT.class)
public final class OpenGaussProxyTransactionE2EIT extends TransactionBaseE2EIT
{
-
- private final TransactionTestParameter testParam;
-
- public OpenGaussProxyTransactionE2EIT(final TransactionTestParameter
testParam) {
- super(testParam);
- this.testParam = testParam;
- }
-
- @Parameters(name = "{0}")
- public static Collection<TransactionTestParameter> getTestParameters() {
- return
getTransactionTestParameters(OpenGaussProxyTransactionE2EIT.class);
- }
-
- @After
- @SneakyThrows(SQLException.class)
- public void after() {
- getDataSource().close();
- getContainerComposer().close();
- }
-
- @Test
- public void assertTransaction() throws SQLException {
- callTestCases(testParam);
- }
}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/database/postgresql/PostgreSQLJdbcTransactionE2EIT.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/database/postgresql/PostgreSQLJdbcTransactionE2EIT.java
index f4e9120cec6..876bf35e953 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/database/postgresql/PostgreSQLJdbcTransactionE2EIT.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/database/postgresql/PostgreSQLJdbcTransactionE2EIT.java
@@ -17,42 +17,9 @@
package
org.apache.shardingsphere.test.e2e.transaction.engine.database.postgresql;
-import lombok.SneakyThrows;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionBaseE2EIT;
-import
org.apache.shardingsphere.test.e2e.transaction.framework.param.TransactionTestParameter;
-import org.junit.After;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
+import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionE2ESettings;
-import java.sql.SQLException;
-import java.util.Collection;
-
-@RunWith(Parameterized.class)
+@TransactionE2ESettings(PostgreSQLJdbcTransactionE2EIT.class)
public final class PostgreSQLJdbcTransactionE2EIT extends TransactionBaseE2EIT
{
-
- private final TransactionTestParameter testParam;
-
- public PostgreSQLJdbcTransactionE2EIT(final TransactionTestParameter
testParam) {
- super(testParam);
- this.testParam = testParam;
- }
-
- @Parameters(name = "{0}")
- public static Collection<TransactionTestParameter> getTestParameters() {
- return
getTransactionTestParameters(PostgreSQLJdbcTransactionE2EIT.class);
- }
-
- @After
- @SneakyThrows(SQLException.class)
- public void after() {
- getDataSource().close();
- getContainerComposer().close();
- }
-
- @Test
- public void assertTransaction() throws SQLException {
- callTestCases(testParam);
- }
}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/database/postgresql/PostgreSQLProxyTransactionE2EIT.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/database/postgresql/PostgreSQLProxyTransactionE2EIT.java
index 1c0b8f890ce..73fff609c75 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/database/postgresql/PostgreSQLProxyTransactionE2EIT.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/database/postgresql/PostgreSQLProxyTransactionE2EIT.java
@@ -17,42 +17,9 @@
package
org.apache.shardingsphere.test.e2e.transaction.engine.database.postgresql;
-import lombok.SneakyThrows;
import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionBaseE2EIT;
-import
org.apache.shardingsphere.test.e2e.transaction.framework.param.TransactionTestParameter;
-import org.junit.After;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
+import
org.apache.shardingsphere.test.e2e.transaction.engine.base.TransactionE2ESettings;
-import java.sql.SQLException;
-import java.util.Collection;
-
-@RunWith(Parameterized.class)
+@TransactionE2ESettings(PostgreSQLProxyTransactionE2EIT.class)
public final class PostgreSQLProxyTransactionE2EIT extends
TransactionBaseE2EIT {
-
- private final TransactionTestParameter testParam;
-
- public PostgreSQLProxyTransactionE2EIT(final TransactionTestParameter
testParam) {
- super(testParam);
- this.testParam = testParam;
- }
-
- @Parameters(name = "{0}")
- public static Collection<TransactionTestParameter> getTestParameters() {
- return
getTransactionTestParameters(PostgreSQLProxyTransactionE2EIT.class);
- }
-
- @After
- @SneakyThrows(SQLException.class)
- public void after() {
- getDataSource().close();
- getContainerComposer().close();
- }
-
- @Test
- public void assertTransaction() throws SQLException {
- callTestCases(testParam);
- }
}