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 0893abe795c Refactor ShardingAuditorChangedProcessor (#33489)
0893abe795c is described below
commit 0893abe795cc8d73feaa595623ad3107ce4e4faa
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Nov 1 02:44:24 2024 +0800
Refactor ShardingAuditorChangedProcessor (#33489)
* Refactor AlgorithmChangedProcessorTest
* Refactor ShardingAuditorChangedProcessor
---
.../changed/ShardingAuditorChangedProcessor.java | 32 ++++---------
.../ShardingAuditorChangedProcessorTest.java | 53 ++++++++--------------
2 files changed, 30 insertions(+), 55 deletions(-)
diff --git
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rule/changed/ShardingAuditorChangedProcessor.java
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rule/changed/ShardingAuditorChangedProcessor.java
index 62d33be71f6..cab3ad91a37 100644
---
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rule/changed/ShardingAuditorChangedProcessor.java
+++
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rule/changed/ShardingAuditorChangedProcessor.java
@@ -18,42 +18,30 @@
package org.apache.shardingsphere.sharding.rule.changed;
import
org.apache.shardingsphere.infra.algorithm.core.config.AlgorithmConfiguration;
-import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-import
org.apache.shardingsphere.mode.event.dispatch.rule.alter.AlterNamedRuleItemEvent;
-import
org.apache.shardingsphere.mode.event.dispatch.rule.alter.AlterRuleItemEvent;
-import
org.apache.shardingsphere.mode.event.dispatch.rule.drop.DropNamedRuleItemEvent;
-import
org.apache.shardingsphere.mode.event.dispatch.rule.drop.DropRuleItemEvent;
-import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
-import
org.apache.shardingsphere.infra.algorithm.core.yaml.YamlAlgorithmConfiguration;
-import
org.apache.shardingsphere.infra.algorithm.core.yaml.YamlAlgorithmConfigurationSwapper;
-import
org.apache.shardingsphere.mode.spi.RuleItemConfigurationChangedProcessor;
+import org.apache.shardingsphere.mode.processor.AlgorithmChangedProcessor;
import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
import
org.apache.shardingsphere.sharding.metadata.nodepath.ShardingRuleNodePathProvider;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
+import java.util.Map;
+
/**
* Sharding auditor changed processor.
*/
-public final class ShardingAuditorChangedProcessor implements
RuleItemConfigurationChangedProcessor<ShardingRuleConfiguration,
AlgorithmConfiguration> {
+public final class ShardingAuditorChangedProcessor extends
AlgorithmChangedProcessor<ShardingRuleConfiguration> {
- @Override
- public AlgorithmConfiguration swapRuleItemConfiguration(final
AlterRuleItemEvent event, final String yamlContent) {
- return new
YamlAlgorithmConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContent,
YamlAlgorithmConfiguration.class));
- }
-
- @Override
- public ShardingRuleConfiguration findRuleConfiguration(final
ShardingSphereDatabase database) {
- return
database.getRuleMetaData().findSingleRule(ShardingRule.class).map(ShardingRule::getConfiguration).orElseGet(ShardingRuleConfiguration::new);
+ public ShardingAuditorChangedProcessor() {
+ super(ShardingRule.class);
}
@Override
- public void changeRuleItemConfiguration(final AlterRuleItemEvent event,
final ShardingRuleConfiguration currentRuleConfig, final AlgorithmConfiguration
toBeChangedItemConfig) {
- currentRuleConfig.getAuditors().put(((AlterNamedRuleItemEvent)
event).getItemName(), toBeChangedItemConfig);
+ protected ShardingRuleConfiguration createEmptyRuleConfiguration() {
+ return new ShardingRuleConfiguration();
}
@Override
- public void dropRuleItemConfiguration(final DropRuleItemEvent event, final
ShardingRuleConfiguration currentRuleConfig) {
- currentRuleConfig.getAuditors().remove(((DropNamedRuleItemEvent)
event).getItemName());
+ protected Map<String, AlgorithmConfiguration>
getAlgorithmConfigurations(final ShardingRuleConfiguration currentRuleConfig) {
+ return currentRuleConfig.getAuditors();
}
@Override
diff --git
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rule/changed/ShardingAuditorChangedProcessorTest.java
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rule/changed/ShardingAuditorChangedProcessorTest.java
index 17bd467df49..86c48fbc582 100644
---
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rule/changed/ShardingAuditorChangedProcessorTest.java
+++
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rule/changed/ShardingAuditorChangedProcessorTest.java
@@ -18,20 +18,16 @@
package org.apache.shardingsphere.sharding.rule.changed;
import
org.apache.shardingsphere.infra.algorithm.core.config.AlgorithmConfiguration;
-import
org.apache.shardingsphere.infra.algorithm.core.yaml.YamlAlgorithmConfiguration;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
-import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
import
org.apache.shardingsphere.mode.event.dispatch.rule.alter.AlterNamedRuleItemEvent;
import
org.apache.shardingsphere.mode.event.dispatch.rule.drop.DropNamedRuleItemEvent;
import
org.apache.shardingsphere.mode.spi.RuleItemConfigurationChangedProcessor;
import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
-import org.apache.shardingsphere.sharding.rule.ShardingRule;
import org.junit.jupiter.api.Test;
import java.util.Collections;
-import java.util.HashMap;
import java.util.Properties;
import static
org.apache.shardingsphere.test.matcher.ShardingSphereAssertionMatchers.deepEqual;
@@ -48,47 +44,38 @@ class ShardingAuditorChangedProcessorTest {
RuleItemConfigurationChangedProcessor.class, "sharding.auditors");
@Test
- void assertSwapRuleItemConfiguration() {
- AlgorithmConfiguration actual =
processor.swapRuleItemConfiguration(new AlterNamedRuleItemEvent("", "foo_tbl",
"", "", ""), createYAMLContent());
- assertThat(actual, deepEqual(new AlgorithmConfiguration("foo_algo",
new Properties())));
+ void assertFindRuleConfigurationWhenAbsent() {
+ assertThat(processor.findRuleConfiguration(mockDatabase()),
deepEqual(new ShardingRuleConfiguration()));
}
- private String createYAMLContent() {
- YamlAlgorithmConfiguration yamlConfig = new
YamlAlgorithmConfiguration();
- yamlConfig.setType("foo_algo");
- return YamlEngine.marshal(yamlConfig);
- }
-
- @Test
- void assertFindRuleConfiguration() {
- ShardingRuleConfiguration ruleConfig =
mock(ShardingRuleConfiguration.class);
- assertThat(processor.findRuleConfiguration(mockDatabase(ruleConfig)),
is(ruleConfig));
- }
-
- private ShardingSphereDatabase mockDatabase(final
ShardingRuleConfiguration ruleConfig) {
- ShardingRule rule = mock(ShardingRule.class);
- when(rule.getConfiguration()).thenReturn(ruleConfig);
+ private ShardingSphereDatabase mockDatabase() {
ShardingSphereDatabase result = mock(ShardingSphereDatabase.class);
- when(result.getRuleMetaData()).thenReturn(new
RuleMetaData(Collections.singleton(rule)));
+ when(result.getRuleMetaData()).thenReturn(new
RuleMetaData(Collections.emptyList()));
return result;
}
@Test
void assertChangeRuleItemConfiguration() {
- ShardingRuleConfiguration currentRuleConfig = new
ShardingRuleConfiguration();
- currentRuleConfig.setAuditors(new
HashMap<>(Collections.singletonMap("foo_algo",
mock(AlgorithmConfiguration.class))));
- AlgorithmConfiguration toBeChangedItemConfig = new
AlgorithmConfiguration("FIXTURE", new Properties());
- processor.changeRuleItemConfiguration(
- new AlterNamedRuleItemEvent("foo_db", "foo_algo", "", "", ""),
currentRuleConfig, toBeChangedItemConfig);
- assertThat(currentRuleConfig.getAuditors().size(), is(1));
- assertThat(currentRuleConfig.getAuditors().get("foo_algo").getType(),
is("FIXTURE"));
+ AlterNamedRuleItemEvent event = new AlterNamedRuleItemEvent("",
"bar_algo", "", "", "");
+ ShardingRuleConfiguration currentRuleConfig =
createCurrentRuleConfiguration();
+ AlgorithmConfiguration toBeChangedItemConfig = new
AlgorithmConfiguration("BAR_FIXTURE", new Properties());
+ processor.changeRuleItemConfiguration(event, currentRuleConfig,
toBeChangedItemConfig);
+ assertThat(currentRuleConfig.getAuditors().size(), is(2));
+ assertThat(currentRuleConfig.getAuditors().get("foo_algo").getType(),
is("FOO_FIXTURE"));
+ assertThat(currentRuleConfig.getAuditors().get("bar_algo").getType(),
is("BAR_FIXTURE"));
}
@Test
void assertDropRuleItemConfiguration() {
- ShardingRuleConfiguration currentRuleConfig = new
ShardingRuleConfiguration();
- currentRuleConfig.setAuditors(new
HashMap<>(Collections.singletonMap("foo_algo",
mock(AlgorithmConfiguration.class))));
- processor.dropRuleItemConfiguration(new DropNamedRuleItemEvent("",
"foo_algo", ""), currentRuleConfig);
+ DropNamedRuleItemEvent event = new DropNamedRuleItemEvent("",
"foo_algo", "");
+ ShardingRuleConfiguration currentRuleConfig =
createCurrentRuleConfiguration();
+ processor.dropRuleItemConfiguration(event, currentRuleConfig);
assertTrue(currentRuleConfig.getAuditors().isEmpty());
}
+
+ private ShardingRuleConfiguration createCurrentRuleConfiguration() {
+ ShardingRuleConfiguration result = new ShardingRuleConfiguration();
+ result.getAuditors().put("foo_algo", new
AlgorithmConfiguration("FOO_FIXTURE", new Properties()));
+ return result;
+ }
}