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 27aa7380cbf Add more test cases on 
ConvertYamlConfigurationExecutorTest (#38023)
27aa7380cbf is described below

commit 27aa7380cbfbb887e7b3bbecbcae0d24a63d4d88
Author: Liang Zhang <[email protected]>
AuthorDate: Thu Feb 12 21:22:42 2026 +0800

    Add more test cases on ConvertYamlConfigurationExecutorTest (#38023)
---
 .../ImportDatabaseConfigurationExecutorTest.java   | 72 ++++++++++------------
 1 file changed, 33 insertions(+), 39 deletions(-)

diff --git 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/imports/ImportDatabaseConfigurationExecutorTest.java
 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/imports/ImportDatabaseConfigurationExecutorTest.java
index c30e4931ccf..05193409fd9 100644
--- 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/imports/ImportDatabaseConfigurationExecutorTest.java
+++ 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/imports/ImportDatabaseConfigurationExecutorTest.java
@@ -19,10 +19,12 @@ package 
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.updatable.im
 
 import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
 import 
org.apache.shardingsphere.database.exception.core.exception.syntax.database.DatabaseCreateExistsException;
+import 
org.apache.shardingsphere.distsql.handler.engine.update.DistSQLUpdateExecutor;
 import 
org.apache.shardingsphere.distsql.statement.type.ral.updatable.ImportDatabaseConfigurationStatement;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
 import 
org.apache.shardingsphere.infra.config.props.temporary.TemporaryConfigurationProperties;
+import org.apache.shardingsphere.infra.exception.generic.FileIOException;
 import 
org.apache.shardingsphere.infra.exception.kernel.metadata.MissingRequiredDatabaseException;
 import 
org.apache.shardingsphere.infra.exception.kernel.metadata.rule.DuplicateRuleException;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
@@ -36,6 +38,9 @@ import 
org.apache.shardingsphere.infra.util.props.PropertiesBuilder.Property;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 import org.apache.shardingsphere.test.infra.fixture.jdbc.MockedDataSource;
 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 javax.sql.DataSource;
 import java.net.URL;
@@ -43,6 +48,7 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.Properties;
+import java.util.stream.Stream;
 
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertThrows;
@@ -52,34 +58,13 @@ import static org.mockito.Mockito.when;
 
 class ImportDatabaseConfigurationExecutorTest {
     
-    @Test
-    void assertImportDatabaseExecutorForSharding() {
-        ContextManager contextManager = mockContextManager("sharding_db");
-        assertExecute(contextManager, "/conf/import/database-sharding.yaml");
-    }
-    
-    @Test
-    void assertImportDatabaseExecutorForReadwriteSplitting() {
-        ContextManager contextManager = 
mockContextManager("readwrite_splitting_db");
-        assertExecute(contextManager, 
"/conf/import/database-readwrite-splitting.yaml");
-    }
-    
-    @Test
-    void assertImportDatabaseExecutorForEncrypt() {
-        ContextManager contextManager = mockContextManager("encrypt_db");
-        assertExecute(contextManager, "/conf/import/database-encrypt.yaml");
-    }
-    
-    @Test
-    void assertImportDatabaseExecutorForShadow() {
-        ContextManager contextManager = mockContextManager("shadow_db");
-        assertExecute(contextManager, "/conf/import/database-shadow.yaml");
-    }
+    private final ImportDatabaseConfigurationExecutor executor =
+            (ImportDatabaseConfigurationExecutor) 
TypedSPILoader.getService(DistSQLUpdateExecutor.class, 
ImportDatabaseConfigurationStatement.class);
     
-    @Test
-    void assertImportDatabaseExecutorForMask() {
-        ContextManager contextManager = mockContextManager("mask_db");
-        assertExecute(contextManager, "/conf/import/database-mask.yaml");
+    @ParameterizedTest(name = "{0}")
+    @MethodSource("importSuccessCases")
+    void assertImportDatabaseExecutor(final String caseName, final String 
databaseName, final String filePath) {
+        assertExecute(mockContextManager(databaseName), filePath);
     }
     
     @Test
@@ -89,26 +74,35 @@ class ImportDatabaseConfigurationExecutorTest {
         assertThrows(DatabaseCreateExistsException.class, () -> 
assertExecute(contextManager, "/conf/import/database-sharding.yaml"));
     }
     
-    @Test
-    void assertImportEmptyDatabaseName() {
-        ContextManager contextManager = mockContextManager("sharding_db");
-        assertThrows(MissingRequiredDatabaseException.class, () -> 
assertExecute(contextManager, 
"/conf/import/database-empty-database-name.yaml"));
+    @ParameterizedTest(name = "{0}")
+    @MethodSource("importFailureCases")
+    void assertImportFailure(final String caseName, final String databaseName, 
final String filePath, final Class<? extends Throwable> expected) {
+        assertThrows(expected, () -> 
assertExecute(mockContextManager(databaseName), filePath));
     }
     
     @Test
-    void assertImportDuplicatedLogicTable() {
-        ContextManager contextManager = mockContextManager("sharding_db");
-        assertThrows(DuplicateRuleException.class, () -> 
assertExecute(contextManager, 
"/conf/import/database-duplicated-logic-table.yaml"));
+    void assertImportFileNotFound() {
+        assertThrows(FileIOException.class, () -> executor.executeUpdate(
+                new 
ImportDatabaseConfigurationStatement("/__not_exist__/database-configuration.yaml"),
 mock(ContextManager.class)));
     }
     
-    @Test
-    void assertImportInvalidAlgorithm() {
-        ContextManager contextManager = mockContextManager("sharding_db");
-        assertThrows(ServiceProviderNotFoundException.class, () -> 
assertExecute(contextManager, "/conf/import/database-invalid-algorithm.yaml"));
+    private static Stream<Arguments> importSuccessCases() {
+        return Stream.of(
+                Arguments.of("import sharding", "sharding_db", 
"/conf/import/database-sharding.yaml"),
+                Arguments.of("import readwrite splitting", 
"readwrite_splitting_db", "/conf/import/database-readwrite-splitting.yaml"),
+                Arguments.of("import encrypt", "encrypt_db", 
"/conf/import/database-encrypt.yaml"),
+                Arguments.of("import shadow", "shadow_db", 
"/conf/import/database-shadow.yaml"),
+                Arguments.of("import mask", "mask_db", 
"/conf/import/database-mask.yaml"));
+    }
+    
+    private static Stream<Arguments> importFailureCases() {
+        return Stream.of(
+                Arguments.of("missing database name", "sharding_db", 
"/conf/import/database-empty-database-name.yaml", 
MissingRequiredDatabaseException.class),
+                Arguments.of("duplicated logic table", "sharding_db", 
"/conf/import/database-duplicated-logic-table.yaml", 
DuplicateRuleException.class),
+                Arguments.of("invalid algorithm", "sharding_db", 
"/conf/import/database-invalid-algorithm.yaml", 
ServiceProviderNotFoundException.class));
     }
     
     private void assertExecute(final ContextManager contextManager, final 
String filePath) {
-        ImportDatabaseConfigurationExecutor executor = new 
ImportDatabaseConfigurationExecutor();
         URL url = 
ImportDatabaseConfigurationExecutorTest.class.getResource(filePath);
         assertNotNull(url);
         executor.executeUpdate(new 
ImportDatabaseConfigurationStatement(url.getPath()), contextManager);

Reply via email to