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 81d5cfa7055 Add TestParameterLoadTemplate (#28094)
81d5cfa7055 is described below

commit 81d5cfa7055e60e913d92178e233a5ccd29550e6
Author: Liang Zhang <[email protected]>
AuthorDate: Tue Aug 15 17:02:11 2023 +0800

    Add TestParameterLoadTemplate (#28094)
---
 .../it/mysql/external/ExternalMySQLParserIT.java   |  4 +-
 .../external/ExternalPostgreSQLParserIT.java       |  5 ++-
 .../sql/parser/external/ExternalSQLParserIT.java   |  7 +--
 ...=> MySQLExternalTestParameterLoadTemplate.java} | 15 +++----
 ...StandardExternalTestParameterLoadTemplate.java} | 15 +++----
 .../it/sql/parser/loader/ExternalCaseSettings.java |  6 +--
 ...ettings.java => TestParameterLoadTemplate.java} | 50 ++++++----------------
 ...rameterLoader.java => TestParameterLoader.java} | 24 +++--------
 8 files changed, 40 insertions(+), 86 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 48503ede2b6..31733bafceb 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,10 +18,10 @@
 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.loader.MySQLExternalTestParameterLoader;
+import 
org.apache.shardingsphere.test.it.sql.parser.external.loader.MySQLExternalTestParameterLoadTemplate;
 import 
org.apache.shardingsphere.test.it.sql.parser.loader.ExternalCaseSettings;
 
