You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2023/03/02 08:09:17 UTC
[shardingsphere] branch master updated: Use junit 5.x's API to refactor InternalSQLParserIT (#24419)
This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new d5914831d21 Use junit 5.x's API to refactor InternalSQLParserIT (#24419)
d5914831d21 is described below
commit d5914831d219f7eed85bfccca6141ae4ab2b04d4
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Thu Mar 2 16:09:09 2023 +0800
Use junit 5.x's API to refactor InternalSQLParserIT (#24419)
* Use assertThat isEmpty to instead of assertThat size is 0
* Use junit 5.x's API to refactor InternalSQLParserIT
---
.../it/mysql/internal/InternalMySQLParserIT.java | 18 +-----
.../internal/InternalOpenGaussParserIT.java | 18 +-----
.../it/oracle/internal/InternalOracleParserIT.java | 18 +-----
.../internal/InternalPostgreSQLParserIT.java | 18 +-----
.../it/sql92/internal/InternalSQL92ParserIT.java | 18 +-----
.../internal/InternalSQLServerParserIT.java | 18 +-----
.../sql/parser/internal/InternalSQLParserIT.java | 64 +++++++++++-----------
.../internal/InternalSQLParserITSettings.java} | 30 +++++-----
.../parser/internal/InternalDistSQLParserIT.java | 17 +-----
9 files changed, 60 insertions(+), 159 deletions(-)
diff --git a/sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/mysql/internal/InternalMySQLParserIT.java b/sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/mysql/internal/InternalMySQLParserIT.java
index 01fad95281a..e06e1449497 100644
--- a/sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/mysql/internal/InternalMySQLParserIT.java
+++ b/sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/mysql/internal/InternalMySQLParserIT.java
@@ -18,22 +18,8 @@
package org.apache.shardingsphere.test.it.sql.parser.it.mysql.internal;
import org.apache.shardingsphere.test.it.sql.parser.internal.InternalSQLParserIT;
-import org.apache.shardingsphere.test.it.sql.parser.internal.InternalSQLParserTestParameter;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
+import org.apache.shardingsphere.test.it.sql.parser.internal.InternalSQLParserITSettings;
-import java.util.Collection;
-
-@RunWith(Parameterized.class)
+@InternalSQLParserITSettings({"MySQL", "H2"})
public final class InternalMySQLParserIT extends InternalSQLParserIT {
-
- public InternalMySQLParserIT(final InternalSQLParserTestParameter testParam) {
- super(testParam);
- }
-
- @Parameters(name = "{0}")
- public static Collection<InternalSQLParserTestParameter> getTestParameters() {
- return getTestParameters("MySQL", "H2");
- }
}
diff --git a/sql-parser/dialect/opengauss/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/opengauss/internal/InternalOpenGaussParserIT.java b/sql-parser/dialect/opengauss/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/opengauss/internal/InternalOpenGaussParserIT.java
index f42b610cef1..d1ae3510091 100644
--- a/sql-parser/dialect/opengauss/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/opengauss/internal/InternalOpenGaussParserIT.java
+++ b/sql-parser/dialect/opengauss/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/opengauss/internal/InternalOpenGaussParserIT.java
@@ -18,22 +18,8 @@
package org.apache.shardingsphere.test.it.sql.parser.it.opengauss.internal;
import org.apache.shardingsphere.test.it.sql.parser.internal.InternalSQLParserIT;
-import org.apache.shardingsphere.test.it.sql.parser.internal.InternalSQLParserTestParameter;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
+import org.apache.shardingsphere.test.it.sql.parser.internal.InternalSQLParserITSettings;
-import java.util.Collection;
-
-@RunWith(Parameterized.class)
+@InternalSQLParserITSettings("openGauss")
public final class InternalOpenGaussParserIT extends InternalSQLParserIT {
-
- public InternalOpenGaussParserIT(final InternalSQLParserTestParameter testParam) {
- super(testParam);
- }
-
- @Parameters(name = "{0}")
- public static Collection<InternalSQLParserTestParameter> getTestParameters() {
- return getTestParameters("openGauss");
- }
}
diff --git a/sql-parser/dialect/oracle/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/oracle/internal/InternalOracleParserIT.java b/sql-parser/dialect/oracle/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/oracle/internal/InternalOracleParserIT.java
index 4a1d6736126..8103f6f350d 100644
--- a/sql-parser/dialect/oracle/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/oracle/internal/InternalOracleParserIT.java
+++ b/sql-parser/dialect/oracle/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/oracle/internal/InternalOracleParserIT.java
@@ -18,22 +18,8 @@
package org.apache.shardingsphere.test.it.sql.parser.it.oracle.internal;
import org.apache.shardingsphere.test.it.sql.parser.internal.InternalSQLParserIT;
-import org.apache.shardingsphere.test.it.sql.parser.internal.InternalSQLParserTestParameter;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
+import org.apache.shardingsphere.test.it.sql.parser.internal.InternalSQLParserITSettings;
-import java.util.Collection;
-
-@RunWith(Parameterized.class)
+@InternalSQLParserITSettings("Oracle")
public final class InternalOracleParserIT extends InternalSQLParserIT {
-
- public InternalOracleParserIT(final InternalSQLParserTestParameter testParam) {
- super(testParam);
- }
-
- @Parameters(name = "{0}")
- public static Collection<InternalSQLParserTestParameter> getTestParameters() {
- return getTestParameters("Oracle");
- }
}
diff --git a/sql-parser/dialect/postgresql/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/postgresql/internal/InternalPostgreSQLParserIT.java b/sql-parser/dialect/postgresql/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/postgresql/internal/InternalPostgreSQLParserIT.java
index 071a42b241c..96b69f234c7 100644
--- a/sql-parser/dialect/postgresql/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/postgresql/internal/InternalPostgreSQLParserIT.java
+++ b/sql-parser/dialect/postgresql/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/postgresql/internal/InternalPostgreSQLParserIT.java
@@ -18,22 +18,8 @@
package org.apache.shardingsphere.test.it.sql.parser.it.postgresql.internal;
import org.apache.shardingsphere.test.it.sql.parser.internal.InternalSQLParserIT;
-import org.apache.shardingsphere.test.it.sql.parser.internal.InternalSQLParserTestParameter;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
+import org.apache.shardingsphere.test.it.sql.parser.internal.InternalSQLParserITSettings;
-import java.util.Collection;
-
-@RunWith(Parameterized.class)
+@InternalSQLParserITSettings("PostgreSQL")
public final class InternalPostgreSQLParserIT extends InternalSQLParserIT {
-
- public InternalPostgreSQLParserIT(final InternalSQLParserTestParameter testParam) {
- super(testParam);
- }
-
- @Parameters(name = "{0}")
- public static Collection<InternalSQLParserTestParameter> getTestParameters() {
- return getTestParameters("PostgreSQL");
- }
}
diff --git a/sql-parser/dialect/sql92/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/sql92/internal/InternalSQL92ParserIT.java b/sql-parser/dialect/sql92/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/sql92/internal/InternalSQL92ParserIT.java
index d91ee3ddebc..60002e8bbea 100644
--- a/sql-parser/dialect/sql92/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/sql92/internal/InternalSQL92ParserIT.java
+++ b/sql-parser/dialect/sql92/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/sql92/internal/InternalSQL92ParserIT.java
@@ -18,22 +18,8 @@
package org.apache.shardingsphere.test.it.sql.parser.it.sql92.internal;
import org.apache.shardingsphere.test.it.sql.parser.internal.InternalSQLParserIT;
-import org.apache.shardingsphere.test.it.sql.parser.internal.InternalSQLParserTestParameter;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
+import org.apache.shardingsphere.test.it.sql.parser.internal.InternalSQLParserITSettings;
-import java.util.Collection;
-
-@RunWith(Parameterized.class)
+@InternalSQLParserITSettings("SQL92")
public final class InternalSQL92ParserIT extends InternalSQLParserIT {
-
- public InternalSQL92ParserIT(final InternalSQLParserTestParameter testParam) {
- super(testParam);
- }
-
- @Parameters(name = "{0}")
- public static Collection<InternalSQLParserTestParameter> getTestParameters() {
- return getTestParameters("SQL92");
- }
}
diff --git a/sql-parser/dialect/sqlserver/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/sqlserver/internal/InternalSQLServerParserIT.java b/sql-parser/dialect/sqlserver/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/sqlserver/internal/InternalSQLServerParserIT.java
index dd2269d7eb4..0230e445b78 100644
--- a/sql-parser/dialect/sqlserver/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/sqlserver/internal/InternalSQLServerParserIT.java
+++ b/sql-parser/dialect/sqlserver/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/sqlserver/internal/InternalSQLServerParserIT.java
@@ -18,22 +18,8 @@
package org.apache.shardingsphere.test.it.sql.parser.it.sqlserver.internal;
import org.apache.shardingsphere.test.it.sql.parser.internal.InternalSQLParserIT;
-import org.apache.shardingsphere.test.it.sql.parser.internal.InternalSQLParserTestParameter;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
+import org.apache.shardingsphere.test.it.sql.parser.internal.InternalSQLParserITSettings;
-import java.util.Collection;
-
-@RunWith(Parameterized.class)
+@InternalSQLParserITSettings("SQLServer")
public final class InternalSQLServerParserIT extends InternalSQLParserIT {
-
- public InternalSQLServerParserIT(final InternalSQLParserTestParameter testParam) {
- super(testParam);
- }
-
- @Parameters(name = "{0}")
- public static Collection<InternalSQLParserTestParameter> getTestParameters() {
- return getTestParameters("SQLServer");
- }
}
diff --git a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/InternalSQLParserIT.java b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/InternalSQLParserIT.java
index 3ffa3860906..97701439502 100644
--- a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/InternalSQLParserIT.java
+++ b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/InternalSQLParserIT.java
@@ -30,13 +30,18 @@ import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.regist
import org.apache.shardingsphere.test.it.sql.parser.internal.cases.sql.SQLCases;
import org.apache.shardingsphere.test.it.sql.parser.internal.cases.sql.registry.SQLCasesRegistry;
import org.apache.shardingsphere.test.it.sql.parser.internal.cases.sql.type.SQLCaseType;
-import org.junit.Test;
+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.util.Arrays;
import java.util.Collection;
import java.util.LinkedList;
import java.util.Properties;
import java.util.stream.Collectors;
+import java.util.stream.Stream;
public abstract class InternalSQLParserIT {
@@ -44,37 +49,9 @@ public abstract class InternalSQLParserIT {
private static final SQLParserTestCases SQL_PARSER_TEST_CASES = SQLParserTestCasesRegistry.getInstance().getCases();
- private final String sqlCaseId;
-
- private final String databaseType;
-
- private final SQLCaseType sqlCaseType;
-
- private final String visitorType;
-
- public InternalSQLParserIT(final InternalSQLParserTestParameter testParam) {
- sqlCaseId = testParam.getSqlCaseId();
- databaseType = testParam.getDatabaseType();
- sqlCaseType = testParam.getSqlCaseType();
- visitorType = testParam.getVisitorType();
- }
-
- protected static Collection<InternalSQLParserTestParameter> getTestParameters(final String... databaseTypes) {
- Collection<InternalSQLParserTestParameter> result = new LinkedList<>();
- for (InternalSQLParserTestParameter each : SQL_CASES.generateTestParameters(Arrays.stream(databaseTypes).collect(Collectors.toSet()))) {
- if (!isPlaceholderWithoutParameter(each)) {
- result.add(each);
- }
- }
- return result;
- }
-
- private static boolean isPlaceholderWithoutParameter(final InternalSQLParserTestParameter testParam) {
- return SQLCaseType.Placeholder == testParam.getSqlCaseType() && SQL_PARSER_TEST_CASES.get(testParam.getSqlCaseId()).getParameters().isEmpty();
- }
-
- @Test
- public final void assertSupportedSQL() {
+ @ParameterizedTest(name = "{0} ({1}) -> {2}")
+ @ArgumentsSource(TestCaseArgumentsProvider.class)
+ public final void assertSupportedSQL(final String sqlCaseId, final SQLCaseType sqlCaseType, final String databaseType, final String visitorType) {
String sql = SQL_CASES.getSQL(sqlCaseId, sqlCaseType, SQL_PARSER_TEST_CASES.get(sqlCaseId).getParameters());
Object actual = parseSQLStatement("H2".equals(databaseType) ? "MySQL" : databaseType, visitorType, sql);
SQLParserTestCase expected = SQL_PARSER_TEST_CASES.get(sqlCaseId);
@@ -88,4 +65,27 @@ public abstract class InternalSQLParserIT {
? new DistSQLStatementParserEngine().parse(sql)
: new SQLVisitorEngine(databaseType, visitorType, true, new Properties()).visit(new SQLParserEngine(databaseType, new CacheOption(128, 1024L)).parse(sql, false));
}
+
+ private static class TestCaseArgumentsProvider implements ArgumentsProvider {
+
+ @Override
+ public Stream<? extends Arguments> provideArguments(final ExtensionContext extensionContext) {
+ InternalSQLParserITSettings settings = extensionContext.getRequiredTestClass().getAnnotation(InternalSQLParserITSettings.class);
+ return null == settings ? Stream.empty() : getTestParameters(settings.value()).stream();
+ }
+
+ private Collection<Arguments> getTestParameters(final String... databaseTypes) {
+ Collection<Arguments> result = new LinkedList<>();
+ for (InternalSQLParserTestParameter each : SQL_CASES.generateTestParameters(Arrays.stream(databaseTypes).collect(Collectors.toSet()))) {
+ if (!isPlaceholderWithoutParameter(each)) {
+ result.add(Arguments.arguments(each.getSqlCaseId(), each.getSqlCaseType(), each.getDatabaseType(), each.getVisitorType()));
+ }
+ }
+ return result;
+ }
+
+ private boolean isPlaceholderWithoutParameter(final InternalSQLParserTestParameter testParam) {
+ return SQLCaseType.Placeholder == testParam.getSqlCaseType() && SQL_PARSER_TEST_CASES.get(testParam.getSqlCaseId()).getParameters().isEmpty();
+ }
+ }
}
diff --git a/test/it/parser/src/test/java/org/apache/shardingsphere/test/it/sql/parser/internal/InternalDistSQLParserIT.java b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/InternalSQLParserITSettings.java
similarity index 61%
copy from test/it/parser/src/test/java/org/apache/shardingsphere/test/it/sql/parser/internal/InternalDistSQLParserIT.java
copy to test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/InternalSQLParserITSettings.java
index 92c1d2ff3af..4c10ce5e28e 100644
--- a/test/it/parser/src/test/java/org/apache/shardingsphere/test/it/sql/parser/internal/InternalDistSQLParserIT.java
+++ b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/InternalSQLParserITSettings.java
@@ -17,21 +17,21 @@
package org.apache.shardingsphere.test.it.sql.parser.internal;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
-import java.util.Collection;
-
-@RunWith(Parameterized.class)
-public final class InternalDistSQLParserIT extends InternalSQLParserIT {
-
- public InternalDistSQLParserIT(final InternalSQLParserTestParameter testParam) {
- super(testParam);
- }
+/**
+ * Internal SQL parser integrate test settings.
+ */
+@Inherited
+@Retention(RetentionPolicy.RUNTIME)
+public @interface InternalSQLParserITSettings {
- @Parameters(name = "{0}")
- public static Collection<InternalSQLParserTestParameter> getTestParameters() {
- return getTestParameters("ShardingSphere");
- }
+ /**
+ * Get to be tested database types.
+ *
+ * @return to be tested database types
+ */
+ String[] value();
}
diff --git a/test/it/parser/src/test/java/org/apache/shardingsphere/test/it/sql/parser/internal/InternalDistSQLParserIT.java b/test/it/parser/src/test/java/org/apache/shardingsphere/test/it/sql/parser/internal/InternalDistSQLParserIT.java
index 92c1d2ff3af..6abd0153fe1 100644
--- a/test/it/parser/src/test/java/org/apache/shardingsphere/test/it/sql/parser/internal/InternalDistSQLParserIT.java
+++ b/test/it/parser/src/test/java/org/apache/shardingsphere/test/it/sql/parser/internal/InternalDistSQLParserIT.java
@@ -17,21 +17,6 @@
package org.apache.shardingsphere.test.it.sql.parser.internal;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
-
-import java.util.Collection;
-
-@RunWith(Parameterized.class)
+@InternalSQLParserITSettings("ShardingSphere")
public final class InternalDistSQLParserIT extends InternalSQLParserIT {
-
- public InternalDistSQLParserIT(final InternalSQLParserTestParameter testParam) {
- super(testParam);
- }
-
- @Parameters(name = "{0}")
- public static Collection<InternalSQLParserTestParameter> getTestParameters() {
- return getTestParameters("ShardingSphere");
- }
}