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");
-    }
 }