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