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 99be329727c Add ShardingPipelineYamlRuleConfigurationReviserTest 
(#37090)
99be329727c is described below

commit 99be329727c41347a148e400b076ee2a2955bab9
Author: Liang Zhang <[email protected]>
AuthorDate: Thu Nov 13 21:31:15 2025 +0800

    Add ShardingPipelineYamlRuleConfigurationReviserTest (#37090)
    
    * Add ShardingPipelineYamlRuleConfigurationReviserTest
    
    * Add ShardingPipelineYamlRuleConfigurationReviserTest
---
 AGENTS.md                                          |  2 +-
 ...ardingPipelineYamlRuleConfigurationReviser.java |  2 +-
 ...ngPipelineYamlRuleConfigurationReviserTest.java | 94 ++++++++++++++++++++++
 3 files changed, 96 insertions(+), 2 deletions(-)

diff --git a/AGENTS.md b/AGENTS.md
index 4714b90b210..22b4612e731 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -46,7 +46,7 @@ Mention which topology you target, the registry used, and any 
compatibility cons
 
 ## AI Execution Workflow
 1. **Intake & Clarify** — restate the ask, map affected modules, confirm 
sandbox/approval/network constraints.
-2. **Plan & Reason** — write a multi-step plan with checkpoints (analysis, 
edits, tests). Align scope with release tempo (prefer incremental fixes unless 
told otherwise).
+2. **Plan & Reason** — write a multi-step plan with checkpoints (analysis, 
edits, tests). Align scope with release tempo (prefer incremental fixes unless 
told otherwise). When the user demands precise branch coverage or “minimum 
test” constraints, first enumerate the target branches and map each to the 
single test case that will cover it before touching code.
 3. **Implement** — touch only necessary files, reuse abstractions, keep ASF 
headers.
 4. **Validate** — choose the smallest meaningful command, announce the intent 
before execution, summarize exit codes afterward; if blocked (sandbox, missing 
deps), explain what would have run and why it matters.
 5. **Report** — lead with intent, list edited files with rationale and line 
references, state verification results, propose next actions.
diff --git 
a/kernel/data-pipeline/feature/sharding/src/main/java/org/apache/shardingsphere/data/pipeline/sharding/ShardingPipelineYamlRuleConfigurationReviser.java
 
b/kernel/data-pipeline/feature/sharding/src/main/java/org/apache/shardingsphere/data/pipeline/sharding/ShardingPipelineYamlRuleConfigurationReviser.java
index a7645d7a7c1..535dd9cb16e 100644
--- 
a/kernel/data-pipeline/feature/sharding/src/main/java/org/apache/shardingsphere/data/pipeline/sharding/ShardingPipelineYamlRuleConfigurationReviser.java
+++ 
b/kernel/data-pipeline/feature/sharding/src/main/java/org/apache/shardingsphere/data/pipeline/sharding/ShardingPipelineYamlRuleConfigurationReviser.java
@@ -36,7 +36,7 @@ public final class 
ShardingPipelineYamlRuleConfigurationReviser implements Pipel
     private void enableRangeQueryForInline(final YamlShardingRuleConfiguration 
yamlRuleConfig) {
         for (YamlAlgorithmConfiguration each : 
yamlRuleConfig.getShardingAlgorithms().values()) {
             if ("INLINE".equalsIgnoreCase(each.getType()) || 
"COMPLEX_INLINE".equalsIgnoreCase(each.getType())) {
-                each.getProps().put("allow-range-query-with-inline-sharding", 
Boolean.TRUE.toString());
+                
each.getProps().setProperty("allow-range-query-with-inline-sharding", 
Boolean.TRUE.toString());
             }
         }
     }
diff --git 
a/kernel/data-pipeline/feature/sharding/src/test/java/org/apache/shardingsphere/data/pipeline/sharding/ShardingPipelineYamlRuleConfigurationReviserTest.java
 
b/kernel/data-pipeline/feature/sharding/src/test/java/org/apache/shardingsphere/data/pipeline/sharding/ShardingPipelineYamlRuleConfigurationReviserTest.java
new file mode 100644
index 00000000000..86e26cfa974
--- /dev/null
+++ 
b/kernel/data-pipeline/feature/sharding/src/test/java/org/apache/shardingsphere/data/pipeline/sharding/ShardingPipelineYamlRuleConfigurationReviserTest.java
@@ -0,0 +1,94 @@
+/*
+ * 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.
+ */
+
+package org.apache.shardingsphere.data.pipeline.sharding;
+
+import 
org.apache.shardingsphere.data.pipeline.core.datasource.yaml.PipelineYamlRuleConfigurationReviser;
+import 
org.apache.shardingsphere.infra.algorithm.core.yaml.YamlAlgorithmConfiguration;
+import org.apache.shardingsphere.infra.spi.type.ordered.OrderedSPILoader;
+import 
org.apache.shardingsphere.sharding.yaml.config.YamlShardingRuleConfiguration;
+import 
org.apache.shardingsphere.sharding.yaml.config.rule.YamlShardingAutoTableRuleConfiguration;
+import 
org.apache.shardingsphere.sharding.yaml.config.rule.YamlTableRuleConfiguration;
+import 
org.apache.shardingsphere.sharding.yaml.config.strategy.audit.YamlShardingAuditStrategyConfiguration;
+import org.junit.jupiter.api.Test;
+
+import java.util.Collections;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.junit.jupiter.api.Assertions.assertNull;
+
+class ShardingPipelineYamlRuleConfigurationReviserTest {
+    
+    @SuppressWarnings("unchecked")
+    private final 
PipelineYamlRuleConfigurationReviser<YamlShardingRuleConfiguration> reviser = 
(PipelineYamlRuleConfigurationReviser<YamlShardingRuleConfiguration>) 
OrderedSPILoader
+            .getServicesByClass(PipelineYamlRuleConfigurationReviser.class, 
Collections.singleton(YamlShardingRuleConfiguration.class)).get(YamlShardingRuleConfiguration.class);
+    
+    @Test
+    void assertReviseInlineAlgorithmsAndAuditStrategies() {
+        YamlShardingRuleConfiguration yamlConfig = new 
YamlShardingRuleConfiguration();
+        yamlConfig.getShardingAlgorithms().put("inline", 
createAlgorithm("INLINE"));
+        yamlConfig.getShardingAlgorithms().put("complex_inline", 
createAlgorithm("complex_inline"));
+        yamlConfig.getShardingAlgorithms().put("hash_mod", 
createAlgorithm("HASH_MOD"));
+        yamlConfig.setDefaultAuditStrategy(new 
YamlShardingAuditStrategyConfiguration());
+        yamlConfig.getAuditors().put("fixture_auditor", 
createAlgorithm("SQL_HINT"));
+        yamlConfig.getTables().put("t_order", createTableRuleWithAudit());
+        yamlConfig.getAutoTables().put("t_auto", 
createAutoTableRuleWithAudit());
+        reviser.revise(yamlConfig);
+        
assertThat(yamlConfig.getShardingAlgorithms().get("inline").getProps().getProperty("allow-range-query-with-inline-sharding"),
 is(Boolean.TRUE.toString()));
+        
assertThat(yamlConfig.getShardingAlgorithms().get("complex_inline").getProps().getProperty("allow-range-query-with-inline-sharding"),
 is(Boolean.TRUE.toString()));
+        
assertNull(yamlConfig.getShardingAlgorithms().get("hash_mod").getProps().getProperty("allow-range-query-with-inline-sharding"));
+        assertNull(yamlConfig.getDefaultAuditStrategy());
+        assertNull(yamlConfig.getAuditors());
+        assertNull(yamlConfig.getTables().get("t_order").getAuditStrategy());
+        
assertNull(yamlConfig.getAutoTables().get("t_auto").getAuditStrategy());
+    }
+    
+    @Test
+    void assertReviseWhenTablesAbsent() {
+        YamlShardingRuleConfiguration yamlConfig = new 
YamlShardingRuleConfiguration();
+        yamlConfig.setTables(null);
+        yamlConfig.setAutoTables(null);
+        yamlConfig.setDefaultAuditStrategy(new 
YamlShardingAuditStrategyConfiguration());
+        yamlConfig.setAuditors(Collections.singletonMap("auditor", 
createAlgorithm("SQL_HINT")));
+        reviser.revise(yamlConfig);
+        assertNull(yamlConfig.getTables());
+        assertNull(yamlConfig.getAutoTables());
+        assertNull(yamlConfig.getDefaultAuditStrategy());
+        assertNull(yamlConfig.getAuditors());
+    }
+    
+    private YamlAlgorithmConfiguration createAlgorithm(final String type) {
+        YamlAlgorithmConfiguration result = new YamlAlgorithmConfiguration();
+        result.setType(type);
+        return result;
+    }
+    
+    private YamlTableRuleConfiguration createTableRuleWithAudit() {
+        YamlTableRuleConfiguration result = new YamlTableRuleConfiguration();
+        result.setLogicTable("t_order");
+        result.setAuditStrategy(new YamlShardingAuditStrategyConfiguration());
+        return result;
+    }
+    
+    private YamlShardingAutoTableRuleConfiguration 
createAutoTableRuleWithAudit() {
+        YamlShardingAutoTableRuleConfiguration result = new 
YamlShardingAutoTableRuleConfiguration();
+        result.setLogicTable("t_auto");
+        result.setAuditStrategy(new YamlShardingAuditStrategyConfiguration());
+        return result;
+    }
+}

Reply via email to