提交 696009c0 编写于 作者: S sunbufu

1. add not null judge for ShardingDataSourceNames's constructor and unit test

2. add not null judge for ShardingRule's constructor and unit test
上级 ae3ea6a8
......@@ -17,6 +17,7 @@
package org.apache.shardingsphere.core.rule;
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
import lombok.Getter;
import org.apache.shardingsphere.api.config.masterslave.MasterSlaveRuleConfiguration;
......@@ -41,6 +42,7 @@ public final class ShardingDataSourceNames {
private final Collection<String> dataSourceNames;
public ShardingDataSourceNames(final ShardingRuleConfiguration shardingRuleConfig, final Collection<String> rawDataSourceNames) {
Preconditions.checkArgument(null != shardingRuleConfig, "can not construct ShardingDataSourceNames with null ShardingRuleConfig");
this.shardingRuleConfig = shardingRuleConfig;
dataSourceNames = getAllDataSourceNames(rawDataSourceNames);
}
......
......@@ -73,7 +73,8 @@ public class ShardingRule implements BaseRule {
private final EncryptRule encryptRule;
public ShardingRule(final ShardingRuleConfiguration shardingRuleConfig, final Collection<String> dataSourceNames) {
Preconditions.checkArgument(!dataSourceNames.isEmpty(), "Data sources cannot be empty.");
Preconditions.checkArgument(null != shardingRuleConfig, "ShardingRuleConfig cannot be null.");
Preconditions.checkArgument(null != dataSourceNames && !dataSourceNames.isEmpty(), "Data sources cannot be empty.");
this.shardingRuleConfig = shardingRuleConfig;
shardingDataSourceNames = new ShardingDataSourceNames(shardingRuleConfig, dataSourceNames);
tableRules = createTableRules(shardingRuleConfig);
......
......@@ -31,6 +31,7 @@ import java.util.Collections;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.fail;
public final class ShardingDataSourceNamesTest {
......@@ -90,4 +91,15 @@ public final class ShardingDataSourceNamesTest {
String actual = new ShardingDataSourceNames(shardingRuleConfig, Arrays.asList("master_ds", "slave_ds")).getRawMasterDataSourceName("default_ds");
assertThat(actual, is("default_ds"));
}
@Test
public void assertConstructShardingDataSourceNamesWithNullShardingRuleConfiguration() {
try {
new ShardingDataSourceNames(null, Arrays.asList("master_ds", "slave_ds")).getRawMasterDataSourceName("default_ds");
fail("should throw a IllegalArgumentException when execute ShardingDataSourceNames's constructor with null ShardingRuleConfig");
} catch (IllegalArgumentException ignored){
} catch (Exception ex){
fail("should throw a IllegalArgumentException when execute ShardingDataSourceNames's construction with null ShardingRuleConfig");
}
}
}
......@@ -43,6 +43,7 @@ import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
......@@ -328,6 +329,33 @@ public final class ShardingRuleTest {
ShardingRule actual = createMaximumShardingRule();
assertThat(actual.getShardingLogicTableNames(Arrays.asList("LOGIC_TABLE", "BROADCAST_TABLE")), CoreMatchers.<Collection<String>>is(Collections.singletonList("LOGIC_TABLE")));
}
@Test
public void assertConstructShardingRuleWithNullShardingRuleConfiguration(){
try {
new ShardingRule(null, createDataSourceNames());
fail("should throw a IllegalArgumentException when execute ShardingRule's constructor with null ShardingRuleConfiguration");
} catch (IllegalArgumentException ignored){
} catch (Exception ex){
fail("should throw a IllegalArgumentException when execute ShardingRule's construction with null ShardingRuleConfiguration");
}
}
@Test
public void assertConstructShardingRuleWithNullDataSourceNames(){
ShardingRuleConfiguration shardingRuleConfiguration = new ShardingRuleConfiguration();
TableRuleConfiguration tableRuleConfiguration = createTableRuleConfiguration("LOGIC_TABLE", "ms_ds_${0..1}.table_${0..2}");
shardingRuleConfiguration.getTableRuleConfigs().add(tableRuleConfiguration);
shardingRuleConfiguration.getMasterSlaveRuleConfigs().add(createMasterSlaveRuleConfiguration("ms_ds_0", "master_ds_0", "slave_ds_0"));
shardingRuleConfiguration.getMasterSlaveRuleConfigs().add(createMasterSlaveRuleConfiguration("ms_ds_1", "master_ds_1", "slave_ds_1"));
try {
new ShardingRule(shardingRuleConfiguration, null);
fail("should throw a IllegalArgumentException when execute ShardingRule's constructor with null DataSourceNames");
} catch (IllegalArgumentException ignored){
} catch (Exception ex){
fail("should throw a IllegalArgumentException when execute ShardingRule's construction with null DataSourceNames");
}
}
private ShardingRule createMaximumShardingRule() {
ShardingRuleConfiguration shardingRuleConfiguration = new ShardingRuleConfiguration();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册