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 5160ad4f68b Optimize the code for testing sqlParser using MySQL Test
Suite. (#25574)
5160ad4f68b is described below
commit 5160ad4f68b8f9c70df27b66c613b4f2c57f6247
Author: Cong Hu <[email protected]>
AuthorDate: Thu May 11 18:17:05 2023 +0800
Optimize the code for testing sqlParser using MySQL Test Suite. (#25574)
* Optimize the code for testing sqlParser using MySQL Test Suite.
* Modified the code as per the suggestion.
* Modified the code as per the suggestion.
---
.../it/mysql/external/ExternalMySQLParserIT.java | 9 ++
.../external/ExternalPostgreSQLParserIT.java | 9 ++
.../sql/parser/external/ExternalSQLParserIT.java | 33 +++---
.../loader/ExternalMySQLTestParameterLoader.java | 113 +++++++++++++++++++++
... => ExternalPostgreSQLTestParameterLoader.java} | 24 ++---
.../test/loader/AbstractTestParameterLoader.java | 41 ++++++--
.../impl/GitHubTestParameterLoadStrategy.java | 12 ++-
7 files changed, 194 insertions(+), 47 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 d377c211c2e..f937457df3c 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,7 +18,11 @@
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)
class ExternalMySQLParserIT extends ExternalSQLParserIT {
@@ -26,4 +30,9 @@ 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 74acd54b101..c8f547538f2 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,7 +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.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)
class ExternalPostgreSQLParserIT extends ExternalSQLParserIT {
@@ -26,4 +30,9 @@ 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 bbe5ab55a71..ec4efec15c3 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
@@ -25,28 +25,26 @@ import
org.apache.shardingsphere.sql.parser.api.SQLParserEngine;
import org.apache.shardingsphere.sql.parser.api.SQLStatementVisitorEngine;
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.loader.ExternalSQLParserTestParameterLoader;
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.loader.AbstractTestParameterLoader;
import org.apache.shardingsphere.test.loader.ExternalCaseSettings;
-import
org.apache.shardingsphere.test.loader.strategy.impl.GitHubTestParameterLoadStrategy;
+import org.junit.jupiter.api.TestInstance;
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.ArgumentsProvider;
-import org.junit.jupiter.params.provider.ArgumentsSource;
+import org.junit.jupiter.params.provider.MethodSource;
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")
- @ArgumentsSource(TestCaseArgumentsProvider.class)
+ @MethodSource("provideArguments")
void assertParseSQL(final String sqlCaseId, final String databaseType,
final String sql, final String reportType) throws IOException {
boolean isSuccess = true;
try (
@@ -66,18 +64,13 @@ public abstract class ExternalSQLParserIT {
return
SQLParserExternalITEnvironment.getInstance().isSqlParserITEnabled();
}
- 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()));
- }
-
- private Collection<ExternalSQLParserTestParameter>
getTestParameters(final ExternalCaseSettings settings) {
- return new ExternalSQLParserTestParameterLoader(
- new
GitHubTestParameterLoadStrategy()).load(URI.create(settings.caseURL()),
URI.create(settings.resultURL()), settings.value(), settings.reportType());
- }
+ 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()));
}
+
+ 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
new file mode 100644
index 00000000000..ba67ba436e3
--- /dev/null
+++
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/loader/ExternalMySQLTestParameterLoader.java
@@ -0,0 +1,113 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+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.AbstractTestParameterLoader;
+import
org.apache.shardingsphere.test.loader.strategy.TestParameterLoadStrategy;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * External MySQL SQL parser test parameter loader.
+ */
+public final class ExternalMySQLTestParameterLoader extends
AbstractTestParameterLoader<ExternalSQLParserTestParameter> {
+
+ private static final int DELIMITER_COMMAND_LENGTH = "DELIMITER".length();
+
+ public ExternalMySQLTestParameterLoader(final TestParameterLoadStrategy
loadStrategy) {
+ super(loadStrategy);
+ }
+
+ /**
+ * Create external SQL parser 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 external SQL parser test parameters
+ */
+ public Collection<ExternalSQLParserTestParameter>
createTestParameters(final String sqlCaseFileName,
+
final List<String> sqlCaseFileContent,
+
final List<String> resultFileContent, final String databaseType, final String
reportType) {
+ Collection<ExternalSQLParserTestParameter> result = new LinkedList<>();
+ List<String> sqlLines = new ArrayList<>();
+ int sqlCaseIndex = 1;
+ String delimiter = ";";
+ for (String line : sqlCaseFileContent) {
+ String trimLine = line.trim();
+ if (trimLine.isEmpty() || 0 == sqlLines.size() &&
isComment(trimLine)) {
+ continue;
+ }
+ if (0 == sqlLines.size() &&
trimLine.toUpperCase().startsWith("DELIMITER")) {
+ delimiter = getNewDelimiter(trimLine, delimiter);
+ continue;
+ }
+ sqlLines.add(trimLine);
+ if (trimLine.endsWith(delimiter)) {
+ if (existInResultContent(resultFileContent, sqlLines)) {
+ String sqlCaseId = sqlCaseFileName + sqlCaseIndex++;
+ String sql = String.join("\n", sqlLines);
+ sql = sql.substring(0, sql.length() - delimiter.length());
+ result.add(new ExternalSQLParserTestParameter(sqlCaseId,
databaseType, sql, reportType));
+ }
+ sqlLines.clear();
+ }
+ }
+ return result;
+ }
+
+ private String getNewDelimiter(final String trimSql, final String
delimiter) {
+ String newDelimiter = trimSql
+ .substring(DELIMITER_COMMAND_LENGTH,
trimSql.endsWith(delimiter) ? trimSql.length() - delimiter.length() :
trimSql.length())
+ .trim();
+ if (newDelimiter.startsWith("\"") && newDelimiter.endsWith("\"") ||
newDelimiter.startsWith("'") && newDelimiter.endsWith("'")) {
+ newDelimiter = newDelimiter.substring(1, newDelimiter.length() -
1);
+ }
+ return newDelimiter.isEmpty() ? delimiter : newDelimiter;
+ }
+
+ private boolean isComment(final String statement) {
+ return statement.startsWith("#") || statement.startsWith("/") ||
statement.startsWith("--") || statement.startsWith(":") ||
statement.startsWith("\\");
+ }
+
+ private boolean existInResultContent(final List<String> resultLines, final
List<String> sqlLines) {
+ int nextLineIndex = findSQLNextLineIndex(resultLines, sqlLines);
+ return -1 != nextLineIndex && (nextLineIndex == resultLines.size() ||
!resultLines.get(nextLineIndex).contains("ERROR"));
+ }
+
+ private int findSQLNextLineIndex(final List<String> resultLines, final
List<String> sqlLines) {
+ int completedSQLIndex = 0;
+ for (int resultIndex = 0; resultIndex < resultLines.size();
resultIndex++) {
+ if (Objects.equals(sqlLines.get(completedSQLIndex),
resultLines.get(resultIndex).trim())) {
+ if (++completedSQLIndex == sqlLines.size()) {
+ return resultIndex + 1;
+ }
+ } else {
+ completedSQLIndex = 0;
+ }
+ }
+ return -1;
+ }
+}
diff --git
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/loader/ExternalSQLParserTestParameterLoader.java
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/loader/ExternalPostgreSQLTestParameterLoader.java
similarity index 79%
rename from
test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/loader/ExternalSQLParserTestParameterLoader.java
rename to
test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/loader/ExternalPostgreSQLTestParameterLoader.java
index 59be173c54d..20cd45de664 100644
---
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/loader/ExternalSQLParserTestParameterLoader.java
+++
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/loader/ExternalPostgreSQLTestParameterLoader.java
@@ -23,13 +23,14 @@ import
org.apache.shardingsphere.test.loader.strategy.TestParameterLoadStrategy;
import java.util.Collection;
import java.util.LinkedList;
+import java.util.List;
/**
- * External SQL parser test parameter loader.
+ * External PostgreSQL SQL parser test parameter loader.
*/
-public final class ExternalSQLParserTestParameterLoader extends
AbstractTestParameterLoader<ExternalSQLParserTestParameter> {
+public final class ExternalPostgreSQLTestParameterLoader extends
AbstractTestParameterLoader<ExternalSQLParserTestParameter> {
- public ExternalSQLParserTestParameterLoader(final
TestParameterLoadStrategy loadStrategy) {
+ public ExternalPostgreSQLTestParameterLoader(final
TestParameterLoadStrategy loadStrategy) {
super(loadStrategy);
}
@@ -44,22 +45,21 @@ public final class ExternalSQLParserTestParameterLoader
extends AbstractTestPara
* @return external SQL parser test parameters
*/
public Collection<ExternalSQLParserTestParameter>
createTestParameters(final String sqlCaseFileName,
-
final String sqlCaseFileContent, final String resultFileContent, final String
databaseType, final String reportType) {
+
final List<String> sqlCaseFileContent,
+
final List<String> resultFileContent, final String databaseType, final String
reportType) {
Collection<ExternalSQLParserTestParameter> result = new LinkedList<>();
- String[] rawCaseLines = sqlCaseFileContent.split("\n");
- String[] rawResultLines = resultFileContent.split("\n");
String completedSQL = "";
int sqlCaseEnum = 1;
int statementLines = 0;
int resultIndex = 0;
boolean inProcedure = false;
- for (String each : rawCaseLines) {
+ for (String each : sqlCaseFileContent) {
inProcedure = isInProcedure(inProcedure, each.trim());
completedSQL = getStatement(completedSQL, each.trim(),
inProcedure);
statementLines = completedSQL.isEmpty() ? 0 : statementLines + 1;
if (completedSQL.contains(";") && !inProcedure) {
- resultIndex = searchInResultContent(resultIndex,
rawResultLines, completedSQL, statementLines);
- if (resultIndex >= rawResultLines.length ||
!rawResultLines[resultIndex].contains("ERROR")) {
+ resultIndex = searchInResultContent(resultIndex,
resultFileContent, completedSQL, statementLines);
+ if (resultIndex >= resultFileContent.size() ||
!resultFileContent.get(resultIndex).contains("ERROR")) {
String sqlCaseId = sqlCaseFileName + sqlCaseEnum;
result.add(new ExternalSQLParserTestParameter(sqlCaseId,
databaseType, completedSQL, reportType));
sqlCaseEnum++;
@@ -86,12 +86,12 @@ public final class ExternalSQLParserTestParameterLoader
extends AbstractTestPara
return statement.startsWith("#") || statement.startsWith("/") ||
statement.startsWith("--") || statement.startsWith(":") ||
statement.startsWith("\\");
}
- private int searchInResultContent(final int resultIndex, final String[]
resultLines, final String completedSQL, final int statementLines) {
+ private int searchInResultContent(final int resultIndex, final
List<String> resultLines, final String completedSQL, final int statementLines) {
int index = resultIndex;
- while (index < resultLines.length &&
!completedSQL.startsWith(resultLines[index].trim())) {
+ while (index < resultLines.size() &&
!completedSQL.startsWith(resultLines.get(index).trim())) {
index++;
}
- if (index != resultLines.length) {
+ if (index != resultLines.size()) {
return index + statementLines;
}
return resultIndex;
diff --git
a/test/util/src/main/java/org/apache/shardingsphere/test/loader/AbstractTestParameterLoader.java
b/test/util/src/main/java/org/apache/shardingsphere/test/loader/AbstractTestParameterLoader.java
index 7cd4fc414a7..5ffed41772a 100644
---
a/test/util/src/main/java/org/apache/shardingsphere/test/loader/AbstractTestParameterLoader.java
+++
b/test/util/src/main/java/org/apache/shardingsphere/test/loader/AbstractTestParameterLoader.java
@@ -17,7 +17,9 @@
package org.apache.shardingsphere.test.loader;
+import com.google.common.collect.Lists;
import lombok.RequiredArgsConstructor;
+import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import
org.apache.shardingsphere.test.loader.strategy.TestParameterLoadStrategy;
import org.apache.shardingsphere.test.loader.summary.FileSummary;
@@ -28,8 +30,13 @@ import java.io.InputStreamReader;
import java.net.URI;
import java.util.Collection;
import java.util.LinkedList;
+import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
import java.util.stream.Collectors;
/**
@@ -41,6 +48,10 @@ import java.util.stream.Collectors;
@Slf4j
public abstract class AbstractTestParameterLoader<T> {
+ private static final int DEFAULT_DOWNLOAD_THREADS = 4;
+
+ private final ExecutorService executorService =
Executors.newFixedThreadPool(DEFAULT_DOWNLOAD_THREADS);
+
private final TestParameterLoadStrategy loadStrategy;
/**
@@ -52,19 +63,29 @@ public abstract class AbstractTestParameterLoader<T> {
* @param reportType report type
* @return loaded test parameters
*/
+ @SneakyThrows
public Collection<T> load(final URI sqlCaseURI, final URI resultURI, final
String databaseType, final String reportType) {
Collection<T> result = new LinkedList<>();
- Map<String, FileSummary> sqlCaseFileSummaries =
loadStrategy.loadSQLCaseFileSummaries(sqlCaseURI).stream().collect(Collectors.toMap(FileSummary::getFileName,
v -> v, (k, v) -> v));
- Map<String, FileSummary> resultFileSummaries =
loadStrategy.loadSQLCaseFileSummaries(resultURI).stream().collect(Collectors.toMap(FileSummary::getFileName,
v -> v, (k, v) -> v));
- for (Entry<String, FileSummary> each :
sqlCaseFileSummaries.entrySet()) {
+ Map<String, List<String>> sqlCaseFileContents =
downloadAllBySummary(sqlCaseURI);
+ Map<String, List<String>> resultFileContents =
downloadAllBySummary(resultURI);
+ for (Entry<String, List<String>> each :
sqlCaseFileContents.entrySet()) {
String fileName = each.getKey();
- String sqlCaseFileContent =
loadContent(URI.create(each.getValue().getAccessURI()));
- String resultFileContent =
resultFileSummaries.containsKey(fileName) ?
loadContent(URI.create(resultFileSummaries.get(fileName).getAccessURI())) : "";
+ List<String> sqlCaseFileContent = each.getValue();
+ List<String> resultFileContent =
resultFileContents.getOrDefault(fileName, Lists.newArrayList());
result.addAll(createTestParameters(fileName, sqlCaseFileContent,
resultFileContent, databaseType, reportType));
}
return result;
}
+ private Map<String, List<String>> downloadAllBySummary(final URI
sqlCaseURI) throws InterruptedException {
+ Map<String, List<String>> contents = new ConcurrentHashMap<>();
+ Collection<FileSummary> fileSummaries =
loadStrategy.loadSQLCaseFileSummaries(sqlCaseURI);
+ executorService.invokeAll(fileSummaries.stream()
+ .map(summary -> (Callable<Object>) () ->
contents.put(summary.getFileName(),
loadContent(URI.create(summary.getAccessURI()))))
+ .collect(Collectors.toList()));
+ return contents;
+ }
+
/**
* Create test parameters.
*
@@ -75,17 +96,17 @@ public abstract class AbstractTestParameterLoader<T> {
* @param reportType report type
* @return test parameters
*/
- public abstract Collection<T> createTestParameters(String sqlCaseFileName,
String sqlCaseFileContent,
- String
resultFileContent, String databaseType, String reportType);
+ public abstract Collection<T> createTestParameters(String sqlCaseFileName,
List<String> sqlCaseFileContent,
+ List<String>
resultFileContent, String databaseType, String reportType);
- private String loadContent(final URI uri) {
+ private List<String> loadContent(final URI uri) {
try (
InputStreamReader in = new
InputStreamReader(uri.toURL().openStream());
BufferedReader reader = new BufferedReader(in)) {
- return
reader.lines().collect(Collectors.joining(System.lineSeparator()));
+ return reader.lines().collect(Collectors.toList());
} catch (final IOException ex) {
log.warn("Load failed, reason is: ", ex);
- return "";
+ return Lists.newArrayList();
}
}
}
diff --git
a/test/util/src/main/java/org/apache/shardingsphere/test/loader/strategy/impl/GitHubTestParameterLoadStrategy.java
b/test/util/src/main/java/org/apache/shardingsphere/test/loader/strategy/impl/GitHubTestParameterLoadStrategy.java
index 666675e22db..bfae3981a07 100644
---
a/test/util/src/main/java/org/apache/shardingsphere/test/loader/strategy/impl/GitHubTestParameterLoadStrategy.java
+++
b/test/util/src/main/java/org/apache/shardingsphere/test/loader/strategy/impl/GitHubTestParameterLoadStrategy.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.test.loader.strategy.impl;
+import com.jayway.jsonpath.DocumentContext;
import com.jayway.jsonpath.JsonPath;
import lombok.extern.slf4j.Slf4j;
import
org.apache.shardingsphere.test.loader.strategy.TestParameterLoadStrategy;
@@ -45,11 +46,12 @@ public final class GitHubTestParameterLoadStrategy
implements TestParameterLoadS
return Collections.emptyList();
}
Collection<FileSummary> result = new LinkedList<>();
- List<String> fileNames = JsonPath.parse(content).read("$..name");
- List<String> folderTypes = JsonPath.parse(content).read("$..type");
- List<String> downloadURLs =
JsonPath.parse(content).read("$..download_url");
- List<String> htmlURLs = JsonPath.parse(content).read("$..html_url");
- int length = JsonPath.parse(content).read("$.length()");
+ DocumentContext documentContext = JsonPath.parse(content);
+ List<String> fileNames = documentContext.read("$..name");
+ List<String> folderTypes = documentContext.read("$..type");
+ List<String> downloadURLs = documentContext.read("$..download_url");
+ List<String> htmlURLs = documentContext.read("$..html_url");
+ int length = documentContext.read("$.length()");
for (int i = 0; i < length; i++) {
String fileName = fileNames.get(i).split("\\.")[0];
String folderType = folderTypes.get(i);