You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by ji...@apache.org on 2023/05/11 15:25:19 UTC
[shardingsphere] branch master updated: Optimize the code for testing sqlParser using MySQL Test Suite. (#25585)
This is an automated email from the ASF dual-hosted git repository.
jianglongtao 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 07c5f534759 Optimize the code for testing sqlParser using MySQL Test Suite. (#25585)
07c5f534759 is described below
commit 07c5f5347594d01d00d13866c77b95164a6ce501
Author: Cong Hu <ia...@qq.com>
AuthorDate: Thu May 11 23:25:02 2023 +0800
Optimize the code for testing sqlParser using MySQL Test Suite. (#25585)
* Optimize the code for testing sqlParser using MySQL Test Suite.
* retrigger checks
* fix CheckStyle error.
---
.../it/mysql/external/ExternalMySQLParserIT.java | 10 ++----
.../external/ExternalPostgreSQLParserIT.java | 10 ++----
.../sql/parser/external/ExternalSQLParserIT.java | 36 ++++++++++++++--------
.../loader/ExternalMySQLTestParameterLoader.java | 2 +-
.../ExternalPostgreSQLTestParameterLoader.java | 2 +-
.../test/loader/ExternalCaseSettings.java | 7 +++++
.../loader}/ExternalSQLParserTestParameter.java | 2 +-
7 files changed, 38 insertions(+), 31 deletions(-)
diff --git a/parser/sql/dialect/mysql/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/mysql/external/ExternalMySQLParserIT.java b/parser/sql/dialect/mysql/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/mysql/external/ExternalMySQLParserIT.java
index f937457df3c..98d1181f899 100644
--- a/parser/sql/dialect/mysql/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/mysql/external/ExternalMySQLParserIT.java
+++ b/parser/sql/dialect/mysql/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/mysql/external/ExternalMySQLParserIT.java
@@ -18,21 +18,15 @@
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.ExternalMySQLTestParameterLoader;
-import org.apache.shardingsphere.test.loader.AbstractTestParameterLoader;
import org.apache.shardingsphere.test.loader.ExternalCaseSettings;
-import org.apache.shardingsphere.test.loader.strategy.impl.GitHubTestParameterLoadStrategy;
-@ExternalCaseSettings(value = "MySQL", caseURL = ExternalMySQLParserIT.CASE_URL, resultURL = ExternalMySQLParserIT.RESULT_URL)
+@ExternalCaseSettings(value = "MySQL", caseURL = ExternalMySQLParserIT.CASE_URL, resultURL = ExternalMySQLParserIT.RESULT_URL,
+ testParameterLoader = ExternalMySQLTestParameterLoader.class)
class ExternalMySQLParserIT extends ExternalSQLParserIT {
static final String CASE_URL = "https://github.com/mysql/mysql-server/tree/8.0/mysql-test/t";
static final String RESULT_URL = "https://github.com/mysql/mysql-server/tree/8.0/mysql-test/r";
- @Override
- protected AbstractTestParameterLoader<ExternalSQLParserTestParameter> getTestParameterLoader() {
- return new ExternalMySQLTestParameterLoader(new GitHubTestParameterLoadStrategy());
- }
}
diff --git a/parser/sql/dialect/postgresql/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/postgresql/external/ExternalPostgreSQLParserIT.java b/parser/sql/dialect/postgresql/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/postgresql/external/ExternalPostgreSQLParserIT.java
index c8f547538f2..e6282ca1866 100644
--- a/parser/sql/dialect/postgresql/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/postgresql/external/ExternalPostgreSQLParserIT.java
+++ b/parser/sql/dialect/postgresql/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/postgresql/external/ExternalPostgreSQLParserIT.java
@@ -18,21 +18,15 @@
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.ExternalPostgreSQLTestParameterLoader;
-import org.apache.shardingsphere.test.loader.AbstractTestParameterLoader;
import org.apache.shardingsphere.test.loader.ExternalCaseSettings;
-import org.apache.shardingsphere.test.loader.strategy.impl.GitHubTestParameterLoadStrategy;
-@ExternalCaseSettings(value = "PostgreSQL", caseURL = ExternalPostgreSQLParserIT.CASE_URL, resultURL = ExternalPostgreSQLParserIT.RESULT_URL)
+@ExternalCaseSettings(value = "PostgreSQL", caseURL = ExternalPostgreSQLParserIT.CASE_URL, resultURL = ExternalPostgreSQLParserIT.RESULT_URL,
+ testParameterLoader = ExternalPostgreSQLTestParameterLoader.class)
class ExternalPostgreSQLParserIT extends ExternalSQLParserIT {
static final String CASE_URL = "https://github.com/postgres/postgres/tree/master/src/test/regress/sql";
static final String RESULT_URL = "https://github.com/postgres/postgres/tree/master/src/test/regress/expected";
- @Override
- protected AbstractTestParameterLoader<ExternalSQLParserTestParameter> getTestParameterLoader() {
- return new ExternalPostgreSQLTestParameterLoader(new GitHubTestParameterLoadStrategy());
- }
}
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 ec4efec15c3..e1260fc618d 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
@@ -18,6 +18,7 @@
package org.apache.shardingsphere.test.it.sql.parser.external;
import com.google.common.base.Preconditions;
+import lombok.SneakyThrows;
import org.apache.shardingsphere.infra.util.exception.external.ShardingSphereExternalException;
import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.CacheOption;
@@ -29,22 +30,26 @@ import org.apache.shardingsphere.test.it.sql.parser.external.result.SQLParseResu
import org.apache.shardingsphere.test.it.sql.parser.external.result.SQLParseResultReporterCreator;
import org.apache.shardingsphere.test.loader.AbstractTestParameterLoader;
import org.apache.shardingsphere.test.loader.ExternalCaseSettings;
-import org.junit.jupiter.api.TestInstance;
+import org.apache.shardingsphere.test.loader.ExternalSQLParserTestParameter;
+import org.apache.shardingsphere.test.loader.strategy.TestParameterLoadStrategy;
+import org.apache.shardingsphere.test.loader.strategy.impl.GitHubTestParameterLoadStrategy;
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.MethodSource;
+import org.junit.jupiter.params.provider.ArgumentsProvider;
+import org.junit.jupiter.params.provider.ArgumentsSource;
import java.io.IOException;
import java.net.URI;
+import java.util.Collection;
import java.util.stream.Stream;
-@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public abstract class ExternalSQLParserIT {
@ParameterizedTest(name = "{0} ({1}) -> {2}")
@EnabledIf("isEnabled")
- @MethodSource("provideArguments")
+ @ArgumentsSource(TestCaseArgumentsProvider.class)
void assertParseSQL(final String sqlCaseId, final String databaseType, final String sql, final String reportType) throws IOException {
boolean isSuccess = true;
try (
@@ -64,13 +69,20 @@ public abstract class ExternalSQLParserIT {
return SQLParserExternalITEnvironment.getInstance().isSqlParserITEnabled();
}
- private Stream<Arguments> provideArguments() {
- ExternalCaseSettings settings = this.getClass().getAnnotation(ExternalCaseSettings.class);
- Preconditions.checkNotNull(settings, "Annotation ExternalSQLParserITSettings is required.");
- return getTestParameterLoader()
- .load(URI.create(settings.caseURL()), URI.create(settings.resultURL()), settings.value(), settings.reportType())
- .stream().map(each -> Arguments.of(each.getSqlCaseId(), each.getDatabaseType(), each.getSql(), each.getReportType()));
+ private static class TestCaseArgumentsProvider implements ArgumentsProvider {
+
+ @Override
+ public Stream<? extends Arguments> provideArguments(final ExtensionContext extensionContext) {
+ ExternalCaseSettings settings = extensionContext.getRequiredTestClass().getAnnotation(ExternalCaseSettings.class);
+ Preconditions.checkNotNull(settings, "Annotation ExternalSQLParserITSettings is required.");
+ return getTestParameters(settings).stream().map(each -> Arguments.of(each.getSqlCaseId(), each.getDatabaseType(), each.getSql(), each.getReportType()));
+ }
+
+ @SneakyThrows
+ private Collection<ExternalSQLParserTestParameter> getTestParameters(final ExternalCaseSettings settings) {
+ AbstractTestParameterLoader<ExternalSQLParserTestParameter> loader = settings.testParameterLoader().getConstructor(TestParameterLoadStrategy.class)
+ .newInstance(new GitHubTestParameterLoadStrategy());
+ return loader.load(URI.create(settings.caseURL()), URI.create(settings.resultURL()), settings.value(), settings.reportType());
+ }
}
-
- protected abstract AbstractTestParameterLoader<ExternalSQLParserTestParameter> getTestParameterLoader();
}
diff --git a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/loader/ExternalMySQLTestParameterLoader.java b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/loader/ExternalMySQLTestParameterLoader.java
index 59dfab2548d..afd52d15320 100644
--- a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/loader/ExternalMySQLTestParameterLoader.java
+++ b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/loader/ExternalMySQLTestParameterLoader.java
@@ -17,7 +17,7 @@
package org.apache.shardingsphere.test.it.sql.parser.external.loader;
-import org.apache.shardingsphere.test.it.sql.parser.external.ExternalSQLParserTestParameter;
+import org.apache.shardingsphere.test.loader.ExternalSQLParserTestParameter;
import org.apache.shardingsphere.test.loader.AbstractTestParameterLoader;
import org.apache.shardingsphere.test.loader.strategy.TestParameterLoadStrategy;
diff --git a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/loader/ExternalPostgreSQLTestParameterLoader.java b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/loader/ExternalPostgreSQLTestParameterLoader.java
index eb59c9fb6f5..ba7944136eb 100644
--- a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/loader/ExternalPostgreSQLTestParameterLoader.java
+++ b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/loader/ExternalPostgreSQLTestParameterLoader.java
@@ -17,7 +17,7 @@
package org.apache.shardingsphere.test.it.sql.parser.external.loader;
-import org.apache.shardingsphere.test.it.sql.parser.external.ExternalSQLParserTestParameter;
+import org.apache.shardingsphere.test.loader.ExternalSQLParserTestParameter;
import org.apache.shardingsphere.test.loader.AbstractTestParameterLoader;
import org.apache.shardingsphere.test.loader.strategy.TestParameterLoadStrategy;
diff --git a/test/util/src/main/java/org/apache/shardingsphere/test/loader/ExternalCaseSettings.java b/test/util/src/main/java/org/apache/shardingsphere/test/loader/ExternalCaseSettings.java
index 3100f78cbf0..6a90ee7724e 100644
--- a/test/util/src/main/java/org/apache/shardingsphere/test/loader/ExternalCaseSettings.java
+++ b/test/util/src/main/java/org/apache/shardingsphere/test/loader/ExternalCaseSettings.java
@@ -55,4 +55,11 @@ public @interface ExternalCaseSettings {
* @return get report type
*/
String reportType() default "CSV";
+
+ /**
+ * Get test parameter loader.
+ *
+ * @return test parameter loader
+ */
+ Class<? extends AbstractTestParameterLoader<ExternalSQLParserTestParameter>> testParameterLoader();
}
diff --git a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/ExternalSQLParserTestParameter.java b/test/util/src/main/java/org/apache/shardingsphere/test/loader/ExternalSQLParserTestParameter.java
similarity index 94%
rename from test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/ExternalSQLParserTestParameter.java
rename to test/util/src/main/java/org/apache/shardingsphere/test/loader/ExternalSQLParserTestParameter.java
index f6b30720f46..051e7aef64a 100644
--- a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/ExternalSQLParserTestParameter.java
+++ b/test/util/src/main/java/org/apache/shardingsphere/test/loader/ExternalSQLParserTestParameter.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.test.it.sql.parser.external;
+package org.apache.shardingsphere.test.loader;
import lombok.Getter;
import lombok.RequiredArgsConstructor;