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 f385ccbb872 Parameterize SQL parse/route advice tests (#37690)
f385ccbb872 is described below
commit f385ccbb872333f8b8e35845713b0fc456c6a6ab
Author: Liang Zhang <[email protected]>
AuthorDate: Thu Jan 8 19:06:57 2026 +0800
Parameterize SQL parse/route advice tests (#37690)
* Parameterize SQL parse/route advice tests
* Parameterize SQL parse/route advice tests
* Parameterize SQL parse/route advice tests
---
.../core/advice/SQLParseCountAdviceTest.java | 85 ++++++----------------
.../core/advice/SQLRouteCountAdviceTest.java | 58 ++++++---------
2 files changed, 47 insertions(+), 96 deletions(-)
diff --git
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLParseCountAdviceTest.java
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLParseCountAdviceTest.java
index 777d8efacbf..e909a591f0f 100644
---
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLParseCountAdviceTest.java
+++
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLParseCountAdviceTest.java
@@ -39,9 +39,12 @@ import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dml.Up
import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.CommitStatement;
import
org.apache.shardingsphere.sql.parser.statement.mysql.dal.show.database.MySQLShowDatabasesStatement;
import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
import java.util.Collections;
+import java.util.stream.Stream;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
@@ -56,68 +59,26 @@ class SQLParseCountAdviceTest {
((MetricsCollectorFixture) MetricsCollectorRegistry.get(config,
"FIXTURE")).reset();
}
- @Test
- void assertParseInsertSQL() {
- assertParse(mock(InsertStatement.class), "INSERT=1");
- }
-
- @Test
- void assertParseUpdateSQL() {
- assertParse(mock(UpdateStatement.class), "UPDATE=1");
- }
-
- @Test
- void assertParseDeleteSQL() {
- assertParse(mock(DeleteStatement.class), "DELETE=1");
- }
-
- @Test
- void assertParseSelectSQL() {
- assertParse(mock(SelectStatement.class), "SELECT=1");
- }
-
- @Test
- void assertParseDDL() {
- assertParse(mock(CreateDatabaseStatement.class), "DDL=1");
- }
-
- @Test
- void assertParseDCL() {
- assertParse(mock(CreateUserStatement.class), "DCL=1");
- }
-
- @Test
- void assertParseDAL() {
- assertParse(mock(MySQLShowDatabasesStatement.class), "DAL=1");
- }
-
- @Test
- void assertParseTCL() {
- assertParse(mock(CommitStatement.class), "TCL=1");
- }
-
- @Test
- void assertParseRQL() {
- assertParse(new ShowStorageUnitsStatement(new FromDatabaseSegment(0,
new DatabaseSegment(0, 0, null)), null), "RQL=1");
- }
-
- @Test
- void assertParseRDL() {
- assertParse(new RegisterStorageUnitStatement(false,
Collections.emptyList(), Collections.emptySet()), "RDL=1");
- }
-
- @Test
- void assertParseRAL() {
- assertParse(new ShowMigrationListStatement(), "RAL=1");
- }
-
- @Test
- void assertParseRUL() {
- assertParse(new ParseStatement("SELECT * FROM tbl"), "RUL=1");
- }
-
- private void assertParse(final SQLStatement sqlStatement, final String
expected) {
+ @ParameterizedTest(name = "{index}: type={0}")
+ @MethodSource("sqlStatements")
+ void assertParseSQL(final String type, final SQLStatement sqlStatement,
final String expected) {
new SQLParseCountAdvice().afterMethod(new TargetAdviceObjectFixture(),
mock(TargetAdviceMethod.class), new Object[]{}, sqlStatement, "FIXTURE");
assertThat(MetricsCollectorRegistry.get(config, "FIXTURE").toString(),
is(expected));
}
+
+ private static Stream<Arguments> sqlStatements() {
+ return Stream.of(
+ Arguments.of("INSERT", mock(InsertStatement.class),
"INSERT=1"),
+ Arguments.of("UPDATE", mock(UpdateStatement.class),
"UPDATE=1"),
+ Arguments.of("DELETE", mock(DeleteStatement.class),
"DELETE=1"),
+ Arguments.of("SELECT", mock(SelectStatement.class),
"SELECT=1"),
+ Arguments.of("DDL", mock(CreateDatabaseStatement.class),
"DDL=1"),
+ Arguments.of("DCL", mock(CreateUserStatement.class), "DCL=1"),
+ Arguments.of("DAL", mock(MySQLShowDatabasesStatement.class),
"DAL=1"),
+ Arguments.of("TCL", mock(CommitStatement.class), "TCL=1"),
+ Arguments.of("RQL", new ShowStorageUnitsStatement(new
FromDatabaseSegment(0, new DatabaseSegment(0, 0, null)), null), "RQL=1"),
+ Arguments.of("RDL", new RegisterStorageUnitStatement(false,
Collections.emptyList(), Collections.emptySet()), "RDL=1"),
+ Arguments.of("RAL", new ShowMigrationListStatement(), "RAL=1"),
+ Arguments.of("RUL", new ParseStatement("SELECT * FROM tbl"),
"RUL=1"));
+ }
}
diff --git
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLRouteCountAdviceTest.java
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLRouteCountAdviceTest.java
index 5a72434faec..90d5a904e72 100644
---
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLRouteCountAdviceTest.java
+++
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLRouteCountAdviceTest.java
@@ -30,15 +30,19 @@ import
org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.session.connection.ConnectionContext;
import org.apache.shardingsphere.infra.session.query.QueryContext;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dml.DeleteStatement;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dml.InsertStatement;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dml.SelectStatement;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dml.UpdateStatement;
import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
import java.util.Collections;
import java.util.Optional;
+import java.util.stream.Stream;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
@@ -47,53 +51,39 @@ import static org.mockito.Mockito.when;
class SQLRouteCountAdviceTest {
+ private static final DatabaseType DATABASE_TYPE =
TypedSPILoader.getService(DatabaseType.class, "FIXTURE");
+
private final MetricConfiguration config = new
MetricConfiguration("routed_sql_total", MetricCollectorType.COUNTER, null,
Collections.singletonList("type"), Collections.emptyMap());
private final SQLRouteCountAdvice advice = new SQLRouteCountAdvice();
- private final DatabaseType databaseType =
TypedSPILoader.getService(DatabaseType.class, "FIXTURE");
-
@AfterEach
void reset() {
((MetricsCollectorFixture) MetricsCollectorRegistry.get(config,
"FIXTURE")).reset();
}
- @Test
- void assertInsertRoute() {
- QueryContext queryContext = new QueryContext(new
CommonSQLStatementContext(
- new InsertStatement(databaseType)), "",
Collections.emptyList(), new HintValueContext(), mockConnectionContext(),
mock(ShardingSphereMetaData.class));
- assertRoute(queryContext, "INSERT=1");
- }
-
- private ConnectionContext mockConnectionContext() {
- ConnectionContext result = mock(ConnectionContext.class);
-
when(result.getCurrentDatabaseName()).thenReturn(Optional.of("foo_db"));
- return result;
- }
-
- @Test
- void assertUpdateRoute() {
- QueryContext queryContext = new QueryContext(new
CommonSQLStatementContext(
- new UpdateStatement(databaseType)), "",
Collections.emptyList(), new HintValueContext(), mockConnectionContext(),
mock(ShardingSphereMetaData.class));
- assertRoute(queryContext, "UPDATE=1");
+ @ParameterizedTest(name = "[{index}] type={0}")
+ @MethodSource("routeContexts")
+ void assertRoute(final String type, final QueryContext queryContext) {
+ advice.beforeMethod(new TargetAdviceObjectFixture(),
mock(TargetAdviceMethod.class), new Object[]{queryContext, new
ConnectionContext(Collections::emptySet)}, "FIXTURE");
+ assertThat(MetricsCollectorRegistry.get(config, "FIXTURE").toString(),
is(String.format("%s=1", type)));
}
- @Test
- void assertDeleteRoute() {
- QueryContext queryContext = new QueryContext(new
CommonSQLStatementContext(
- new DeleteStatement(databaseType)), "",
Collections.emptyList(), new HintValueContext(), mockConnectionContext(),
mock(ShardingSphereMetaData.class));
- assertRoute(queryContext, "DELETE=1");
+ private static Stream<Arguments> routeContexts() {
+ return Stream.of(
+ Arguments.of("INSERT", createQueryContext(new
InsertStatement(DATABASE_TYPE))),
+ Arguments.of("UPDATE", createQueryContext(new
UpdateStatement(DATABASE_TYPE))),
+ Arguments.of("DELETE", createQueryContext(new
DeleteStatement(DATABASE_TYPE))),
+ Arguments.of("SELECT", createQueryContext(new
SelectStatement(DATABASE_TYPE))));
}
- @Test
- void assertSelectRoute() {
- QueryContext queryContext = new QueryContext(new
CommonSQLStatementContext(
- new SelectStatement(databaseType)), "",
Collections.emptyList(), new HintValueContext(), mockConnectionContext(),
mock(ShardingSphereMetaData.class));
- assertRoute(queryContext, "SELECT=1");
+ private static QueryContext createQueryContext(final SQLStatement
sqlStatement) {
+ return new QueryContext(new CommonSQLStatementContext(sqlStatement),
"", Collections.emptyList(), new HintValueContext(), mockConnectionContext(),
mock(ShardingSphereMetaData.class));
}
- void assertRoute(final QueryContext queryContext, final String expected) {
- advice.beforeMethod(new TargetAdviceObjectFixture(),
mock(TargetAdviceMethod.class), new Object[]{queryContext, new
ConnectionContext(Collections::emptySet)}, "FIXTURE");
- assertThat(MetricsCollectorRegistry.get(config, "FIXTURE").toString(),
is(expected));
+ private static ConnectionContext mockConnectionContext() {
+ ConnectionContext result = mock(ConnectionContext.class);
+
when(result.getCurrentDatabaseName()).thenReturn(Optional.of("foo_db"));
+ return result;
}
}