You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by su...@apache.org on 2022/11/13 07:11:23 UTC
[shardingsphere] branch master updated: Refactor SQLCaseLoadStrategy (#22132)
This is an automated email from the ASF dual-hosted git repository.
sunnianjun 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 e3b9227e9c8 Refactor SQLCaseLoadStrategy (#22132)
e3b9227e9c8 is described below
commit e3b9227e9c8a8ff3e651ce7dbe1d198b7037ebb0
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Sun Nov 13 15:11:17 2022 +0800
Refactor SQLCaseLoadStrategy (#22132)
* Refactor GitHubSQLCaseLoadStrategy
* Refactor SQLCaseLoadStrategy
---
...FileSummary.java => AssertableFileSummary.java} | 8 +++--
.../{SQLCaseFileSummary.java => FileSummary.java} | 4 +--
.../sql/parser/loader/SQLCaseLoadStrategy.java | 11 +-----
.../sql/parser/loader/SQLCaseLoader.java | 31 ++++++++--------
.../loader/impl/GitHubSQLCaseLoadStrategy.java | 42 +++++++++++-----------
.../loader/impl/LocalFileSQLCaseLoadStrategy.java | 11 ++----
6 files changed, 46 insertions(+), 61 deletions(-)
diff --git a/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/test/integration/sql/parser/loader/SQLCaseFileSummary.java b/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/test/integration/sql/parser/loader/AssertableFileSummary.java
similarity index 85%
copy from test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/test/integration/sql/parser/loader/SQLCaseFileSummary.java
copy to test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/test/integration/sql/parser/loader/AssertableFileSummary.java
index dbefefab780..17726f51ab5 100644
--- a/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/test/integration/sql/parser/loader/SQLCaseFileSummary.java
+++ b/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/test/integration/sql/parser/loader/AssertableFileSummary.java
@@ -21,13 +21,15 @@ import lombok.Getter;
import lombok.RequiredArgsConstructor;
/**
- * SQL case file summary.
+ * Assertable file summary.
*/
@RequiredArgsConstructor
@Getter
-public final class SQLCaseFileSummary {
+public final class AssertableFileSummary {
private final String fileName;
- private final String accessURL;
+ private final String sqlCaseFileAccessURL;
+
+ private final String resultFileAccessURL;
}
diff --git a/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/test/integration/sql/parser/loader/SQLCaseFileSummary.java b/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/test/integration/sql/parser/loader/FileSummary.java
similarity index 94%
rename from test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/test/integration/sql/parser/loader/SQLCaseFileSummary.java
rename to test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/test/integration/sql/parser/loader/FileSummary.java
index dbefefab780..d11de9776fe 100644
--- a/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/test/integration/sql/parser/loader/SQLCaseFileSummary.java
+++ b/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/test/integration/sql/parser/loader/FileSummary.java
@@ -21,11 +21,11 @@ import lombok.Getter;
import lombok.RequiredArgsConstructor;
/**
- * SQL case file summary.
+ * File summary.
*/
@RequiredArgsConstructor
@Getter
-public final class SQLCaseFileSummary {
+public final class FileSummary {
private final String fileName;
diff --git a/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/test/integration/sql/parser/loader/SQLCaseLoadStrategy.java b/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/test/integration/sql/parser/loader/SQLCaseLoadStrategy.java
index 96239b22843..fa0a9958584 100644
--- a/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/test/integration/sql/parser/loader/SQLCaseLoadStrategy.java
+++ b/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/test/integration/sql/parser/loader/SQLCaseLoadStrategy.java
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.test.integration.sql.parser.loader;
import java.net.URI;
import java.util.Collection;
-import java.util.Map;
/**
* SQL case load strategy.
@@ -32,13 +31,5 @@ public interface SQLCaseLoadStrategy {
* @param uri URL to be loaded
* @return loaded SQL file summaries
*/
- Collection<SQLCaseFileSummary> loadSQLCaseFileSummaries(URI uri);
-
- /**
- * Load SQL cases result.
- *
- * @param uri URL to be loaded
- * @return loaded SQL case results
- */
- Map<String, String> loadSQLCaseResults(URI uri);
+ Collection<FileSummary> loadSQLCaseFileSummaries(URI uri);
}
diff --git a/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/test/integration/sql/parser/loader/SQLCaseLoader.java b/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/test/integration/sql/parser/loader/SQLCaseLoader.java
index f4424e4fc58..5826be91d21 100644
--- a/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/test/integration/sql/parser/loader/SQLCaseLoader.java
+++ b/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/test/integration/sql/parser/loader/SQLCaseLoader.java
@@ -29,6 +29,7 @@ import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList;
import java.util.Map;
+import java.util.Map.Entry;
import java.util.stream.Collectors;
/**
@@ -44,22 +45,22 @@ public final class SQLCaseLoader {
* Load SQL cases.
*
* @param sqlCaseURI SQL case URI
- * @param sqlCaseResultURI SQL case result case URI
+ * @param resultURI result URI
*
- * @return Test cases from with strategy
+ * @return loaded SQL cases
*/
- public Collection<Object[]> load(final URI sqlCaseURI, final URI sqlCaseResultURI) {
+ public Collection<Object[]> load(final URI sqlCaseURI, final URI resultURI) {
if (!IntegrationTestEnvironment.getInstance().isSqlParserITEnabled()) {
return Collections.emptyList();
}
Collection<Object[]> result = new LinkedList<>();
- Collection<SQLCaseFileSummary> sqlCases = loadStrategy.loadSQLCaseFileSummaries(sqlCaseURI);
- Map<String, String> resultResponse = loadStrategy.loadSQLCaseResults(sqlCaseResultURI);
- for (SQLCaseFileSummary each : sqlCases) {
- String fileName = each.getFileName();
- String sqlCaseTestFileContent = loadContent(URI.create(each.getAccessURL()));
- String sqlCaseResultFileContent = resultResponse.containsKey(fileName) ? loadContent(URI.create(resultResponse.get(fileName))) : "";
- result.addAll(createSQLCases(fileName, sqlCaseTestFileContent, sqlCaseResultFileContent));
+ 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> entry : sqlCaseFileSummaries.entrySet()) {
+ String fileName = entry.getKey();
+ String sqlCaseFileContent = loadContent(URI.create(entry.getValue().getAccessURL()));
+ String resultFileContent = resultFileSummaries.containsKey(fileName) ? loadContent(URI.create(resultFileSummaries.get(fileName).getAccessURL())) : "";
+ result.addAll(createSQLCases(fileName, sqlCaseFileContent, resultFileContent));
}
if (result.isEmpty()) {
result.add(new Object[]{"", ""});
@@ -72,15 +73,15 @@ public final class SQLCaseLoader {
InputStreamReader in = new InputStreamReader(uri.toURL().openStream());
return new BufferedReader(in).lines().collect(Collectors.joining(System.lineSeparator()));
} catch (final IOException ex) {
- log.warn("Load SQL cases failed, reason is: ", ex);
+ log.warn("Load failed, reason is: ", ex);
return "";
}
}
- private Collection<Object[]> createSQLCases(final String sqlCaseFileName, final String sqlCaseFileContent, final String sqlCaseResultFileContent) {
+ private Collection<Object[]> createSQLCases(final String sqlCaseFileName, final String sqlCaseFileContent, final String resultFileContent) {
Collection<Object[]> result = new LinkedList<>();
String[] caseCaseLines = sqlCaseFileContent.split("\n");
- String[] caseCaseResultLines = sqlCaseResultFileContent.split("\n");
+ String[] resultLines = resultFileContent.split("\n");
String completedSQL = "";
int sqlCaseEnum = 1;
int statementLines = 0;
@@ -91,8 +92,8 @@ public final class SQLCaseLoader {
completedSQL = getStatement(completedSQL, each.trim(), inProcedure);
statementLines = completedSQL.isEmpty() ? 0 : statementLines + 1;
if (completedSQL.contains(";") && !inProcedure) {
- resultIndex = searchResult(resultIndex, caseCaseResultLines, completedSQL, statementLines);
- if (resultIndex >= caseCaseResultLines.length || !caseCaseResultLines[resultIndex].contains("ERROR")) {
+ resultIndex = searchResult(resultIndex, resultLines, completedSQL, statementLines);
+ if (resultIndex >= resultLines.length || !resultLines[resultIndex].contains("ERROR")) {
String sqlCaseId = sqlCaseFileName + sqlCaseEnum;
result.add(new Object[]{sqlCaseId, completedSQL});
sqlCaseEnum++;
diff --git a/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/test/integration/sql/parser/loader/impl/GitHubSQLCaseLoadStrategy.java b/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/test/integration/sql/parser/loader/impl/GitHubSQLCaseLoadStrategy.java
index 6c1bbcc4bc9..a943ab01abb 100644
--- a/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/test/integration/sql/parser/loader/impl/GitHubSQLCaseLoadStrategy.java
+++ b/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/test/integration/sql/parser/loader/impl/GitHubSQLCaseLoadStrategy.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.test.integration.sql.parser.loader.impl;
import com.jayway.jsonpath.JsonPath;
import lombok.extern.slf4j.Slf4j;
-import org.apache.shardingsphere.test.integration.sql.parser.loader.SQLCaseFileSummary;
+import org.apache.shardingsphere.test.integration.sql.parser.loader.FileSummary;
import org.apache.shardingsphere.test.integration.sql.parser.loader.SQLCaseLoadStrategy;
import java.io.BufferedReader;
@@ -30,7 +30,6 @@ import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
-import java.util.Map;
import java.util.stream.Collectors;
/**
@@ -40,22 +39,26 @@ import java.util.stream.Collectors;
public final class GitHubSQLCaseLoadStrategy implements SQLCaseLoadStrategy {
@Override
- public Collection<SQLCaseFileSummary> loadSQLCaseFileSummaries(final URI uri) {
- String caseContent = loadContent(getGitHubApiUri(uri));
- if (caseContent.isEmpty()) {
+ public Collection<FileSummary> loadSQLCaseFileSummaries(final URI uri) {
+ String content = loadContent(getGitHubApiUri(uri));
+ if (content.isEmpty()) {
return Collections.emptyList();
}
- Collection<SQLCaseFileSummary> result = new LinkedList<>();
- List<String> fileName = JsonPath.parse(caseContent).read("$..name");
- List<String> downloadURL = JsonPath.parse(caseContent).read("$..download_url");
- List<String> casesHtmlURL = JsonPath.parse(caseContent).read("$..html_url");
- List<String> casesType = JsonPath.parse(caseContent).read("$..type");
- int bound = JsonPath.parse(caseContent).read("$.length()");
- for (int each = 0; each < bound; each++) {
- if ("file".equals(casesType.get(each))) {
- result.add(new SQLCaseFileSummary(fileName.get(each).split("\\.")[0], downloadURL.get(each)));
- } else if ("dir".equals(casesType.get(each))) {
- result.addAll(loadSQLCaseFileSummaries(URI.create(casesHtmlURL.get(each))));
+ 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()");
+ for (int i = 0; i < length; i++) {
+ String fileName = fileNames.get(i).split("\\.")[0];
+ String folderType = folderTypes.get(i);
+ String downloadURL = downloadURLs.get(i);
+ String htmlURL = htmlURLs.get(i);
+ if ("file".equals(folderType)) {
+ result.add(new FileSummary(fileName, downloadURL));
+ } else if ("dir".equals(folderType)) {
+ result.addAll(loadSQLCaseFileSummaries(URI.create(htmlURL)));
}
}
return result;
@@ -74,13 +77,8 @@ public final class GitHubSQLCaseLoadStrategy implements SQLCaseLoadStrategy {
InputStreamReader in = new InputStreamReader(casesURI.toURL().openStream());
return new BufferedReader(in).lines().collect(Collectors.joining(System.lineSeparator()));
} catch (final IOException ex) {
- log.warn("Load SQL cases failed, reason is: ", ex);
+ log.warn("Load failed, reason is: ", ex);
return "";
}
}
-
- @Override
- public Map<String, String> loadSQLCaseResults(final URI uri) {
- return loadSQLCaseFileSummaries(uri).stream().collect(Collectors.toMap(SQLCaseFileSummary::getFileName, SQLCaseFileSummary::getAccessURL, (a, b) -> b));
- }
}
diff --git a/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/test/integration/sql/parser/loader/impl/LocalFileSQLCaseLoadStrategy.java b/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/test/integration/sql/parser/loader/impl/LocalFileSQLCaseLoadStrategy.java
index 8d65e7d41c8..657e28c9060 100644
--- a/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/test/integration/sql/parser/loader/impl/LocalFileSQLCaseLoadStrategy.java
+++ b/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/test/integration/sql/parser/loader/impl/LocalFileSQLCaseLoadStrategy.java
@@ -17,13 +17,12 @@
package org.apache.shardingsphere.test.integration.sql.parser.loader.impl;
-import org.apache.shardingsphere.test.integration.sql.parser.loader.SQLCaseFileSummary;
+import org.apache.shardingsphere.test.integration.sql.parser.loader.FileSummary;
import org.apache.shardingsphere.test.integration.sql.parser.loader.SQLCaseLoadStrategy;
import java.net.URI;
import java.util.Collection;
import java.util.Collections;
-import java.util.Map;
/**
* SQL case loader with local file.
@@ -31,14 +30,8 @@ import java.util.Map;
public final class LocalFileSQLCaseLoadStrategy implements SQLCaseLoadStrategy {
@Override
- public Collection<SQLCaseFileSummary> loadSQLCaseFileSummaries(final URI uri) {
+ public Collection<FileSummary> loadSQLCaseFileSummaries(final URI uri) {
// TODO
return Collections.emptyList();
}
-
- @Override
- public Map<String, String> loadSQLCaseResults(final URI uri) {
- // TODO
- return Collections.emptyMap();
- }
}