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 9f0efa3de4a Fixes #28681 (#33035)
9f0efa3de4a is described below
commit 9f0efa3de4ab45a4ef404d60b886d3a318b41085
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Sep 28 17:16:40 2024 +0800
Fixes #28681 (#33035)
---
... => RuleMetaDataShardingSphereRuleFixture.java} | 2 +-
.../metadata/database/rule/RuleMetaDataTest.java | 48 ++++++++++++++++++----
2 files changed, 42 insertions(+), 8 deletions(-)
diff --git
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/rule/ShardingSphereRuleFixture.java
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/rule/RuleMetaDataShardingSphereRuleFixture.java
similarity index 93%
rename from
infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/rule/ShardingSphereRuleFixture.java
rename to
infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/rule/RuleMetaDataShardingSphereRuleFixture.java
index 67f6ca44944..e7c3d8b4b09 100644
---
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/rule/ShardingSphereRuleFixture.java
+++
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/rule/RuleMetaDataShardingSphereRuleFixture.java
@@ -22,7 +22,7 @@ import
org.apache.shardingsphere.infra.rule.ShardingSphereRule;
import static org.mockito.Mockito.mock;
-public class ShardingSphereRuleFixture implements ShardingSphereRule {
+public class RuleMetaDataShardingSphereRuleFixture implements
ShardingSphereRule {
@Override
public RuleConfiguration getConfiguration() {
diff --git
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/rule/RuleMetaDataTest.java
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/rule/RuleMetaDataTest.java
index 493a55c8c75..b59c26552a8 100644
---
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/rule/RuleMetaDataTest.java
+++
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/rule/RuleMetaDataTest.java
@@ -17,13 +17,20 @@
package org.apache.shardingsphere.infra.metadata.database.rule;
+import org.apache.shardingsphere.infra.datanode.DataNode;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
import org.apache.shardingsphere.infra.rule.attribute.RuleAttribute;
+import
org.apache.shardingsphere.infra.rule.attribute.datanode.DataNodeRuleAttribute;
+import
org.apache.shardingsphere.infra.rule.attribute.datasource.DataSourceMapperRuleAttribute;
import org.apache.shardingsphere.infra.rule.scope.GlobalRule;
+import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.util.Arrays;
+import java.util.Collection;
import java.util.Collections;
+import java.util.Map;
+import java.util.Optional;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.CoreMatchers.is;
@@ -33,24 +40,46 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
class RuleMetaDataTest {
- private final RuleMetaData ruleMetaData = new
RuleMetaData(Arrays.asList(new ShardingSphereRuleFixture(),
mock(ShardingSphereRule.class, RETURNS_DEEP_STUBS)));
+ private RuleMetaData ruleMetaData;
+
+ @BeforeEach
+ void setUp() {
+ ruleMetaData = new RuleMetaData(Arrays.asList(new
RuleMetaDataShardingSphereRuleFixture(), mockDataSourceMapperRule(),
mockDataNodeRule()));
+ }
+
+ private ShardingSphereRule mockDataSourceMapperRule() {
+ ShardingSphereRule result = mock(ShardingSphereRule.class,
RETURNS_DEEP_STUBS);
+ DataSourceMapperRuleAttribute ruleAttribute =
mock(DataSourceMapperRuleAttribute.class, RETURNS_DEEP_STUBS);
+
when(ruleAttribute.getDataSourceMapper().values()).thenReturn(Collections.singletonList(Collections.singletonList("foo_ds")));
+
when(result.getAttributes().findAttribute(DataSourceMapperRuleAttribute.class)).thenReturn(Optional.of(ruleAttribute));
+ return result;
+ }
+
+ private ShardingSphereRule mockDataNodeRule() {
+ ShardingSphereRule result = mock(ShardingSphereRule.class,
RETURNS_DEEP_STUBS);
+ DataNodeRuleAttribute ruleAttribute =
mock(DataNodeRuleAttribute.class, RETURNS_DEEP_STUBS);
+
when(ruleAttribute.getAllDataNodes().values()).thenReturn(Collections.singleton(Collections.singleton(new
DataNode("foo_db.foo_tbl"))));
+
when(result.getAttributes().findAttribute(DataNodeRuleAttribute.class)).thenReturn(Optional.of(ruleAttribute));
+ return result;
+ }
@Test
void assertGetConfigurations() {
- assertThat(ruleMetaData.getConfigurations().size(), is(2));
+ assertThat(ruleMetaData.getConfigurations().size(), is(3));
}
@Test
void assertFindRules() {
-
assertThat(ruleMetaData.findRules(ShardingSphereRuleFixture.class).size(),
is(1));
+
assertThat(ruleMetaData.findRules(RuleMetaDataShardingSphereRuleFixture.class).size(),
is(1));
}
@Test
void assertFindSingleRule() {
-
assertTrue(ruleMetaData.findSingleRule(ShardingSphereRuleFixture.class).isPresent());
+
assertTrue(ruleMetaData.findSingleRule(RuleMetaDataShardingSphereRuleFixture.class).isPresent());
}
@Test
@@ -60,7 +89,7 @@ class RuleMetaDataTest {
@Test
void assertGetSingleRule() {
-
assertThat(ruleMetaData.getSingleRule(ShardingSphereRuleFixture.class),
instanceOf(ShardingSphereRuleFixture.class));
+
assertThat(ruleMetaData.getSingleRule(RuleMetaDataShardingSphereRuleFixture.class),
instanceOf(RuleMetaDataShardingSphereRuleFixture.class));
}
@Test
@@ -69,12 +98,17 @@ class RuleMetaDataTest {
}
@Test
- void assertGetInUsedStorageUnitNameAndRulesMapWhenRulesAreEmpty() {
- assertTrue(new
RuleMetaData(Collections.emptyList()).getInUsedStorageUnitNameAndRulesMap().isEmpty());
+ void assertGetInUsedStorageUnitNameAndRulesMap() {
+ Map<String, Collection<Class<? extends ShardingSphereRule>>> actual =
ruleMetaData.getInUsedStorageUnitNameAndRulesMap();
+ assertThat(actual.size(), is(2));
+ assertTrue(actual.containsKey("foo_ds"));
+ assertTrue(actual.containsKey("foo_db"));
}
@Test
void assertGetAttributes() {
assertTrue(ruleMetaData.getAttributes(RuleAttribute.class).isEmpty());
+
assertFalse(ruleMetaData.getAttributes(DataSourceMapperRuleAttribute.class).isEmpty());
+
assertFalse(ruleMetaData.getAttributes(DataNodeRuleAttribute.class).isEmpty());
}
}