You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by su...@apache.org on 2023/03/03 03:39:37 UTC
[shardingsphere] branch master updated: Upgrade ExternalSQLParserIT to Junit 5 (#24434)
This is an automated email from the ASF dual-hosted git repository.
sunnianjun 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 a7acaef510c Upgrade ExternalSQLParserIT to Junit 5 (#24434)
a7acaef510c is described below
commit a7acaef510c352cbdf96ff839bf022616271cef6
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Fri Mar 3 11:39:30 2023 +0800
Upgrade ExternalSQLParserIT to Junit 5 (#24434)
* Upgrade ExternalSQLParserIT to Junit 5
* Fix javadoc
---
.../it/mysql/external/ExternalMySQLParserIT.java | 20 +-------
.../external/ExternalPostgreSQLParserIT.java | 21 ++------
.../sql/parser/external/ExternalSQLParserIT.java | 58 ++++++++++++++--------
...meter.java => ExternalSQLParserITSettings.java} | 46 +++++++++++------
.../external/ExternalSQLParserTestParameter.java | 5 --
.../ExternalSQLParserTestParameterLoader.java | 5 --
6 files changed, 73 insertions(+), 82 deletions(-)
diff --git a/sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/mysql/external/ExternalMySQLParserIT.java b/sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/mysql/external/ExternalMySQLParserIT.java
index ba851615973..d1027a8b67c 100644
--- a/sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/mysql/external/ExternalMySQLParserIT.java
+++ b/sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/mysql/external/ExternalMySQLParserIT.java
@@ -18,24 +18,8 @@
package org.apache.shardingsphere.test.it.sql.parser.it.mysql.external;
import org.apache.shardingsphere.test.it.sql.parser.external.ExternalSQLParserIT;
-import org.apache.shardingsphere.test.it.sql.parser.external.ExternalSQLParserTestParameter;
-import org.apache.shardingsphere.test.it.sql.parser.external.loader.ExternalSQLParserTestParameterLoader;
-import org.apache.shardingsphere.test.it.sql.parser.external.loader.strategy.impl.GitHubTestParameterLoadStrategy;
-import org.junit.runners.Parameterized.Parameters;
-
-import java.net.URI;
-import java.util.Collection;
+import org.apache.shardingsphere.test.it.sql.parser.external.ExternalSQLParserITSettings;
+@ExternalSQLParserITSettings(value = "MySQL", caseURL = "https://github.com/mysql/mysql-server/tree/8.0/mysql-test/t", resultURL = "https://github.com/mysql/mysql-server/tree/8.0/mysql-test/r")
public final class ExternalMySQLParserIT extends ExternalSQLParserIT {
-
- public ExternalMySQLParserIT(final ExternalSQLParserTestParameter testParam) {
- super(testParam);
- }
-
- @Parameters(name = "{0}")
- public static Collection<ExternalSQLParserTestParameter> getTestParameters() {
- String caseURL = "https://github.com/mysql/mysql-server/tree/8.0/mysql-test/t";
- String resultURL = "https://github.com/mysql/mysql-server/tree/8.0/mysql-test/r";
- return new ExternalSQLParserTestParameterLoader(new GitHubTestParameterLoadStrategy()).load(URI.create(caseURL), URI.create(resultURL), "MySQL", "CSV");
- }
}
diff --git a/sql-parser/dialect/postgresql/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/postgresql/external/ExternalPostgreSQLParserIT.java b/sql-parser/dialect/postgresql/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/postgresql/external/ExternalPostgreSQLParserIT.java
index db9080e2ef8..746f3e9a24c 100644
--- a/sql-parser/dialect/postgresql/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/postgresql/external/ExternalPostgreSQLParserIT.java
+++ b/sql-parser/dialect/postgresql/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/postgresql/external/ExternalPostgreSQLParserIT.java
@@ -18,24 +18,9 @@
package org.apache.shardingsphere.test.it.sql.parser.it.postgresql.external;
import org.apache.shardingsphere.test.it.sql.parser.external.ExternalSQLParserIT;
-import org.apache.shardingsphere.test.it.sql.parser.external.ExternalSQLParserTestParameter;
-import org.apache.shardingsphere.test.it.sql.parser.external.loader.ExternalSQLParserTestParameterLoader;
-import org.apache.shardingsphere.test.it.sql.parser.external.loader.strategy.impl.GitHubTestParameterLoadStrategy;
-import org.junit.runners.Parameterized.Parameters;
-
-import java.net.URI;
-import java.util.Collection;
+import org.apache.shardingsphere.test.it.sql.parser.external.ExternalSQLParserITSettings;
+@ExternalSQLParserITSettings(value = "PostgreSQL",
+ caseURL = "https://github.com/postgres/postgres/tree/master/src/test/regress/sql", resultURL = "https://github.com/postgres/postgres/tree/master/src/test/regress/expected")
public final class ExternalPostgreSQLParserIT extends ExternalSQLParserIT {
-
- public ExternalPostgreSQLParserIT(final ExternalSQLParserTestParameter testParam) {
- super(testParam);
- }
-
- @Parameters(name = "{0} (PostgreSQL) -> {1}")
- public static Collection<ExternalSQLParserTestParameter> getTestParameters() {
- String caseURL = "https://github.com/postgres/postgres/tree/master/src/test/regress/sql";
- String resultURL = "https://github.com/postgres/postgres/tree/master/src/test/regress/expected";
- return new ExternalSQLParserTestParameterLoader(new GitHubTestParameterLoadStrategy()).load(URI.create(caseURL), URI.create(resultURL), "PostgreSQL", "CSV");
- }
}
diff --git a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/ExternalSQLParserIT.java b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/ExternalSQLParserIT.java
index 9de34ba4423..1e2e65090e6 100644
--- a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/ExternalSQLParserIT.java
+++ b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/ExternalSQLParserIT.java
@@ -23,35 +23,31 @@ import org.apache.shardingsphere.sql.parser.api.CacheOption;
import org.apache.shardingsphere.sql.parser.api.SQLParserEngine;
import org.apache.shardingsphere.sql.parser.api.SQLVisitorEngine;
import org.apache.shardingsphere.sql.parser.core.ParseASTNode;
+import org.apache.shardingsphere.test.it.sql.parser.external.env.SQLParserExternalITEnvironment;
+import org.apache.shardingsphere.test.it.sql.parser.external.loader.ExternalSQLParserTestParameterLoader;
+import org.apache.shardingsphere.test.it.sql.parser.external.loader.strategy.impl.GitHubTestParameterLoadStrategy;
import org.apache.shardingsphere.test.it.sql.parser.external.result.SQLParseResultReporter;
import org.apache.shardingsphere.test.it.sql.parser.external.result.SQLParseResultReporterCreator;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
+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 java.net.URI;
+import java.util.Collection;
import java.util.Properties;
+import java.util.stream.Stream;
-@RunWith(Parameterized.class)
public abstract class ExternalSQLParserIT {
- private final String sqlCaseId;
-
- private final String sql;
-
- private final String databaseType;
-
- private final SQLParseResultReporter resultReporter;
-
- protected ExternalSQLParserIT(final ExternalSQLParserTestParameter testParam) {
- sqlCaseId = testParam.getSqlCaseId();
- sql = testParam.getSql();
- databaseType = testParam.getDatabaseType();
- resultReporter = TypedSPILoader.getService(SQLParseResultReporterCreator.class, testParam.getReportType()).create(databaseType);
- }
-
- @Test
- public final void assertParseSQL() {
+ @ParameterizedTest(name = "{0} ({1}) -> {2}")
+ @EnabledIf("isEnabled")
+ @ArgumentsSource(TestCaseArgumentsProvider.class)
+ public final void assertParseSQL(final String sqlCaseId, final String databaseType, final String sql, final String reportType) {
boolean isSuccess = true;
+ SQLParseResultReporter resultReporter = TypedSPILoader.getService(SQLParseResultReporterCreator.class, reportType).create(databaseType);
try {
ParseASTNode parseASTNode = new SQLParserEngine(databaseType, new CacheOption(128, 1024L)).parse(sql, false);
new SQLVisitorEngine(databaseType, "STATEMENT", true, new Properties()).visit(parseASTNode);
@@ -60,4 +56,24 @@ public abstract class ExternalSQLParserIT {
}
resultReporter.printResult(sqlCaseId, databaseType, isSuccess, sql);
}
+
+ private static boolean isEnabled() {
+ return SQLParserExternalITEnvironment.getInstance().isSqlParserITEnabled();
+ }
+
+ private static class TestCaseArgumentsProvider implements ArgumentsProvider {
+
+ @Override
+ public Stream<? extends Arguments> provideArguments(final ExtensionContext extensionContext) {
+ ExternalSQLParserITSettings settings = extensionContext.getRequiredTestClass().getAnnotation(ExternalSQLParserITSettings.class);
+ return null == settings
+ ? Stream.empty()
+ : getTestParameters(settings).stream().map(each -> Arguments.of(each.getSqlCaseId(), each.getDatabaseType(), each.getSql(), each.getReportType()));
+ }
+
+ private Collection<ExternalSQLParserTestParameter> getTestParameters(final ExternalSQLParserITSettings settings) {
+ return new ExternalSQLParserTestParameterLoader(
+ new GitHubTestParameterLoadStrategy()).load(URI.create(settings.caseURL()), URI.create(settings.resultURL()), settings.value(), settings.reportType());
+ }
+ }
}
diff --git a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/ExternalSQLParserTestParameter.java b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/ExternalSQLParserITSettings.java
similarity index 55%
copy from test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/ExternalSQLParserTestParameter.java
copy to test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/ExternalSQLParserITSettings.java
index e3d76e1268d..f550e93bcac 100644
--- a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/ExternalSQLParserTestParameter.java
+++ b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/ExternalSQLParserITSettings.java
@@ -17,26 +17,42 @@
package org.apache.shardingsphere.test.it.sql.parser.external;
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
/**
- * External SQL parser test parameter.
+ * External SQL parser integrate test settings.
*/
-@RequiredArgsConstructor
-@Getter
-public final class ExternalSQLParserTestParameter {
+@Inherited
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ExternalSQLParserITSettings {
- private final String sqlCaseId;
+ /**
+ * Get to be tested database types.
+ *
+ * @return to be tested database types
+ */
+ String value();
- private final String databaseType;
+ /**
+ * Get test case URL.
+ *
+ * @return test case URL
+ */
+ String caseURL();
- private final String sql;
+ /**
+ * Get test case result URL.
+ *
+ * @return test case result URL
+ */
+ String resultURL();
- private final String reportType;
-
- @Override
- public String toString() {
- return String.format("%s (%s) -> %s", sqlCaseId, databaseType, sql);
- }
+ /**
+ * Report type.
+ *
+ * @return get report type
+ */
+ String reportType() default "CSV";
}
diff --git a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/ExternalSQLParserTestParameter.java b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/ExternalSQLParserTestParameter.java
index e3d76e1268d..f6b30720f46 100644
--- a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/ExternalSQLParserTestParameter.java
+++ b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/ExternalSQLParserTestParameter.java
@@ -34,9 +34,4 @@ public final class ExternalSQLParserTestParameter {
private final String sql;
private final String reportType;
-
- @Override
- public String toString() {
- return String.format("%s (%s) -> %s", sqlCaseId, databaseType, sql);
- }
}
diff --git a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/loader/ExternalSQLParserTestParameterLoader.java b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/loader/ExternalSQLParserTestParameterLoader.java
index 723bd19733b..7306b003fc3 100644
--- a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/loader/ExternalSQLParserTestParameterLoader.java
+++ b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/loader/ExternalSQLParserTestParameterLoader.java
@@ -22,14 +22,12 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.shardingsphere.test.it.sql.parser.external.ExternalSQLParserTestParameter;
import org.apache.shardingsphere.test.it.sql.parser.external.loader.strategy.TestParameterLoadStrategy;
import org.apache.shardingsphere.test.it.sql.parser.external.loader.summary.FileSummary;
-import org.apache.shardingsphere.test.it.sql.parser.external.env.SQLParserExternalITEnvironment;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URI;
import java.util.Collection;
-import java.util.Collections;
import java.util.LinkedList;
import java.util.Map;
import java.util.Map.Entry;
@@ -54,9 +52,6 @@ public final class ExternalSQLParserTestParameterLoader {
* @return loaded test parameters
*/
public Collection<ExternalSQLParserTestParameter> load(final URI sqlCaseURI, final URI resultURI, final String databaseType, final String reportType) {
- if (!SQLParserExternalITEnvironment.getInstance().isSqlParserITEnabled()) {
- return Collections.emptyList();
- }
Collection<ExternalSQLParserTestParameter> result = new LinkedList<>();
Map<String, FileSummary> sqlCaseFileSummaries = loadStrategy.loadSQLCaseFileSummaries(sqlCaseURI).stream().collect(Collectors.toMap(FileSummary::getFileName, v -> v, (k, v) -> v));
Map<String, FileSummary> resultFileSummaries = loadStrategy.loadSQLCaseFileSummaries(resultURI).stream().collect(Collectors.toMap(FileSummary::getFileName, v -> v, (k, v) -> v));