You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2023/03/12 12:59:03 UTC
[shardingsphere] branch master updated: Refactor TransactionBaseE2EIT (#24563)
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 231e3c4e05b Refactor TransactionBaseE2EIT (#24563)
231e3c4e05b is described below
commit 231e3c4e05b644755c308a91fc9ec996443088c7
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Sun Mar 12 20:58:53 2023 +0800
Refactor TransactionBaseE2EIT (#24563)
---
.../engine/base/TransactionBaseE2EIT.java | 133 ++++++++++-----------
1 file changed, 65 insertions(+), 68 deletions(-)
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 f40cddb61db..0ca02237d75 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
@@ -336,104 +336,101 @@ public abstract class TransactionBaseE2EIT {
return result;
}
if (ENV.getItEnvType() == TransactionE2EEnvTypeEnum.DOCKER) {
- addTestParameters(currentTestCaseInfo, result);
+ result.addAll(getTestParameters(currentTestCaseInfo));
}
if (ENV.getItEnvType() == TransactionE2EEnvTypeEnum.NATIVE && "MySQL".equalsIgnoreCase(ENV.getNativeDatabaseType())) {
- addParametersByVersions(ENV.getMysqlVersions(), result, currentTestCaseInfo);
+ result.addAll(getTestParameters(currentTestCaseInfo, ENV.getMysqlVersions()));
}
return result;
}
-
- 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);
+
+ private Collection<TransactionTestParameter> getTestParameters(final TransactionTestCaseRegistry registry) {
+ Collection<TransactionTestParameter> result = new LinkedList<>();
+ if (TransactionTestConstants.MYSQL.equalsIgnoreCase(registry.getDbType())) {
+ result.addAll(getTestParameters(registry, ENV.getMysqlVersions()));
+ } else if (TransactionTestConstants.POSTGRESQL.equalsIgnoreCase(registry.getDbType())) {
+ result.addAll(getTestParameters(registry, ENV.getPostgresqlVersions()));
+ } else if (TransactionTestConstants.OPENGAUSS.equalsIgnoreCase(registry.getDbType())) {
+ result.addAll(getTestParameters(registry, ENV.getOpenGaussVersions()));
}
+ return result;
}
-
- private void addParametersByVersions(final List<String> databaseVersion, final Collection<TransactionTestParameter> testParams, final TransactionTestCaseRegistry currentTestCaseInfo) {
- for (String each : databaseVersion) {
- testParams.addAll(addParametersByTestCaseClasses(each, currentTestCaseInfo));
- }
+
+ private Collection<TransactionTestParameter> getTestParameters(final TransactionTestCaseRegistry registry, final List<String> databaseVersions) {
+ return databaseVersions.stream().flatMap(each -> getTestParameters(registry, each).stream()).collect(Collectors.toList());
}
-
- private Collection<TransactionTestParameter> addParametersByTestCaseClasses(final String version, final TransactionTestCaseRegistry currentTestCaseInfo) {
- Map<String, TransactionTestParameter> testParams = new LinkedHashMap<>();
+
+ private Collection<TransactionTestParameter> getTestParameters(final TransactionTestCaseRegistry registry, final String databaseVersion) {
+ Map<String, TransactionTestParameter> result = 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) {
+ TransactionTestCase transactionTestCase = each.getAnnotation(TransactionTestCase.class);
+ if (null == transactionTestCase) {
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()) {
+ Optional<String> databaseType = Arrays.stream(transactionTestCase.dbTypes()).filter(registry.getDbType()::equalsIgnoreCase).findAny();
+ if (!databaseType.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();
+ Optional<String> runAdapters = Arrays.stream(transactionTestCase.adapters()).filter(registry.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);
+ setTestParameters(result, registry, databaseVersion, transactionTestCase, transactionTestCase.scenario(), each);
}
- return testParams.values();
+ return result.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())
+
+ private void setTestParameters(final Map<String, TransactionTestParameter> testParams, final TransactionTestCaseRegistry registry, final String databaseVersion,
+ final TransactionTestCase transactionTestCase, final String scenario, final Class<? extends BaseTransactionTestCase> caseClass) {
+ if (AdapterType.PROXY.getValue().equals(registry.getRunningAdaptor())) {
+ List<TransactionType> allowedTransactionTypes = 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);
+ List<String> allowedProviders = ENV.getAllowXAProviders().isEmpty() ? ALL_XA_PROVIDERS : ENV.getAllowXAProviders();
+ setTestParameters(testParams, registry, databaseVersion, allowedTransactionTypes, allowedProviders, scenario, caseClass);
+ return;
+ }
+ for (TransactionType each : transactionTestCase.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;
}
+ setTestParameters(testParams, registry, databaseVersion, each, scenario, caseClass);
}
}
-
- 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 setTestParameters(final Map<String, TransactionTestParameter> testParams, final TransactionTestCaseRegistry registry, final String databaseVersion,
+ final TransactionType transactionType, final String scenario, final Class<? extends BaseTransactionTestCase> caseClass) {
+ if (TransactionType.LOCAL.equals(transactionType)) {
+ setTestParameters(testParams, registry, databaseVersion, Collections.singletonList(transactionType), Collections.singletonList(""), scenario, caseClass);
+ return;
+ }
+ if (TransactionType.XA.equals(transactionType)) {
+ for (String each : ENV.getAllowXAProviders().isEmpty() ? ALL_XA_PROVIDERS : ENV.getAllowXAProviders()) {
+ setTestParameters(testParams, registry, databaseVersion, Collections.singletonList(transactionType), Collections.singletonList(each), scenario, caseClass);
}
}
}
-
- 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 void setTestParameters(final Map<String, TransactionTestParameter> testParams, final TransactionTestCaseRegistry registry, final String databaseVersion,
+ final List<TransactionType> transactionTypes, final List<String> providers, final String scenario, final Class<? extends BaseTransactionTestCase> caseClass) {
+ String key = getUniqueKey(registry.getDbType(), registry.getRunningAdaptor(), transactionTypes, providers, scenario);
+ testParams.putIfAbsent(key, new TransactionTestParameter(getDatabaseType(registry.getDbType()), registry.getRunningAdaptor(), transactionTypes, providers,
+ getStorageContainerImageName(registry.getDbType(), databaseVersion), scenario, new LinkedList<>()));
+ testParams.get(key).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 String getUniqueKey(final String databaseType, final String runningAdapter, final List<TransactionType> transactionTypes, final List<String> providers, final String scenario) {
+ return String.join(File.separator, databaseType, runningAdapter, transactionTypes.toString(), providers.toString(), scenario);
}
-
- private DatabaseType getSqlDatabaseType(final String databaseType) {
+
+ private DatabaseType getDatabaseType(final String databaseType) {
switch (databaseType) {
case TransactionTestConstants.MYSQL:
return new MySQLDatabaseType();
@@ -445,14 +442,14 @@ public abstract class TransactionBaseE2EIT {
throw new UnsupportedOperationException(String.format("Unsupported database type `%s`.", databaseType));
}
}
-
- private String getStorageContainerImage(final String databaseType, final String version) {
+
+ private String getStorageContainerImageName(final String databaseType, final String databaseVersion) {
switch (databaseType) {
case TransactionTestConstants.MYSQL:
- return "mysql/mysql-server:" + version;
+ return "mysql/mysql-server:" + databaseVersion;
case TransactionTestConstants.POSTGRESQL:
case TransactionTestConstants.OPENGAUSS:
- return version;
+ return databaseVersion;
default:
throw new UnsupportedOperationException(String.format("Unsupported database type `%s`.", databaseType));
}