You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2022/11/05 16:06:38 UTC
[shardingsphere] branch master updated: Add openGauss for DynamicLoadingSQLParserParameterizedTest (#21969)
This is an automated email from the ASF dual-hosted git repository.
zhangliang 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 fbc143b7c6c Add openGauss for DynamicLoadingSQLParserParameterizedTest (#21969)
fbc143b7c6c is described below
commit fbc143b7c6c97c4252921d7a148772e2bba0f04a
Author: Junfeng <71...@qq.com>
AuthorDate: Sun Nov 6 00:06:27 2022 +0800
Add openGauss for DynamicLoadingSQLParserParameterizedTest (#21969)
* feat: add json-path
* feat: remove duplicate cases
* feat: using json-path for read response
* fix: modify code
* fix: rename casesGitHubApoContent to casesGitHubApiContent
* fix: add test scope to json-path
* fix: update unsupported.xml
* fix: remove z-pre tag
* fix: recovery DynamicLoadingSQLParserParameterizedTest.java
* fix: move json-path from root to test/parser
* fix: rm blank line
* feat: use log.warn && catch 403 && recurse directory of url
* fix: modify
* feat: add end line
* feat: add DynamicLoadingOpenGaussParserParameterizedTest
* fix: correct name
* fix: abandon test when IOException
* fix: return null-valued params when rate limited
* fix: modify
* feat: add logback.xml
* fix: change root to error & change logger to warn
* fix: change root to info & change additivity to true
* fix: add end line
Co-authored-by: Jacob953 <ja...@csu.edu.cn>
---
...DynamicLoadingMySQLParserParameterizedTest.java | 4 +--
...icLoadingOpenGaussParserParameterizedTest.java} | 16 +++++-----
...icLoadingPostgreSQLParserParameterizedTest.java | 4 +--
.../DynamicLoadingSQLParserParameterizedTest.java | 36 +++++++++++++++++-----
test/parser/src/main/resources/logback.xml | 33 ++++++++++++++++++++
5 files changed, 70 insertions(+), 23 deletions(-)
diff --git a/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/sql/parser/mysql/DynamicLoadingMySQLParserParameterizedTest.java b/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/sql/parser/mysql/DynamicLoadingMySQLParserParameterizedTest.java
index 4034fb003c3..56fdd499761 100644
--- a/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/sql/parser/mysql/DynamicLoadingMySQLParserParameterizedTest.java
+++ b/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/sql/parser/mysql/DynamicLoadingMySQLParserParameterizedTest.java
@@ -17,7 +17,6 @@
package org.apache.shardingsphere.sql.parser.mysql;
-import java.io.IOException;
import java.util.Collection;
import java.util.Collections;
@@ -32,10 +31,9 @@ public final class DynamicLoadingMySQLParserParameterizedTest {
* Get test parameters.
*
* @return Test cases from github.
- * @throws IOException IOException
*/
// @Parameters(name = "{0} (MySQL) -> {1}")
- public static Collection<Object[]> getTestParameters() throws IOException {
+ public static Collection<Object[]> getTestParameters() {
return Collections.emptyList();
// return DynamicLoadingSQLParserParameterizedTest.getTestParameters("https://github.com/mysql/mysql-server/tree/8.0/mysql-test/t");
}
diff --git a/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/sql/parser/mysql/DynamicLoadingMySQLParserParameterizedTest.java b/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/sql/parser/opengauss/DynamicLoadingOpenGaussParserParameterizedTest.java
similarity index 67%
copy from test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/sql/parser/mysql/DynamicLoadingMySQLParserParameterizedTest.java
copy to test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/sql/parser/opengauss/DynamicLoadingOpenGaussParserParameterizedTest.java
index 4034fb003c3..b57f99f5db1 100644
--- a/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/sql/parser/mysql/DynamicLoadingMySQLParserParameterizedTest.java
+++ b/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/sql/parser/opengauss/DynamicLoadingOpenGaussParserParameterizedTest.java
@@ -15,28 +15,26 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.sql.parser.mysql;
+package org.apache.shardingsphere.sql.parser.opengauss;
-import java.io.IOException;
import java.util.Collection;
import java.util.Collections;
//@RunWith(ShardingSphereParallelTestParameterized.class)
-public final class DynamicLoadingMySQLParserParameterizedTest {
+public final class DynamicLoadingOpenGaussParserParameterizedTest {
- // public DynamicLoadingMySQLParserParameterizedTest(final String sqlCaseId, final String sqlCaseValue) {
- // super(sqlCaseId, sqlCaseValue, "MySQL");
+ // public DynamicLoadingOpenGaussParserParameterizedTest(final String sqlCaseId, final String sqlCaseValue) {
+ // super(sqlCaseId, sqlCaseValue, "openGauss");
// }
/**
* Get test parameters.
*
* @return Test cases from github.
- * @throws IOException IOException
*/
- // @Parameters(name = "{0} (MySQL) -> {1}")
- public static Collection<Object[]> getTestParameters() throws IOException {
+ // @Parameters(name = "{0} (openGauss) -> {1}")
+ public static Collection<Object[]> getTestParameters() {
return Collections.emptyList();
- // return DynamicLoadingSQLParserParameterizedTest.getTestParameters("https://github.com/mysql/mysql-server/tree/8.0/mysql-test/t");
+ // return DynamicLoadingSQLParserParameterizedTest.getTestParameters("https://github.com/opengauss-mirror/Yat/tree/master/openGaussBase/testcase");
}
}
diff --git a/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/sql/parser/postgresql/DynamicLoadingPostgreSQLParserParameterizedTest.java b/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/sql/parser/postgresql/DynamicLoadingPostgreSQLParserParameterizedTest.java
index ef9586d5299..a1ba806e09c 100644
--- a/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/sql/parser/postgresql/DynamicLoadingPostgreSQLParserParameterizedTest.java
+++ b/test/integration-test/sql-parser/src/test/java/org/apache/shardingsphere/sql/parser/postgresql/DynamicLoadingPostgreSQLParserParameterizedTest.java
@@ -17,7 +17,6 @@
package org.apache.shardingsphere.sql.parser.postgresql;
-import java.io.IOException;
import java.util.Collection;
import java.util.Collections;
@@ -32,10 +31,9 @@ public final class DynamicLoadingPostgreSQLParserParameterizedTest {
* Get test parameters.
*
* @return Test cases from github.
- * @throws IOException IOException
**/
// @Parameters(name = "{0} (PostgreSQL) -> {1}")
- public static Collection<Object[]> getTestParameters() throws IOException {
+ public static Collection<Object[]> getTestParameters() {
return Collections.emptyList();
// return DynamicLoadingSQLParserParameterizedTest.getTestParameters("https://github.com/postgres/postgres/tree/master/src/test/regress/sql");
}
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 33ac95708c8..6454edf2aa6 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
@@ -20,6 +20,7 @@ package org.apache.shardingsphere.test.sql.parser.parameterized.engine;
import com.google.common.collect.ImmutableMap;
import com.jayway.jsonpath.JsonPath;
import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
import org.apache.shardingsphere.sql.parser.api.CacheOption;
import org.apache.shardingsphere.sql.parser.api.SQLParserEngine;
import org.apache.shardingsphere.sql.parser.api.SQLVisitorEngine;
@@ -41,6 +42,7 @@ import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
+@Slf4j
@RequiredArgsConstructor
public abstract class DynamicLoadingSQLParserParameterizedTest {
@@ -50,7 +52,7 @@ public abstract class DynamicLoadingSQLParserParameterizedTest {
private final String databaseType;
- protected static Collection<Object[]> getTestParameters(final String sqlCaseURL) throws IOException {
+ protected static Collection<Object[]> getTestParameters(final String sqlCaseURL) {
Collection<Object[]> result = new LinkedList<>();
for (Map<String, String> each : getResponse(sqlCaseURL)) {
result.addAll(getSQLCases(each));
@@ -58,7 +60,7 @@ public abstract class DynamicLoadingSQLParserParameterizedTest {
return result;
}
- private static Collection<Map<String, String>> getResponse(final String sqlCaseURL) throws IOException {
+ private static Collection<Map<String, String>> getResponse(final String sqlCaseURL) {
Collection<Map<String, String>> result = new LinkedList<>();
String[] patches = sqlCaseURL.split("/", 8);
String casesOwner = patches[3];
@@ -66,19 +68,37 @@ public abstract class DynamicLoadingSQLParserParameterizedTest {
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"));
+ 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()"))
- .forEach(each -> result.add(ImmutableMap.of("name", casesName.get(each), "download_url", casesDownloadURL.get(each))));
+ .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)));
+ }
+ });
return result;
}
- private static String getContent(final String url) throws IOException {
- InputStreamReader in = new InputStreamReader(new URL(url).openStream());
- return new BufferedReader(in).lines().collect(Collectors.joining(System.lineSeparator()));
+ private static String getContent(final String url) {
+ String result = "";
+ try {
+ InputStreamReader in = new InputStreamReader(new URL(url).openStream());
+ result = new BufferedReader(in).lines().collect(Collectors.joining(System.lineSeparator()));
+ } catch (IOException ingore) {
+ log.warn("Error: GitHub API rate limit exceeded");
+ }
+ return result;
}
- private static Collection<Object[]> getSQLCases(final Map<String, String> elements) throws IOException {
+ private static Collection<Object[]> getSQLCases(final Map<String, String> elements) {
Collection<Object[]> result = new LinkedList<>();
String sqlCaseFileName = elements.get("name");
String[] lines = getContent(elements.get("download_url")).split("\n");
@@ -100,7 +120,7 @@ public abstract class DynamicLoadingSQLParserParameterizedTest {
ParseASTNode parseASTNode = new SQLParserEngine(databaseType, new CacheOption(128, 1024L)).parse(sql, false);
new SQLVisitorEngine(databaseType, "STATEMENT", true, new Properties()).visit(parseASTNode);
} catch (final SQLParsingException | ClassCastException | NullPointerException | SQLASTVisitorException | NumberFormatException | StringIndexOutOfBoundsException ignore) {
- System.out.println("ParserError: " + sqlCaseId + " value: " + sql + " db-type: " + databaseType);
+ log.warn("ParserError: " + sqlCaseId + " value: " + sql + " db-type: " + databaseType);
}
}
}
diff --git a/test/parser/src/main/resources/logback.xml b/test/parser/src/main/resources/logback.xml
new file mode 100644
index 00000000000..b9a61330834
--- /dev/null
+++ b/test/parser/src/main/resources/logback.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<!--
+ ~ 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.
+ -->
+
+<configuration>
+ <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder>
+ <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n</pattern>
+ </encoder>
+ </appender>
+ <logger name="org.apache.shardingsphere" level="warn" additivity="true">
+ <appender-ref ref="console" />
+ </logger>
+
+ <root>
+ <level value="info" />
+ <appender-ref ref="console" />
+ </root>
+</configuration>