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 a8e410f3254 add test case (#19495)
a8e410f3254 is described below
commit a8e410f3254776bc6800b7e754723b2914cd7bf9
Author: xuup <[email protected]>
AuthorDate: Sun Jul 24 11:17:37 2022 +0800
add test case (#19495)
---
...ovidedShardingRuleConfigurationCheckerTest.java | 103 ++++++++++++++-----
.../ShardingRuleConfigurationCheckerTest.java | 111 ++++++++++++++-------
2 files changed, 154 insertions(+), 60 deletions(-)
diff --git
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/checker/AlgorithmProvidedShardingRuleConfigurationCheckerTest.java
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/checker/AlgorithmProvidedShardingRuleConfigurationCheckerTest.java
index 493ddc5d527..6a47e524d95 100644
---
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/checker/AlgorithmProvidedShardingRuleConfigurationCheckerTest.java
+++
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/checker/AlgorithmProvidedShardingRuleConfigurationCheckerTest.java
@@ -22,46 +22,97 @@ import
org.apache.shardingsphere.infra.config.checker.RuleConfigurationCheckerFa
import
org.apache.shardingsphere.sharding.algorithm.config.AlgorithmProvidedShardingRuleConfiguration;
import
org.apache.shardingsphere.sharding.api.config.rule.ShardingAutoTableRuleConfiguration;
import
org.apache.shardingsphere.sharding.api.config.rule.ShardingTableRuleConfiguration;
+import
org.apache.shardingsphere.sharding.api.config.strategy.audit.ShardingAuditStrategyConfiguration;
+import
org.apache.shardingsphere.sharding.api.config.strategy.keygen.KeyGenerateStrategyConfiguration;
import
org.apache.shardingsphere.sharding.api.config.strategy.sharding.ShardingStrategyConfiguration;
+import org.apache.shardingsphere.sharding.spi.KeyGenerateAlgorithm;
import org.apache.shardingsphere.sharding.spi.ShardingAlgorithm;
+import org.apache.shardingsphere.sharding.spi.ShardingAuditAlgorithm;
import org.junit.Test;
import java.util.Collections;
import java.util.Optional;
-import static org.hamcrest.CoreMatchers.instanceOf;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
public final class AlgorithmProvidedShardingRuleConfigurationCheckerTest {
-
- @SuppressWarnings({"rawtypes", "unchecked"})
+
@Test
public void assertCheckPass() {
- AlgorithmProvidedShardingRuleConfiguration config =
mock(AlgorithmProvidedShardingRuleConfiguration.class);
-
when(config.getTables()).thenReturn(Collections.singleton(mock(ShardingTableRuleConfiguration.class)));
-
when(config.getAutoTables()).thenReturn(Collections.singleton(mock(ShardingAutoTableRuleConfiguration.class)));
- ShardingStrategyConfiguration shardingStrategyConfig =
mock(ShardingStrategyConfiguration.class);
-
when(shardingStrategyConfig.getShardingAlgorithmName()).thenReturn("t_order_inline");
-
when(config.getDefaultTableShardingStrategy()).thenReturn(shardingStrategyConfig);
-
when(config.getShardingAlgorithms()).thenReturn(Collections.singletonMap("t_order_inline",
mock(ShardingAlgorithm.class)));
- Optional<RuleConfigurationChecker> checker =
RuleConfigurationCheckerFactory.findInstance(config);
- assertTrue(checker.isPresent());
- assertThat(checker.get(),
instanceOf(AlgorithmProvidedShardingRuleConfigurationChecker.class));
- checker.get().check("test", config);
+ AlgorithmProvidedShardingRuleConfiguration configuration =
createConfiguration();
+ ShardingAuditStrategyConfiguration shardingAuditStrategyConfiguration
= createShardingAuditStrategyConfiguration();
+ ShardingStrategyConfiguration shardingStrategyConfiguration =
createShardingStrategyConfiguration();
+ configuration.setTables(Collections.singleton(
+
createShardingTableRuleConfiguration(configuration.getDefaultKeyGenerateStrategy(),
shardingAuditStrategyConfiguration, shardingStrategyConfiguration)));
+ configuration.setAutoTables(Collections.singleton(
+
createShardingAutoTableRuleConfiguration(configuration.getDefaultKeyGenerateStrategy(),
shardingAuditStrategyConfiguration, shardingStrategyConfiguration)));
+ getChecker(configuration).check("foo_db", configuration);
}
-
- @SuppressWarnings({"rawtypes", "unchecked"})
+
+ @Test(expected = IllegalStateException.class)
+ public void assertCheckTableConfigurationInitFail() {
+ AlgorithmProvidedShardingRuleConfiguration configuration =
createConfiguration();
+ getChecker(configuration).check("foo_db", configuration);
+ }
+
@Test(expected = IllegalStateException.class)
- public void assertCheckNoPass() {
- AlgorithmProvidedShardingRuleConfiguration config =
mock(AlgorithmProvidedShardingRuleConfiguration.class);
- when(config.getTables()).thenReturn(Collections.emptyList());
- when(config.getAutoTables()).thenReturn(Collections.emptyList());
- Optional<RuleConfigurationChecker> checker =
RuleConfigurationCheckerFactory.findInstance(config);
- assertTrue(checker.isPresent());
- assertThat(checker.get(),
instanceOf(AlgorithmProvidedShardingRuleConfigurationChecker.class));
- checker.get().check("test", config);
+ public void assertCheckTableConfigurationFail() {
+ AlgorithmProvidedShardingRuleConfiguration configuration =
createConfiguration();
+
configuration.setTables(Collections.singletonList(createShardingTableRuleConfiguration(null,
null, null)));
+
configuration.setAutoTables(Collections.singleton(createShardingAutoTableRuleConfiguration(null,
null, null)));
+ getChecker(configuration).check("foo_db", configuration);
+ }
+
+ private AlgorithmProvidedShardingRuleConfiguration createConfiguration() {
+ AlgorithmProvidedShardingRuleConfiguration configuration = new
AlgorithmProvidedShardingRuleConfiguration();
+
+ KeyGenerateStrategyConfiguration keyGenerateStrategyConfiguration =
new KeyGenerateStrategyConfiguration("foo_column",
+ "foo_db");
+
configuration.setDefaultKeyGenerateStrategy(keyGenerateStrategyConfiguration);
+ configuration.getKeyGenerators().put("foo_db",
mock(KeyGenerateAlgorithm.class));
+ configuration.getAuditors().put("foo_audit",
mock(ShardingAuditAlgorithm.class));
+ configuration.getShardingAlgorithms().put("foo_algorithm",
mock(ShardingAlgorithm.class));
+ return configuration;
+ }
+
+ private ShardingAuditStrategyConfiguration
createShardingAuditStrategyConfiguration() {
+ ShardingAuditStrategyConfiguration shardingAuditStrategyConfiguration
= new
ShardingAuditStrategyConfiguration(Collections.singletonList("foo_audit"),
false);
+ return shardingAuditStrategyConfiguration;
+ }
+
+ private ShardingStrategyConfiguration
createShardingStrategyConfiguration() {
+ ShardingStrategyConfiguration shardingStrategyConfiguration =
mock(ShardingStrategyConfiguration.class);
+
when(shardingStrategyConfiguration.getShardingAlgorithmName()).thenReturn("foo_algorithm");
+ return shardingStrategyConfiguration;
+ }
+
+ private ShardingTableRuleConfiguration
createShardingTableRuleConfiguration(final KeyGenerateStrategyConfiguration
keyGenerateStrategyConfiguration,
+
final ShardingAuditStrategyConfiguration shardingAuditStrategyConfiguration,
+
final ShardingStrategyConfiguration shardingStrategyConfiguration) {
+ ShardingTableRuleConfiguration shardingTableRuleConfiguration = new
ShardingTableRuleConfiguration("foo_ltb");
+
shardingTableRuleConfiguration.setKeyGenerateStrategy(keyGenerateStrategyConfiguration
== null ? mock(KeyGenerateStrategyConfiguration.class) :
keyGenerateStrategyConfiguration);
+
shardingTableRuleConfiguration.setAuditStrategy(shardingAuditStrategyConfiguration
== null ? mock(ShardingAuditStrategyConfiguration.class) :
shardingAuditStrategyConfiguration);
+
shardingTableRuleConfiguration.setDatabaseShardingStrategy(shardingStrategyConfiguration
== null ? mock(ShardingStrategyConfiguration.class) :
shardingStrategyConfiguration);
+
shardingTableRuleConfiguration.setTableShardingStrategy(shardingStrategyConfiguration
== null ? mock(ShardingStrategyConfiguration.class) :
shardingStrategyConfiguration);
+ return shardingTableRuleConfiguration;
+ }
+
+ private ShardingAutoTableRuleConfiguration
createShardingAutoTableRuleConfiguration(final KeyGenerateStrategyConfiguration
keyGenerateStrategyConfiguration,
+
final ShardingAuditStrategyConfiguration
shardingAuditStrategyConfiguration,
+
final ShardingStrategyConfiguration shardingStrategyConfiguration) {
+ ShardingAutoTableRuleConfiguration shardingAutoTableRuleConfiguration
= mock(ShardingAutoTableRuleConfiguration.class);
+ when(shardingAutoTableRuleConfiguration.getKeyGenerateStrategy())
+ .thenReturn(keyGenerateStrategyConfiguration == null ?
mock(KeyGenerateStrategyConfiguration.class) :
keyGenerateStrategyConfiguration);
+ when(shardingAutoTableRuleConfiguration.getAuditStrategy())
+ .thenReturn(shardingAuditStrategyConfiguration == null ?
mock(ShardingAuditStrategyConfiguration.class) :
shardingAuditStrategyConfiguration);
+ when(shardingAutoTableRuleConfiguration.getShardingStrategy())
+ .thenReturn(shardingStrategyConfiguration == null ?
mock(ShardingStrategyConfiguration.class) : shardingStrategyConfiguration);
+ return shardingAutoTableRuleConfiguration;
+ }
+
+ private RuleConfigurationChecker getChecker(final
AlgorithmProvidedShardingRuleConfiguration configuration) {
+ Optional<RuleConfigurationChecker> checkerOptional =
RuleConfigurationCheckerFactory.findInstance(configuration);
+ return checkerOptional.get();
}
}
diff --git
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/checker/ShardingRuleConfigurationCheckerTest.java
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/checker/ShardingRuleConfigurationCheckerTest.java
index 106aab72ae2..d499a5e86c9 100644
---
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/checker/ShardingRuleConfigurationCheckerTest.java
+++
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/checker/ShardingRuleConfigurationCheckerTest.java
@@ -23,55 +23,98 @@ import
org.apache.shardingsphere.infra.config.checker.RuleConfigurationCheckerFa
import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
import
org.apache.shardingsphere.sharding.api.config.rule.ShardingAutoTableRuleConfiguration;
import
org.apache.shardingsphere.sharding.api.config.rule.ShardingTableRuleConfiguration;
+import
org.apache.shardingsphere.sharding.api.config.strategy.audit.ShardingAuditStrategyConfiguration;
+import
org.apache.shardingsphere.sharding.api.config.strategy.keygen.KeyGenerateStrategyConfiguration;
import
org.apache.shardingsphere.sharding.api.config.strategy.sharding.ShardingStrategyConfiguration;
import org.junit.Test;
import java.util.Collections;
import java.util.Optional;
-import static org.hamcrest.CoreMatchers.instanceOf;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
public final class ShardingRuleConfigurationCheckerTest {
-
+
@SuppressWarnings({"rawtypes", "unchecked"})
@Test
- public void assertValidCheck() {
- ShardingRuleConfiguration config = getValidConfiguration();
- Optional<RuleConfigurationChecker> checker =
RuleConfigurationCheckerFactory.findInstance(config);
- assertTrue(checker.isPresent());
- assertThat(checker.get(),
instanceOf(ShardingRuleConfigurationChecker.class));
- checker.get().check("test", config);
+ public void assertCheckPass() {
+ ShardingRuleConfiguration configuration = createConfiguration();
+ ShardingAuditStrategyConfiguration shardingAuditStrategyConfiguration
+ = createShardingAuditStrategyConfiguration();
+ ShardingStrategyConfiguration shardingStrategyConfiguration =
createShardingStrategyConfiguration();
+ configuration.setTables(Collections.singleton(
+
createShardingTableRuleConfiguration(configuration.getDefaultKeyGenerateStrategy(),
shardingAuditStrategyConfiguration, shardingStrategyConfiguration)));
+ configuration.setAutoTables(Collections.singleton(
+
createShardingAutoTableRuleConfiguration(configuration.getDefaultKeyGenerateStrategy(),
shardingAuditStrategyConfiguration, shardingStrategyConfiguration)));
+
+ RuleConfigurationChecker checker = getChecker(configuration);
+ checker.check("foo_db", configuration);
}
-
- private ShardingRuleConfiguration getValidConfiguration() {
- ShardingRuleConfiguration result =
mock(ShardingRuleConfiguration.class);
-
when(result.getTables()).thenReturn(Collections.singleton(mock(ShardingTableRuleConfiguration.class)));
-
when(result.getAutoTables()).thenReturn(Collections.singleton(mock(ShardingAutoTableRuleConfiguration.class)));
- ShardingStrategyConfiguration shardingStrategyConfig =
mock(ShardingStrategyConfiguration.class);
-
when(shardingStrategyConfig.getShardingAlgorithmName()).thenReturn("t_order_inline");
-
when(result.getDefaultTableShardingStrategy()).thenReturn(shardingStrategyConfig);
-
when(result.getShardingAlgorithms()).thenReturn(Collections.singletonMap("t_order_inline",
mock(ShardingSphereAlgorithmConfiguration.class)));
- return result;
+
+ @Test(expected = IllegalStateException.class)
+ public void assertCheckTableConfigurationInitFail() {
+ ShardingRuleConfiguration configuration = createConfiguration();
+ getChecker(configuration).check("foo_db", configuration);
}
-
- @SuppressWarnings({"rawtypes", "unchecked"})
+
@Test(expected = IllegalStateException.class)
- public void assertInvalidCheck() {
- ShardingRuleConfiguration config = getInvalidConfiguration();
- Optional<RuleConfigurationChecker> checker =
RuleConfigurationCheckerFactory.findInstance(config);
- assertTrue(checker.isPresent());
- assertThat(checker.get(),
instanceOf(ShardingRuleConfigurationChecker.class));
- checker.get().check("test", config);
+ public void assertCheckTableConfigurationFail() {
+ ShardingRuleConfiguration configuration = createConfiguration();
+
configuration.setTables(Collections.singletonList(createShardingTableRuleConfiguration(null,
null, null)));
+
configuration.setAutoTables(Collections.singleton(createShardingAutoTableRuleConfiguration(null,
null, null)));
+ getChecker(configuration).check("foo_db", configuration);
+ }
+
+ private ShardingRuleConfiguration createConfiguration() {
+ ShardingRuleConfiguration configuration = new
ShardingRuleConfiguration();
+
+ KeyGenerateStrategyConfiguration keyGenerateStrategyConfiguration =
new KeyGenerateStrategyConfiguration("foo_column",
+ "foo_key");
+
configuration.setDefaultKeyGenerateStrategy(keyGenerateStrategyConfiguration);
+ configuration.getKeyGenerators().put("foo_key",
mock(ShardingSphereAlgorithmConfiguration.class));
+ configuration.getAuditors().put("foo_audit",
mock(ShardingSphereAlgorithmConfiguration.class));
+ configuration.getShardingAlgorithms().put("foo_algorithm",
mock(ShardingSphereAlgorithmConfiguration.class));
+ return configuration;
}
-
- private ShardingRuleConfiguration getInvalidConfiguration() {
- ShardingRuleConfiguration result =
mock(ShardingRuleConfiguration.class);
- when(result.getTables()).thenReturn(Collections.emptyList());
- when(result.getAutoTables()).thenReturn(Collections.emptyList());
- return result;
+
+ private ShardingAuditStrategyConfiguration
createShardingAuditStrategyConfiguration() {
+ ShardingAuditStrategyConfiguration shardingAuditStrategyConfiguration
= new
ShardingAuditStrategyConfiguration(Collections.singletonList("foo_audit"),
false);
+ return shardingAuditStrategyConfiguration;
+ }
+
+ private ShardingStrategyConfiguration
createShardingStrategyConfiguration() {
+ ShardingStrategyConfiguration shardingStrategyConfiguration =
mock(ShardingStrategyConfiguration.class);
+
when(shardingStrategyConfiguration.getShardingAlgorithmName()).thenReturn("foo_algorithm");
+ return shardingStrategyConfiguration;
+ }
+
+ private ShardingTableRuleConfiguration
createShardingTableRuleConfiguration(final KeyGenerateStrategyConfiguration
keyGenerateStrategyConfiguration,
+
final ShardingAuditStrategyConfiguration shardingAuditStrategyConfiguration,
+
final ShardingStrategyConfiguration shardingStrategyConfiguration) {
+ ShardingTableRuleConfiguration shardingTableRuleConfiguration = new
ShardingTableRuleConfiguration("foo_ltb");
+
shardingTableRuleConfiguration.setKeyGenerateStrategy(keyGenerateStrategyConfiguration
== null ? mock(KeyGenerateStrategyConfiguration.class) :
keyGenerateStrategyConfiguration);
+
shardingTableRuleConfiguration.setAuditStrategy(shardingAuditStrategyConfiguration
== null ? mock(ShardingAuditStrategyConfiguration.class) :
shardingAuditStrategyConfiguration);
+
shardingTableRuleConfiguration.setDatabaseShardingStrategy(shardingStrategyConfiguration
== null ? mock(ShardingStrategyConfiguration.class) :
shardingStrategyConfiguration);
+
shardingTableRuleConfiguration.setTableShardingStrategy(shardingStrategyConfiguration
== null ? mock(ShardingStrategyConfiguration.class) :
shardingStrategyConfiguration);
+ return shardingTableRuleConfiguration;
+ }
+
+ private ShardingAutoTableRuleConfiguration
createShardingAutoTableRuleConfiguration(final KeyGenerateStrategyConfiguration
keyGenerateStrategyConfiguration,
+
final ShardingAuditStrategyConfiguration
shardingAuditStrategyConfiguration,
+
final ShardingStrategyConfiguration shardingStrategyConfiguration) {
+ ShardingAutoTableRuleConfiguration shardingAutoTableRuleConfiguration
= mock(ShardingAutoTableRuleConfiguration.class);
+ when(shardingAutoTableRuleConfiguration.getKeyGenerateStrategy())
+ .thenReturn(keyGenerateStrategyConfiguration == null ?
mock(KeyGenerateStrategyConfiguration.class) :
keyGenerateStrategyConfiguration);
+ when(shardingAutoTableRuleConfiguration.getAuditStrategy())
+ .thenReturn(shardingAuditStrategyConfiguration == null ?
mock(ShardingAuditStrategyConfiguration.class) :
shardingAuditStrategyConfiguration);
+ when(shardingAutoTableRuleConfiguration.getShardingStrategy())
+ .thenReturn(shardingStrategyConfiguration == null ?
mock(ShardingStrategyConfiguration.class) : shardingStrategyConfiguration);
+ return shardingAutoTableRuleConfiguration;
+ }
+
+ private RuleConfigurationChecker getChecker(final
ShardingRuleConfiguration configuration) {
+ Optional<RuleConfigurationChecker> checkerOptional =
RuleConfigurationCheckerFactory.findInstance(configuration);
+ return checkerOptional.get();
}
}