提交 5de1d593 编写于 作者: 马晓光

add test case for spring boot start

上级 8616c093
......@@ -20,6 +20,8 @@ package io.shardingsphere.shardingjdbc.spring.boot.type;
import io.shardingsphere.api.ConfigMapContext;
import io.shardingsphere.core.constant.properties.ShardingProperties;
import io.shardingsphere.core.constant.properties.ShardingPropertiesConstant;
import io.shardingsphere.core.rule.ShardingRule;
import io.shardingsphere.core.rule.TableRule;
import io.shardingsphere.shardingjdbc.jdbc.core.ShardingContext;
import io.shardingsphere.shardingjdbc.jdbc.core.datasource.ShardingDataSource;
import lombok.SneakyThrows;
......@@ -35,6 +37,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import javax.annotation.Resource;
import javax.sql.DataSource;
import java.lang.reflect.Field;
import java.util.LinkedList;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
......@@ -73,6 +76,45 @@ public class SpringBootShardingTest {
assertThat((Integer) shardingProperties.getValue(ShardingPropertiesConstant.EXECUTOR_SIZE), is(100));
}
@Test
public void assertWithShardingRule() {
ShardingContext shardingContext = getFieldValue("shardingContext", ShardingDataSource.class, dataSource);
ShardingRule shardingRule = shardingContext.getShardingRule();
assertThat(shardingRule.getShardingDataSourceNames().getDataSourceNames().size(), is(3));
assertTrue(shardingRule.getShardingDataSourceNames().getDataSourceNames().contains("ds"));
assertTrue(shardingRule.getShardingDataSourceNames().getDataSourceNames().contains("ds_0"));
assertTrue(shardingRule.getShardingDataSourceNames().getDataSourceNames().contains("ds_1"));
assertThat(shardingRule.getTableRules().size(), is(2));
TableRule tableRule1 = ((LinkedList<TableRule>) shardingRule.getTableRules()).get(0);
assertThat(tableRule1.getLogicTable(), is("t_order"));
assertThat(tableRule1.getActualDataNodes().size(), is(4));
assertThat(tableRule1.getActualDataNodes().get(0).getDataSourceName(), is("ds_0"));
assertThat(tableRule1.getActualDataNodes().get(0).getTableName(), is("t_order_0"));
assertThat(tableRule1.getActualDataNodes().get(1).getDataSourceName(), is("ds_0"));
assertThat(tableRule1.getActualDataNodes().get(1).getTableName(), is("t_order_1"));
assertThat(tableRule1.getActualDataNodes().get(2).getDataSourceName(), is("ds_1"));
assertThat(tableRule1.getActualDataNodes().get(2).getTableName(), is("t_order_0"));
assertThat(tableRule1.getActualDataNodes().get(3).getDataSourceName(), is("ds_1"));
assertThat(tableRule1.getActualDataNodes().get(3).getTableName(), is("t_order_1"));
assertThat(tableRule1.getGenerateKeyColumn(), is("order_id"));
TableRule tableRule2 = ((LinkedList<TableRule>) shardingRule.getTableRules()).get(1);
assertThat(tableRule2.getLogicTable(), is("t_order_item"));
assertThat(tableRule2.getActualDataNodes().size(), is(4));
assertThat(tableRule2.getActualDataNodes().get(0).getDataSourceName(), is("ds_0"));
assertThat(tableRule2.getActualDataNodes().get(0).getTableName(), is("t_order_item_0"));
assertThat(tableRule2.getActualDataNodes().get(1).getDataSourceName(), is("ds_0"));
assertThat(tableRule2.getActualDataNodes().get(1).getTableName(), is("t_order_item_1"));
assertThat(tableRule2.getActualDataNodes().get(2).getDataSourceName(), is("ds_1"));
assertThat(tableRule2.getActualDataNodes().get(2).getTableName(), is("t_order_item_0"));
assertThat(tableRule2.getActualDataNodes().get(3).getDataSourceName(), is("ds_1"));
assertThat(tableRule2.getActualDataNodes().get(3).getTableName(), is("t_order_item_1"));
assertThat(tableRule2.getGenerateKeyColumn(), is("order_item_id"));
assertThat(shardingRule.getBindingTableRules().size(), is(0));
assertThat(shardingRule.getBroadcastTables().size(), is(1));
assertThat(shardingRule.getBroadcastTables().iterator().next(), is("t_config"));
}
@SuppressWarnings("unchecked")
@SneakyThrows
private <T> T getFieldValue(final String fieldName, final Class<?> fieldClass, final Object target) {
......
......@@ -31,6 +31,7 @@ sharding.jdbc.config.sharding.tables.t_order_item.actual-data-nodes=ds_${0..1}.t
sharding.jdbc.config.sharding.tables.t_order_item.table-strategy.inline.sharding-column=order_id
sharding.jdbc.config.sharding.tables.t_order_item.table-strategy.inline.algorithm-expression=t_order_item_${order_id % 2}
sharding.jdbc.config.sharding.tables.t_order_item.key-generator-column-name=order_item_id
sharding.jdbc.config.sharding.broadcast-tables=t_config
sharding.jdbc.config.props.sql.show=true
sharding.jdbc.config.props.executor.size=100
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册