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

Reply via email to