-@ExternalCaseSettings(value = "MySQL", caseURL = 
ExternalMySQLParserIT.CASE_URL, resultURL = ExternalMySQLParserIT.RESULT_URL, 
caseLoader = MySQLExternalTestParameterLoader.class)
+@ExternalCaseSettings(value = "MySQL", caseURL = 
ExternalMySQLParserIT.CASE_URL, resultURL = ExternalMySQLParserIT.RESULT_URL, 
template = MySQLExternalTestParameterLoadTemplate.class)
 class ExternalMySQLParserIT extends ExternalSQLParserIT {
     
     static final String CASE_URL = 
"https://github.com/mysql/mysql-server/tree/8.0/mysql-test/t";;
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 38d6e5be165..a3e0dbd070c 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,10 +18,11 @@
 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.loader.DefaultExternalTestParameterLoader;
+import 
org.apache.shardingsphere.test.it.sql.parser.external.loader.StandardExternalTestParameterLoadTemplate;
 import 
org.apache.shardingsphere.test.it.sql.parser.loader.ExternalCaseSettings;
 
-@ExternalCaseSettings(value = "PostgreSQL", caseURL = 
ExternalPostgreSQLParserIT.CASE_URL, resultURL = 
ExternalPostgreSQLParserIT.RESULT_URL, caseLoader = 
DefaultExternalTestParameterLoader.class)
+@ExternalCaseSettings(value = "PostgreSQL", caseURL = 
ExternalPostgreSQLParserIT.CASE_URL, resultURL = 
ExternalPostgreSQLParserIT.RESULT_URL,
+        template = StandardExternalTestParameterLoadTemplate.class)
 class ExternalPostgreSQLParserIT extends ExternalSQLParserIT {
     
     static final String CASE_URL = 
"https://github.com/postgres/postgres/tree/master/src/test/regress/sql";;
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 505ae7298b5..fbdbfdb4761 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
@@ -28,10 +28,10 @@ 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.result.SQLParseResultReporter;
 import 
org.apache.shardingsphere.test.it.sql.parser.external.result.SQLParseResultReporterCreator;
-import 
org.apache.shardingsphere.test.it.sql.parser.loader.AbstractTestParameterLoader;
+import org.apache.shardingsphere.test.it.sql.parser.loader.TestParameterLoader;
+import 
org.apache.shardingsphere.test.it.sql.parser.loader.TestParameterLoadTemplate;
 import 
org.apache.shardingsphere.test.it.sql.parser.loader.ExternalCaseSettings;
 import 
org.apache.shardingsphere.test.it.sql.parser.loader.ExternalSQLParserTestParameter;
-import 
org.apache.shardingsphere.test.it.sql.parser.loader.strategy.TestParameterLoadStrategy;
 import 
org.apache.shardingsphere.test.it.sql.parser.loader.strategy.impl.GitHubTestParameterLoadStrategy;
 import org.junit.jupiter.api.condition.EnabledIf;
 import org.junit.jupiter.api.extension.ExtensionContext;
@@ -84,7 +84,8 @@ public abstract class ExternalSQLParserIT {
         
         @SneakyThrows
         private Collection<ExternalSQLParserTestParameter> 
getTestParameters(final ExternalCaseSettings settings) {
-            AbstractTestParameterLoader loader = 
settings.caseLoader().getConstructor(TestParameterLoadStrategy.class).newInstance(new
 GitHubTestParameterLoadStrategy());
+            TestParameterLoadTemplate loadTemplate = 
settings.template().getConstructor(TestParameterLoadTemplate.class).newInstance();
+            TestParameterLoader loader = new TestParameterLoader(new 
GitHubTestParameterLoadStrategy(), loadTemplate);
             return loader.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/loader/MySQLExternalTestParameterLoader.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/loader/MySQLExternalTestParameterLoadTemplate.java
similarity index 83%
rename from 
test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/loader/MySQLExternalTestParameterLoader.java
rename to 
test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/loader/MySQLExternalTestParameterLoadTemplate.java
index 868b8911f15..99b9faa1454 100644
--- 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/loader/MySQLExternalTestParameterLoader.java
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/loader/MySQLExternalTestParameterLoadTemplate.java
@@ -17,9 +17,8 @@
 
 package org.apache.shardingsphere.test.it.sql.parser.external.loader;
 
+import 
org.apache.shardingsphere.test.it.sql.parser.loader.TestParameterLoadTemplate;
 import 
org.apache.shardingsphere.test.it.sql.parser.loader.ExternalSQLParserTestParameter;
-import 
org.apache.shardingsphere.test.it.sql.parser.loader.AbstractTestParameterLoader;
-import 
org.apache.shardingsphere.test.it.sql.parser.loader.strategy.TestParameterLoadStrategy;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -28,19 +27,15 @@ import java.util.List;
 import java.util.Objects;
 
 /**
- * External test parameter loader for MySQL.
+ * External test parameter load template for MySQL.
  */
-public final class MySQLExternalTestParameterLoader extends 
AbstractTestParameterLoader {
+public final class MySQLExternalTestParameterLoadTemplate implements 
TestParameterLoadTemplate {
     
     private static final int DELIMITER_COMMAND_LENGTH = "DELIMITER".length();
     
-    public MySQLExternalTestParameterLoader(final TestParameterLoadStrategy 
loadStrategy) {
-        super(loadStrategy);
-    }
-    
     @Override
-    public Collection<ExternalSQLParserTestParameter> 
createTestParameters(final String sqlCaseFileName, final List<String> 
sqlCaseFileContent,
-                                                                           
final List<String> resultFileContent, final String databaseType, final String 
reportType) {
+    public Collection<ExternalSQLParserTestParameter> load(final String 
sqlCaseFileName, final List<String> sqlCaseFileContent,
+                                                           final List<String> 
resultFileContent, final String databaseType, final String reportType) {
         Collection<ExternalSQLParserTestParameter> result = new LinkedList<>();
         List<String> lines = new ArrayList<>();
         int sqlCaseIndex = 1;
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/loader/DefaultExternalTestParameterLoader.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/loader/StandardExternalTestParameterLoadTemplate.java
similarity index 81%
rename from 
test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/loader/DefaultExternalTestParameterLoader.java
rename to 
test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/loader/StandardExternalTestParameterLoadTemplate.java
index 19019768739..370f9b22bbd 100644
--- 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/loader/DefaultExternalTestParameterLoader.java
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/loader/StandardExternalTestParameterLoadTemplate.java
@@ -17,26 +17,21 @@
 
 package org.apache.shardingsphere.test.it.sql.parser.external.loader;
 
+import 
org.apache.shardingsphere.test.it.sql.parser.loader.TestParameterLoadTemplate;
 import 
org.apache.shardingsphere.test.it.sql.parser.loader.ExternalSQLParserTestParameter;
-import 
org.apache.shardingsphere.test.it.sql.parser.loader.AbstractTestParameterLoader;
-import 
org.apache.shardingsphere.test.it.sql.parser.loader.strategy.TestParameterLoadStrategy;
 
 import java.util.Collection;
 import java.util.LinkedList;
 import java.util.List;
 
 /**
- * Default external SQL parser test parameter loader.
+ * Standard external test parameter load template.
  */
-public final class DefaultExternalTestParameterLoader extends 
AbstractTestParameterLoader {
-    
-    public DefaultExternalTestParameterLoader(final TestParameterLoadStrategy 
loadStrategy) {
-        super(loadStrategy);
-    }
+public final class StandardExternalTestParameterLoadTemplate implements 
TestParameterLoadTemplate {
     
     @Override
-    public Collection<ExternalSQLParserTestParameter> 
createTestParameters(final String sqlCaseFileName, final List<String> 
sqlCaseFileContent,
-                                                                           
final List<String> resultFileContent, final String databaseType, final String 
reportType) {
+    public Collection<ExternalSQLParserTestParameter> load(final String 
sqlCaseFileName, final List<String> sqlCaseFileContent,
+                                                           final List<String> 
resultFileContent, final String databaseType, final String reportType) {
         Collection<ExternalSQLParserTestParameter> result = new LinkedList<>();
         String completedSQL = "";
         int sqlCaseEnum = 1;
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/loader/ExternalCaseSettings.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/loader/ExternalCaseSettings.java
index 232df1a81b9..156d6f49008 100644
--- 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/loader/ExternalCaseSettings.java
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/loader/ExternalCaseSettings.java
@@ -57,9 +57,9 @@ public @interface ExternalCaseSettings {
     String reportType() default "CSV";
     
     /**
-     * Get case loader.
+     * Get test parameter load template.
      *
-     * @return case loader
+     * @return test parameter load template
      */
-    Class<? extends AbstractTestParameterLoader> caseLoader();
+    Class<? extends TestParameterLoadTemplate> template();
 }
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/loader/ExternalCaseSettings.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/loader/TestParameterLoadTemplate.java
similarity index 51%
copy from 
test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/loader/ExternalCaseSettings.java
copy to 
test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/loader/TestParameterLoadTemplate.java
index 232df1a81b9..056a2183a5f 100644
--- 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/loader/ExternalCaseSettings.java
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/loader/TestParameterLoadTemplate.java
@@ -17,49 +17,23 @@
 
 package org.apache.shardingsphere.test.it.sql.parser.loader;
 
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
+import java.util.Collection;
+import java.util.List;
 
 /**
- * External SQL case test settings.
+ * Test parameter load template.
  */
-@Inherited
-@Retention(RetentionPolicy.RUNTIME)
-public @interface ExternalCaseSettings {
+public interface TestParameterLoadTemplate {
     
     /**
-     * Get to be tested database types.
+     * Load test parameters.
      * 
-     * @return to be tested database types
+     * @param sqlCaseFileName SQL case file name
+     * @param sqlCaseFileContent SQL case file content
+     * @param resultFileContent result file content
+     * @param databaseType database type
+     * @param reportType report type
+     * @return loaded test parameters
      */
-    String value();
-    
-    /**
-     * Get test case URL.
-     * 
-     * @return test case URL
-     */
-    String caseURL();
-    
-    /**
-     * Get test case result URL.
-     * 
-     * @return test case result URL
-     */
-    String resultURL();
-    
-    /**
-     * Report type.
-     * 
-     * @return get report type
-     */
-    String reportType() default "CSV";
-    
-    /**
-     * Get case loader.
-     *
-     * @return case loader
-     */
-    Class<? extends AbstractTestParameterLoader> caseLoader();
+    Collection<ExternalSQLParserTestParameter> load(String sqlCaseFileName, 
List<String> sqlCaseFileContent, List<String> resultFileContent, String 
databaseType, String reportType);
 }
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/loader/AbstractTestParameterLoader.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/loader/TestParameterLoader.java
similarity index 78%
rename from 
test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/loader/AbstractTestParameterLoader.java
rename to 
test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/loader/TestParameterLoader.java
index 61299b8e78b..f754698d352 100644
--- 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/loader/AbstractTestParameterLoader.java
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/loader/TestParameterLoader.java
@@ -18,7 +18,6 @@
 package org.apache.shardingsphere.test.it.sql.parser.loader;
 
 import com.google.common.collect.Lists;
-import lombok.AccessLevel;
 import lombok.RequiredArgsConstructor;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
@@ -43,9 +42,9 @@ import java.util.stream.Collectors;
 /**
  * Test parameter loader.
  */
-@RequiredArgsConstructor(access = AccessLevel.PROTECTED)
+@RequiredArgsConstructor
 @Slf4j
-public abstract class AbstractTestParameterLoader {
+public final class TestParameterLoader {
     
     private static final int DEFAULT_DOWNLOAD_THREADS = 4;
     
@@ -53,6 +52,8 @@ public abstract class AbstractTestParameterLoader {
     
     private final TestParameterLoadStrategy loadStrategy;
     
+    private final TestParameterLoadTemplate loadTemplate;
+    
     /**
      * Load test parameters.
      *
@@ -63,7 +64,7 @@ public abstract class AbstractTestParameterLoader {
      * @return loaded test parameters
      */
     @SneakyThrows
-    public final Collection<ExternalSQLParserTestParameter> load(final URI 
sqlCaseURI, final URI resultURI, final String databaseType, final String 
reportType) {
+    public Collection<ExternalSQLParserTestParameter> load(final URI 
sqlCaseURI, final URI resultURI, final String databaseType, final String 
reportType) {
         Collection<ExternalSQLParserTestParameter> result = new LinkedList<>();
         Map<String, List<String>> sqlCaseFileContents = 
downloadAllBySummary(sqlCaseURI);
         Map<String, List<String>> resultFileContents = 
downloadAllBySummary(resultURI);
@@ -71,7 +72,7 @@ public abstract class AbstractTestParameterLoader {
             String fileName = each.getKey();
             List<String> sqlCaseFileContent = each.getValue();
             List<String> resultFileContent = 
resultFileContents.getOrDefault(fileName, Lists.newArrayList());
-            result.addAll(createTestParameters(fileName, sqlCaseFileContent, 
resultFileContent, databaseType, reportType));
+            result.addAll(loadTemplate.load(fileName, sqlCaseFileContent, 
resultFileContent, databaseType, reportType));
         }
         return result;
     }
@@ -85,19 +86,6 @@ public abstract class AbstractTestParameterLoader {
         return contents;
     }
     
-    /**
-     * Create test parameters.
-     * 
-     * @param sqlCaseFileName SQL case file name
-     * @param sqlCaseFileContent SQL case file content
-     * @param resultFileContent result file content
-     * @param databaseType database type
-     * @param reportType report type
-     * @return test parameters
-     */
-    public abstract Collection<ExternalSQLParserTestParameter> 
createTestParameters(String sqlCaseFileName,
-                                                                               
     List<String> sqlCaseFileContent, List<String> resultFileContent, String 
databaseType, String reportType);
-    
     private List<String> loadContent(final URI uri) {
         try (
                 InputStreamReader in = new 
InputStreamReader(uri.toURL().openStream());

Reply via email to