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 92b85ddfa97 Refactor BootstrapArgumentsTest (#37456)
92b85ddfa97 is described below

commit 92b85ddfa975c2ee381a6272c33a1cd5e67d59c8
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Dec 21 21:37:35 2025 +0800

    Refactor BootstrapArgumentsTest (#37456)
---
 .../proxy/arguments/BootstrapArgumentsTest.java    | 133 ++++++++++-----------
 1 file changed, 66 insertions(+), 67 deletions(-)

diff --git 
a/proxy/bootstrap/src/test/java/org/apache/shardingsphere/proxy/arguments/BootstrapArgumentsTest.java
 
b/proxy/bootstrap/src/test/java/org/apache/shardingsphere/proxy/arguments/BootstrapArgumentsTest.java
index 5b63c987477..652f865a8ea 100644
--- 
a/proxy/bootstrap/src/test/java/org/apache/shardingsphere/proxy/arguments/BootstrapArgumentsTest.java
+++ 
b/proxy/bootstrap/src/test/java/org/apache/shardingsphere/proxy/arguments/BootstrapArgumentsTest.java
@@ -17,11 +17,17 @@
 
 package org.apache.shardingsphere.proxy.arguments;
 
-import org.junit.jupiter.api.Test;
+import lombok.SneakyThrows;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
 import org.mockito.internal.configuration.plugins.Plugins;
 
+import java.util.Arrays;
 import java.util.Collections;
+import java.util.List;
 import java.util.Optional;
+import java.util.stream.Stream;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
@@ -31,75 +37,68 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 
 class BootstrapArgumentsTest {
     
-    @Test
-    void assertGetPortWithoutArguments() {
-        assertFalse(new BootstrapArguments(new 
String[]{}).getPort().isPresent());
+    @SuppressWarnings("OptionalUsedAsFieldOrParameterType")
+    @ParameterizedTest(name = "{0}")
+    @MethodSource("provideBootstrapArguments")
+    void assertBootstrapArguments(final String scenario, final String[] args, 
final Optional<Integer> expectedPort, final Optional<String> 
expectedPortErrorMessage,
+                                  final String expectedConfigPath, final 
List<String> expectedAddresses, final Optional<String> expectedSocketPath,
+                                  final Optional<String> 
expectedSocketPathErrorMessage) {
+        BootstrapArguments arguments = new BootstrapArguments(args);
+        if (expectedPortErrorMessage.isPresent()) {
+            IllegalArgumentException ex = 
assertThrows(IllegalArgumentException.class, arguments::getPort);
+            assertThat(scenario + ": port error message", ex.getMessage(), 
is(expectedPortErrorMessage.get()));
+        } else {
+            Optional<Integer> actualPort = arguments.getPort();
+            if (expectedPort.isPresent()) {
+                assertTrue(actualPort.isPresent());
+                assertThat(scenario + ": port value", actualPort.get(), 
is(expectedPort.get()));
+            } else {
+                assertFalse(actualPort.isPresent());
+            }
+        }
+        assertThat(scenario + ": configuration path", 
arguments.getConfigurationPath(), is(expectedConfigPath));
+        assertThat(scenario + ": addresses", arguments.getAddresses(), 
is(expectedAddresses));
+        if (expectedSocketPathErrorMessage.isPresent()) {
+            IllegalArgumentException ex = 
assertThrows(IllegalArgumentException.class, arguments::getSocketPath);
+            assertThat(scenario + ": socket path error message", 
ex.getMessage(), is(expectedSocketPathErrorMessage.get()));
+        } else {
+            Optional<String> actualSocketPath = arguments.getSocketPath();
+            if (expectedSocketPath.isPresent()) {
+                assertTrue(actualSocketPath.isPresent());
+                assertThat(scenario + ": socket path", actualSocketPath.get(), 
is(expectedSocketPath.get()));
+            } else {
+                assertFalse(actualSocketPath.isPresent());
+            }
+        }
     }
     
-    @Test
-    void assertGetPortWithNegativeArgument() {
-        assertFalse(new BootstrapArguments(new 
String[]{"-1"}).getPort().isPresent());
+    private static Stream<Arguments> provideBootstrapArguments() {
+        String defaultConfigPath = getDefaultConfigPath();
+        return Stream.of(
+                Arguments.of("without arguments", new String[]{}, 
Optional.empty(), Optional.empty(), defaultConfigPath,
+                        Collections.singletonList("0.0.0.0"), 
Optional.empty(), Optional.empty()),
+                Arguments.of("negative port", new String[]{"-1"}, 
Optional.empty(), Optional.empty(), defaultConfigPath,
+                        Collections.singletonList("0.0.0.0"), 
Optional.empty(), Optional.empty()),
+                Arguments.of("non numeric port", new 
String[]{"WrongArgument"}, Optional.empty(), Optional.of("Invalid port 
`WrongArgument`."),
+                        defaultConfigPath, 
Collections.singletonList("0.0.0.0"), Optional.empty(), Optional.empty()),
+                Arguments.of("valid port uses default configuration path", new 
String[]{"3306"}, Optional.of(3306), Optional.empty(),
+                        defaultConfigPath, 
Collections.singletonList("0.0.0.0"), Optional.empty(), Optional.empty()),
+                Arguments.of("pad leading slash", new String[]{"0", "test/"}, 
Optional.of(0), Optional.empty(), "/test/",
+                        Collections.singletonList("0.0.0.0"), 
Optional.empty(), Optional.empty()),
+                Arguments.of("pad trailing slash", new String[]{"0", "/test"}, 
Optional.of(0), Optional.empty(), "/test/",
+                        Collections.singletonList("0.0.0.0"), 
Optional.empty(), Optional.empty()),
+                Arguments.of("default addresses when arguments less than 
three", new String[]{"0", "conf"}, Optional.of(0), Optional.empty(),
+                        "/conf/", Collections.singletonList("0.0.0.0"), 
Optional.empty(), Optional.empty()),
+                Arguments.of("filter non inet address", new String[]{"0", 
"conf", "127.0.0.1,/tmp/shardingsphere.sock"}, Optional.of(0), Optional.empty(),
+                        "/conf/", Collections.singletonList("127.0.0.1"), 
Optional.of("/tmp/shardingsphere.sock"), Optional.empty()),
+                Arguments.of("socket path empty when only inet addresses", new 
String[]{"0", "conf", "127.0.0.1,1.1.1.1"}, Optional.of(0), Optional.empty(),
+                        "/conf/", Arrays.asList("127.0.0.1", "1.1.1.1"), 
Optional.empty(), Optional.empty()),
+                Arguments.of("invalid socket path", new String[]{"0", "conf", 
"127.0.0.1,\0"}, Optional.of(0), Optional.empty(),
+                        "/conf/", Collections.singletonList("127.0.0.1"), 
Optional.empty(), Optional.of("Invalid path `\0`.")));
     }
     
-    @Test
-    void assertGetPortWithNonNumericArgument() {
-        IllegalArgumentException ex = 
assertThrows(IllegalArgumentException.class, () -> new BootstrapArguments(new 
String[]{"WrongArgument"}).getPort());
-        assertThat(ex.getMessage(), is("Invalid port `WrongArgument`."));
-    }
-    
-    @Test
-    void assertGetPortWithValidArgument() {
-        Optional<Integer> actualPort = new BootstrapArguments(new 
String[]{"3306"}).getPort();
-        assertTrue(actualPort.isPresent());
-        assertThat(actualPort.get(), is(3306));
-    }
-    
-    @Test
-    void assertGetConfigurationPathWithSingleArgumentUsesDefaultPath() throws 
ReflectiveOperationException {
-        assertThat(new BootstrapArguments(new 
String[]{"3306"}).getConfigurationPath(), 
is(Plugins.getMemberAccessor().get(BootstrapArguments.class.getDeclaredField("DEFAULT_CONFIG_PATH"),
 null)));
-    }
-    
-    @Test
-    void assertGetConfigurationPathPadsLeadingSlash() {
-        assertThat(new BootstrapArguments(new String[]{"0", 
"test/"}).getConfigurationPath(), is("/test/"));
-    }
-    
-    @Test
-    void assertGetConfigurationPathPadsTrailingSlash() {
-        assertThat(new BootstrapArguments(new String[]{"0", 
"/test"}).getConfigurationPath(), is("/test/"));
-    }
-    
-    @Test
-    void assertGetAddressesDefaultWhenArgumentsLessThanThree() {
-        assertThat(new BootstrapArguments(new String[]{"0", 
"conf"}).getAddresses(), is(Collections.singletonList("0.0.0.0")));
-    }
-    
-    @Test
-    void assertGetSocketPathWhenArgumentsLessThanThree() {
-        assertFalse(new BootstrapArguments(new String[]{"0", 
"conf"}).getSocketPath().isPresent());
-    }
-    
-    @Test
-    void assertGetAddressesFiltersNonInetAddress() {
-        assertThat(new BootstrapArguments(new String[]{"0", "conf", 
"127.0.0.1,/tmp/shardingsphere.sock"}).getAddresses(), 
is(Collections.singletonList("127.0.0.1")));
-    }
-    
-    @Test
-    void assertGetSocketPathReturnsFirstNonInetAddress() {
-        Optional<String> actualSocketPath = new BootstrapArguments(new 
String[]{"0", "conf", "127.0.0.1,/tmp/shardingsphere.sock"}).getSocketPath();
-        assertTrue(actualSocketPath.isPresent());
-        assertThat(actualSocketPath.get(), is("/tmp/shardingsphere.sock"));
-    }
-    
-    @Test
-    void assertGetSocketPathWhenOnlyInetAddresses() {
-        assertFalse(new BootstrapArguments(new String[]{"0", "conf", 
"127.0.0.1,1.1.1.1"}).getSocketPath().isPresent());
-    }
-    
-    @Test
-    void assertGetSocketPathWithInvalidPath() {
-        BootstrapArguments arguments = new BootstrapArguments(new 
String[]{"0", "conf", "127.0.0.1,\0"});
-        IllegalArgumentException ex = 
assertThrows(IllegalArgumentException.class, arguments::getSocketPath);
-        assertThat(ex.getMessage(), is("Invalid path `\0`."));
+    @SneakyThrows(ReflectiveOperationException.class)
+    private static String getDefaultConfigPath() {
+        return (String) 
Plugins.getMemberAccessor().get(BootstrapArguments.class.getDeclaredField("DEFAULT_CONFIG_PATH"),
 null);
     }
 }

Reply via email to