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());