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/08 06:59:46 UTC
[shardingsphere] branch master updated: Restructure DynamicLoadingSQLParserParameterizedTest with URI (#22005)
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 00d866d75c9 Restructure DynamicLoadingSQLParserParameterizedTest with URI (#22005)
00d866d75c9 is described below
commit 00d866d75c9045ca0a0b1049ed06950c405a7cf6
Author: Junfeng <71...@qq.com>
AuthorDate: Tue Nov 8 14:59:35 2022 +0800
Restructure DynamicLoadingSQLParserParameterizedTest with URI (#22005)
* feat: restructure DynamicLoadingSQLParserParameterizedTest
* feat: modify with URI
Co-authored-by: Jacob953 <ja...@csu.edu.cn>
---
.../DynamicLoadingMySQLParserParameterizedIT.java | 3 +-
...amicLoadingPostgreSQLParserParameterizedIT.java | 6 +--
.../DynamicLoadingSQLParserParameterizedTest.java | 60 +++++++++++++---------
3 files changed, 40 insertions(+), 29 deletions(-)
diff --git a/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/sql/parser/mysql/DynamicLoadingMySQLParserParameterizedIT.java b/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/sql/parser/mysql/DynamicLoadingMySQLParserParameterizedIT.java
index 0928b3554a9..5a081588d27 100644
--- a/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/sql/parser/mysql/DynamicLoadingMySQLParserParameterizedIT.java
+++ b/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/sql/parser/mysql/DynamicLoadingMySQLParserParameterizedIT.java
@@ -23,6 +23,7 @@ import org.apache.shardingsphere.test.sql.parser.parameterized.engine.DynamicLoa
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized.Parameters;
+import java.net.URI;
import java.util.Collection;
import java.util.Collections;
@@ -41,7 +42,7 @@ public final class DynamicLoadingMySQLParserParameterizedIT extends DynamicLoadi
@Parameters(name = "{0} (MySQL) -> {1}")
public static Collection<Object[]> getTestParameters() {
if (IntegrationTestEnvironment.getInstance().isSqlParserITEnabled()) {
- return DynamicLoadingSQLParserParameterizedTest.getTestParameters("https://github.com/mysql/mysql-server/tree/8.0/mysql-test/t");
+ return DynamicLoadingSQLParserParameterizedTest.getTestParameters("https://api.github.com/repos/", URI.create("https://github.com/mysql/mysql-server/tree/8.0/mysql-test/t"));
}
return Collections.emptyList();
}
diff --git a/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/sql/parser/postgresql/DynamicLoadingPostgreSQLParserParameterizedIT.java b/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/sql/parser/postgresql/DynamicLoadingPostgreSQLParserParameterizedIT.java
index a3345a8587d..fc79e0b57fd 100644
--- a/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/sql/parser/postgresql/DynamicLoadingPostgreSQLParserParameterizedIT.java
+++ b/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/sql/parser/postgresql/DynamicLoadingPostgreSQLParserParameterizedIT.java
@@ -23,7 +23,7 @@ import org.apache.shardingsphere.test.sql.parser.parameterized.engine.DynamicLoa
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized.Parameters;
-import java.io.IOException;
+import java.net.URI;
import java.util.Collection;
import java.util.Collections;
@@ -40,9 +40,9 @@ public final class DynamicLoadingPostgreSQLParserParameterizedIT extends Dynamic
* @return Test cases from GitHub.
**/
@Parameters(name = "{0} (PostgreSQL) -> {1}")
- public static Collection<Object[]> getTestParameters() throws IOException {
+ public static Collection<Object[]> getTestParameters() {
if (IntegrationTestEnvironment.getInstance().isSqlParserITEnabled()) {
- return DynamicLoadingSQLParserParameterizedTest.getTestParameters("https://github.com/postgres/postgres/tree/master/src/test/regress/sql");
+ return DynamicLoadingSQLParserParameterizedTest.getTestParameters("https://api.github.com/repos/", URI.create("https://github.com/postgres/postgres/tree/master/src/test/regress/sql"));
}
return Collections.emptyList();
}
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/engine/DynamicLoadingSQLParserParameterizedTest.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/engine/DynamicLoadingSQLParserParameterizedTest.java
index 6454edf2aa6..57967a928df 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/engine/DynamicLoadingSQLParserParameterizedTest.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/engine/DynamicLoadingSQLParserParameterizedTest.java
@@ -33,7 +33,7 @@ import org.junit.Test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
-import java.net.URL;
+import java.net.URI;
import java.util.Collection;
import java.util.LinkedList;
import java.util.Map;
@@ -52,45 +52,57 @@ public abstract class DynamicLoadingSQLParserParameterizedTest {
private final String databaseType;
- protected static Collection<Object[]> getTestParameters(final String sqlCaseURL) {
+ protected static Collection<Object[]> getTestParameters(final String sqlCaseApi, final URI sqlCaseURI) {
Collection<Object[]> result = new LinkedList<>();
- for (Map<String, String> each : getResponse(sqlCaseURL)) {
- result.addAll(getSQLCases(each));
+ if (sqlCaseApi.isEmpty()) {
+ result.addAll(getSQLCases("localFile", getContent(sqlCaseURI).split("\n")));
+ } else {
+ for (Map<String, String> each : getResponse(sqlCaseApi, sqlCaseURI)) {
+ String sqlCaseFileName = each.get("name").split("\\.")[0];
+ String[] sqlCaseFileContent = getContent(URI.create(each.get("download_url"))).split("\n");
+ result.addAll(getSQLCases(sqlCaseFileName, sqlCaseFileContent));
+ }
+ }
+ if (result.isEmpty()) {
+ result.add(new Object[]{null, null});
}
return result;
}
- private static Collection<Map<String, String>> getResponse(final String sqlCaseURL) {
+ private static Collection<Map<String, String>> getResponse(final String sqlCaseApi, final URI sqlCaseURI) {
Collection<Map<String, String>> result = new LinkedList<>();
- String[] patches = sqlCaseURL.split("/", 8);
- String casesOwner = patches[3];
- String casesRepo = patches[4];
- String casesDirectory = patches[7];
- String casesGitHubApiURL = "https://api.github.com/repos/" + casesOwner + "/" + casesRepo + "/contents/" + casesDirectory;
- String casesGitHubApiContent = getContent(casesGitHubApiURL);
- if (casesGitHubApiContent.isEmpty()) {
- result.add(ImmutableMap.of("name", "null", "download_url", "null"));
+ URI casesURI = getApiURL(sqlCaseApi, sqlCaseURI);
+ String caseContent = getContent(casesURI);
+ if (caseContent.isEmpty()) {
return result;
}
- List<String> casesName = JsonPath.parse(casesGitHubApiContent).read("$..name");
- List<String> casesDownloadURL = JsonPath.parse(casesGitHubApiContent).read("$..download_url");
- List<String> casesHtmlURL = JsonPath.parse(casesGitHubApiContent).read("$..html_url");
- IntStream.range(0, JsonPath.parse(casesGitHubApiContent).read("$.length()"))
+ List<String> casesName = JsonPath.parse(caseContent).read("$..name");
+ List<String> casesDownloadURL = JsonPath.parse(caseContent).read("$..download_url");
+ List<String> casesHtmlURL = JsonPath.parse(caseContent).read("$..html_url");
+ IntStream.range(0, JsonPath.parse(caseContent).read("$.length()"))
.forEach(each -> {
String eachName = casesName.get(each);
if (eachName.endsWith(".sql") || eachName.endsWith(".test")) {
result.add(ImmutableMap.of("name", eachName, "download_url", casesDownloadURL.get(each)));
} else if (!eachName.contains(".")) {
- result.addAll(getResponse(casesHtmlURL.get(each)));
+ result.addAll(getResponse(sqlCaseApi, URI.create(casesHtmlURL.get(each))));
}
});
return result;
}
- private static String getContent(final String url) {
+ private static URI getApiURL(final String sqlCaseApi, final URI sqlCaseURI) {
+ String[] patches = sqlCaseURI.toString().split("/", 8);
+ String casesOwner = patches[3];
+ String casesRepo = patches[4];
+ String casesDirectory = patches[7];
+ return URI.create(sqlCaseApi + casesOwner + "/" + casesRepo + "/contents/" + casesDirectory);
+ }
+
+ private static String getContent(final URI casesURI) {
String result = "";
try {
- InputStreamReader in = new InputStreamReader(new URL(url).openStream());
+ InputStreamReader in = new InputStreamReader(casesURI.toURL().openStream());
result = new BufferedReader(in).lines().collect(Collectors.joining(System.lineSeparator()));
} catch (IOException ingore) {
log.warn("Error: GitHub API rate limit exceeded");
@@ -98,14 +110,12 @@ public abstract class DynamicLoadingSQLParserParameterizedTest {
return result;
}
- private static Collection<Object[]> getSQLCases(final Map<String, String> elements) {
+ private static Collection<Object[]> getSQLCases(final String sqlCaseFileName, final String[] sqlCaseFileContent) {
Collection<Object[]> result = new LinkedList<>();
- String sqlCaseFileName = elements.get("name");
- String[] lines = getContent(elements.get("download_url")).split("\n");
int sqlCaseEnum = 1;
- for (String each : lines) {
+ for (String each : sqlCaseFileContent) {
if (!each.isEmpty() && Character.isLetter(each.charAt(0)) && each.charAt(each.length() - 1) == ';') {
- String sqlCaseId = sqlCaseFileName.split("\\.")[0] + sqlCaseEnum;
+ String sqlCaseId = sqlCaseFileName + sqlCaseEnum;
result.add(new Object[]{sqlCaseId, each});
sqlCaseEnum++;
}