Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
Shardingsphere
提交
242acb80
Shardingsphere
项目概览
apache
/
Shardingsphere
通知
56
Star
3
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Shardingsphere
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
242acb80
编写于
3月 24, 2018
作者:
T
terrymanu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
For #647: add YamlShardingRuleConfiguration test case
上级
cf082b3c
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
365 addition
and
12 deletion
+365
-12
sharding-core/src/main/java/io/shardingjdbc/core/yaml/sharding/YamlShardingRuleConfiguration.java
...dbc/core/yaml/sharding/YamlShardingRuleConfiguration.java
+10
-9
sharding-core/src/main/java/io/shardingjdbc/core/yaml/sharding/YamlTableRuleConfiguration.java
...ngjdbc/core/yaml/sharding/YamlTableRuleConfiguration.java
+0
-1
sharding-core/src/test/java/io/shardingjdbc/core/yaml/AllYamlTests.java
...src/test/java/io/shardingjdbc/core/yaml/AllYamlTests.java
+6
-0
sharding-core/src/test/java/io/shardingjdbc/core/yaml/masterslave/YamlMasterSlaveRuleConfigurationTest.java
...aml/masterslave/YamlMasterSlaveRuleConfigurationTest.java
+1
-2
sharding-core/src/test/java/io/shardingjdbc/core/yaml/sharding/YamlShardingConfigurationTest.java
...dbc/core/yaml/sharding/YamlShardingConfigurationTest.java
+1
-0
sharding-core/src/test/java/io/shardingjdbc/core/yaml/sharding/YamlShardingRuleConfigurationTest.java
...core/yaml/sharding/YamlShardingRuleConfigurationTest.java
+115
-0
sharding-core/src/test/java/io/shardingjdbc/core/yaml/sharding/YamlShardingStrategyConfigurationTest.java
.../yaml/sharding/YamlShardingStrategyConfigurationTest.java
+143
-0
sharding-core/src/test/java/io/shardingjdbc/core/yaml/sharding/YamlTableRuleConfigurationTest.java
...bc/core/yaml/sharding/YamlTableRuleConfigurationTest.java
+88
-0
sharding-core/src/test/resources/yaml/sharding-rule.yaml
sharding-core/src/test/resources/yaml/sharding-rule.yaml
+1
-0
未找到文件。
sharding-core/src/main/java/io/shardingjdbc/core/yaml/sharding/YamlShardingRuleConfiguration.java
浏览文件 @
242acb80
...
...
@@ -29,6 +29,7 @@ import java.util.HashMap;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map.Entry
;
import
java.util.Properties
;
import
java.util.concurrent.ConcurrentHashMap
;
...
...
@@ -60,14 +61,14 @@ public class YamlShardingRuleConfiguration {
private
Properties
props
=
new
Properties
();
/**
* Get sharding rule configuration
from yaml
.
* Get sharding rule configuration.
*
* @return sharding rule configuration
from yaml
* @return sharding rule configuration
*/
public
ShardingRuleConfiguration
getShardingRuleConfiguration
()
{
ShardingRuleConfiguration
result
=
new
ShardingRuleConfiguration
();
result
.
setDefaultDataSourceName
(
defaultDataSourceName
);
for
(
Map
.
Entry
<
String
,
YamlTableRuleConfiguration
>
entry
:
tables
.
entrySet
())
{
for
(
Entry
<
String
,
YamlTableRuleConfiguration
>
entry
:
tables
.
entrySet
())
{
YamlTableRuleConfiguration
tableRuleConfig
=
entry
.
getValue
();
tableRuleConfig
.
setLogicTable
(
entry
.
getKey
());
result
.
getTableRuleConfigs
().
add
(
tableRuleConfig
.
build
());
...
...
@@ -81,13 +82,13 @@ public class YamlShardingRuleConfiguration {
}
result
.
setDefaultKeyGeneratorClass
(
defaultKeyGeneratorClass
);
Collection
<
MasterSlaveRuleConfiguration
>
masterSlaveRuleConfigs
=
new
LinkedList
<>();
for
(
Map
.
Entry
<
String
,
YamlMasterSlaveRuleConfiguration
>
each
:
masterSlaveRules
.
entrySet
())
{
for
(
Entry
<
String
,
YamlMasterSlaveRuleConfiguration
>
entry
:
masterSlaveRules
.
entrySet
())
{
MasterSlaveRuleConfiguration
msRuleConfig
=
new
MasterSlaveRuleConfiguration
();
msRuleConfig
.
setName
(
e
ach
.
getKey
());
msRuleConfig
.
setMasterDataSourceName
(
e
ach
.
getValue
().
getMasterDataSourceName
());
msRuleConfig
.
setSlaveDataSourceNames
(
e
ach
.
getValue
().
getSlaveDataSourceNames
());
msRuleConfig
.
setLoadBalanceAlgorithmType
(
e
ach
.
getValue
().
getLoadBalanceAlgorithmType
());
msRuleConfig
.
setLoadBalanceAlgorithmClassName
(
e
ach
.
getValue
().
getLoadBalanceAlgorithmClassName
());
msRuleConfig
.
setName
(
e
ntry
.
getKey
());
msRuleConfig
.
setMasterDataSourceName
(
e
ntry
.
getValue
().
getMasterDataSourceName
());
msRuleConfig
.
setSlaveDataSourceNames
(
e
ntry
.
getValue
().
getSlaveDataSourceNames
());
msRuleConfig
.
setLoadBalanceAlgorithmType
(
e
ntry
.
getValue
().
getLoadBalanceAlgorithmType
());
msRuleConfig
.
setLoadBalanceAlgorithmClassName
(
e
ntry
.
getValue
().
getLoadBalanceAlgorithmClassName
());
masterSlaveRuleConfigs
.
add
(
msRuleConfig
);
}
result
.
setMasterSlaveRuleConfigs
(
masterSlaveRuleConfigs
);
...
...
sharding-core/src/main/java/io/shardingjdbc/core/yaml/sharding/YamlTableRuleConfiguration.java
浏览文件 @
242acb80
...
...
@@ -55,7 +55,6 @@ public class YamlTableRuleConfiguration {
TableRuleConfiguration
result
=
new
TableRuleConfiguration
();
result
.
setLogicTable
(
logicTable
);
result
.
setActualDataNodes
(
actualDataNodes
);
result
.
setLogicTable
(
logicTable
);
if
(
null
!=
databaseStrategy
)
{
result
.
setDatabaseShardingStrategyConfig
(
databaseStrategy
.
build
());
}
...
...
sharding-core/src/test/java/io/shardingjdbc/core/yaml/AllYamlTests.java
浏览文件 @
242acb80
...
...
@@ -20,6 +20,9 @@ package io.shardingjdbc.core.yaml;
import
io.shardingjdbc.core.yaml.masterslave.YamlMasterSlaveConfigurationTest
;
import
io.shardingjdbc.core.yaml.masterslave.YamlMasterSlaveRuleConfigurationTest
;
import
io.shardingjdbc.core.yaml.sharding.YamlShardingConfigurationTest
;
import
io.shardingjdbc.core.yaml.sharding.YamlShardingRuleConfigurationTest
;
import
io.shardingjdbc.core.yaml.sharding.YamlShardingStrategyConfigurationTest
;
import
io.shardingjdbc.core.yaml.sharding.YamlTableRuleConfigurationTest
;
import
org.junit.runner.RunWith
;
import
org.junit.runners.Suite
;
import
org.junit.runners.Suite.SuiteClasses
;
...
...
@@ -27,6 +30,9 @@ import org.junit.runners.Suite.SuiteClasses;
@RunWith
(
Suite
.
class
)
@SuiteClasses
({
YamlShardingConfigurationTest
.
class
,
YamlShardingRuleConfigurationTest
.
class
,
YamlTableRuleConfigurationTest
.
class
,
YamlShardingStrategyConfigurationTest
.
class
,
YamlMasterSlaveConfigurationTest
.
class
,
YamlMasterSlaveRuleConfigurationTest
.
class
})
...
...
sharding-core/src/test/java/io/shardingjdbc/core/yaml/masterslave/YamlMasterSlaveRuleConfigurationTest.java
浏览文件 @
242acb80
...
...
@@ -32,8 +32,7 @@ public final class YamlMasterSlaveRuleConfigurationTest {
@Test
public
void
assertGetMasterSlaveRuleConfiguration
()
{
MasterSlaveRuleConfiguration
actual
=
createYamlMasterSlaveRuleConfig
().
getMasterSlaveRuleConfiguration
();
assertMasterSlaveRuleConfig
(
actual
);
assertMasterSlaveRuleConfig
(
createYamlMasterSlaveRuleConfig
().
getMasterSlaveRuleConfiguration
());
}
private
YamlMasterSlaveRuleConfiguration
createYamlMasterSlaveRuleConfig
()
{
...
...
sharding-core/src/test/java/io/shardingjdbc/core/yaml/sharding/YamlShardingConfigurationTest.java
浏览文件 @
242acb80
...
...
@@ -104,6 +104,7 @@ public final class YamlShardingConfigurationTest {
assertThat
(
actual
.
getShardingRule
().
getTables
().
get
(
"t_order"
).
getTableStrategy
().
getInline
().
getAlgorithmExpression
(),
is
(
"t_order_${order_id % 2}"
));
assertThat
(
actual
.
getShardingRule
().
getTables
().
get
(
"t_order"
).
getKeyGeneratorColumnName
(),
is
(
"order_id"
));
assertThat
(
actual
.
getShardingRule
().
getTables
().
get
(
"t_order"
).
getKeyGeneratorClass
(),
is
(
"io.shardingjdbc.core.keygen.DefaultKeyGenerator"
));
assertThat
(
actual
.
getShardingRule
().
getTables
().
get
(
"t_order"
).
getLogicIndex
(),
is
(
"order_index"
));
}
private
void
assertTOrderItem
(
final
YamlShardingConfiguration
actual
)
{
...
...
sharding-core/src/test/java/io/shardingjdbc/core/yaml/sharding/YamlShardingRuleConfigurationTest.java
0 → 100644
浏览文件 @
242acb80
/*
* Copyright 1999-2015 dangdang.com.
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* </p>
*/
package
io.shardingjdbc.core.yaml.sharding
;
import
io.shardingjdbc.core.api.algorithm.masterslave.MasterSlaveLoadBalanceAlgorithmType
;
import
io.shardingjdbc.core.api.config.MasterSlaveRuleConfiguration
;
import
io.shardingjdbc.core.api.config.ShardingRuleConfiguration
;
import
io.shardingjdbc.core.api.config.TableRuleConfiguration
;
import
io.shardingjdbc.core.api.config.strategy.NoneShardingStrategyConfiguration
;
import
io.shardingjdbc.core.keygen.DefaultKeyGenerator
;
import
io.shardingjdbc.core.yaml.masterslave.YamlMasterSlaveRuleConfiguration
;
import
io.shardingjdbc.core.yaml.sharding.strategy.YamlNoneShardingStrategyConfiguration
;
import
org.hamcrest.CoreMatchers
;
import
org.junit.Test
;
import
java.util.Arrays
;
import
java.util.Collection
;
import
java.util.Iterator
;
import
static
org
.
hamcrest
.
CoreMatchers
.
instanceOf
;
import
static
org
.
hamcrest
.
CoreMatchers
.
is
;
import
static
org
.
junit
.
Assert
.
assertNull
;
import
static
org
.
junit
.
Assert
.
assertThat
;
public
final
class
YamlShardingRuleConfigurationTest
{
@Test
public
void
assertGetShardingRuleConfigurationWithoutDefaultStrategy
()
{
ShardingRuleConfiguration
actual
=
createYamlShardingRuleConfigWithoutDefaultStrategy
().
getShardingRuleConfiguration
();
assertShardingRuleConfig
(
actual
);
assertWithoutDefaultStrategy
(
actual
);
}
@Test
public
void
assertGetShardingRuleConfigurationWithDefaultStrategy
()
{
ShardingRuleConfiguration
actual
=
createYamlShardingRuleConfigWithDefaultStrategy
().
getShardingRuleConfiguration
();
assertShardingRuleConfig
(
actual
);
assertWithDefaultStrategy
(
actual
);
}
private
YamlShardingRuleConfiguration
createYamlShardingRuleConfigWithoutDefaultStrategy
()
{
YamlShardingRuleConfiguration
result
=
new
YamlShardingRuleConfiguration
();
result
.
setDefaultDataSourceName
(
"default_ds"
);
result
.
getTables
().
put
(
"t_order"
,
new
YamlTableRuleConfiguration
());
result
.
getTables
().
put
(
"t_order_item"
,
new
YamlTableRuleConfiguration
());
result
.
getBindingTables
().
add
(
"t_order, t_order_item"
);
result
.
setDefaultKeyGeneratorClass
(
DefaultKeyGenerator
.
class
.
getName
());
result
.
getMasterSlaveRules
().
put
(
"master_slave_ds"
,
createYamlMasterSlaveRuleConfig
());
return
result
;
}
private
YamlShardingRuleConfiguration
createYamlShardingRuleConfigWithDefaultStrategy
()
{
YamlShardingRuleConfiguration
result
=
createYamlShardingRuleConfigWithoutDefaultStrategy
();
YamlShardingStrategyConfiguration
yamlShardingStrategyConfig
=
new
YamlShardingStrategyConfiguration
();
yamlShardingStrategyConfig
.
setNone
(
new
YamlNoneShardingStrategyConfiguration
());
result
.
setDefaultDatabaseStrategy
(
yamlShardingStrategyConfig
);
result
.
setDefaultTableStrategy
(
yamlShardingStrategyConfig
);
return
result
;
}
private
YamlMasterSlaveRuleConfiguration
createYamlMasterSlaveRuleConfig
()
{
YamlMasterSlaveRuleConfiguration
result
=
new
YamlMasterSlaveRuleConfiguration
();
result
.
setName
(
"master_slave_ds"
);
result
.
setMasterDataSourceName
(
"master_ds"
);
result
.
setSlaveDataSourceNames
(
Arrays
.
asList
(
"slave_ds_0"
,
"slave_ds_1"
));
result
.
setLoadBalanceAlgorithmType
(
MasterSlaveLoadBalanceAlgorithmType
.
ROUND_ROBIN
);
result
.
setLoadBalanceAlgorithmClassName
(
"TestLoadBalanceAlgorithmClassName"
);
return
result
;
}
private
void
assertShardingRuleConfig
(
final
ShardingRuleConfiguration
actual
)
{
assertThat
(
actual
.
getDefaultDataSourceName
(),
is
(
"default_ds"
));
assertThat
(
actual
.
getTableRuleConfigs
().
size
(),
is
(
2
));
Iterator
<
TableRuleConfiguration
>
tableRuleConfigIterator
=
actual
.
getTableRuleConfigs
().
iterator
();
assertThat
(
tableRuleConfigIterator
.
next
().
getLogicTable
(),
is
(
"t_order"
));
assertThat
(
tableRuleConfigIterator
.
next
().
getLogicTable
(),
is
(
"t_order_item"
));
assertThat
(
actual
.
getBindingTableGroups
().
size
(),
is
(
1
));
assertThat
(
actual
.
getBindingTableGroups
().
iterator
().
next
(),
is
(
"t_order, t_order_item"
));
assertThat
(
actual
.
getDefaultKeyGeneratorClass
(),
is
(
DefaultKeyGenerator
.
class
.
getName
()));
assertMasterSlaveRuleConfig
(
actual
.
getMasterSlaveRuleConfigs
().
iterator
().
next
());
}
private
void
assertMasterSlaveRuleConfig
(
final
MasterSlaveRuleConfiguration
actual
)
{
assertThat
(
actual
.
getName
(),
is
(
"master_slave_ds"
));
assertThat
(
actual
.
getMasterDataSourceName
(),
is
(
"master_ds"
));
assertThat
(
actual
.
getSlaveDataSourceNames
(),
CoreMatchers
.<
Collection
<
String
>>
is
(
Arrays
.
asList
(
"slave_ds_0"
,
"slave_ds_1"
)));
assertThat
(
actual
.
getLoadBalanceAlgorithmType
(),
is
(
MasterSlaveLoadBalanceAlgorithmType
.
ROUND_ROBIN
));
assertThat
(
actual
.
getLoadBalanceAlgorithmClassName
(),
is
(
"TestLoadBalanceAlgorithmClassName"
));
}
private
void
assertWithoutDefaultStrategy
(
final
ShardingRuleConfiguration
actual
)
{
assertNull
(
actual
.
getDefaultDatabaseShardingStrategyConfig
());
assertNull
(
actual
.
getDefaultTableShardingStrategyConfig
());
}
private
void
assertWithDefaultStrategy
(
final
ShardingRuleConfiguration
actual
)
{
assertThat
(
actual
.
getDefaultDatabaseShardingStrategyConfig
(),
instanceOf
(
NoneShardingStrategyConfiguration
.
class
));
assertThat
(
actual
.
getDefaultTableShardingStrategyConfig
(),
instanceOf
(
NoneShardingStrategyConfiguration
.
class
));
}
}
sharding-core/src/test/java/io/shardingjdbc/core/yaml/sharding/YamlShardingStrategyConfigurationTest.java
0 → 100644
浏览文件 @
242acb80
/*
* Copyright 1999-2015 dangdang.com.
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* </p>
*/
package
io.shardingjdbc.core.yaml.sharding
;
import
io.shardingjdbc.core.api.config.strategy.ComplexShardingStrategyConfiguration
;
import
io.shardingjdbc.core.api.config.strategy.HintShardingStrategyConfiguration
;
import
io.shardingjdbc.core.api.config.strategy.InlineShardingStrategyConfiguration
;
import
io.shardingjdbc.core.api.config.strategy.NoneShardingStrategyConfiguration
;
import
io.shardingjdbc.core.api.config.strategy.StandardShardingStrategyConfiguration
;
import
io.shardingjdbc.core.yaml.sharding.strategy.YamlComplexShardingStrategyConfiguration
;
import
io.shardingjdbc.core.yaml.sharding.strategy.YamlHintShardingStrategyConfiguration
;
import
io.shardingjdbc.core.yaml.sharding.strategy.YamlInlineShardingStrategyConfiguration
;
import
io.shardingjdbc.core.yaml.sharding.strategy.YamlNoneShardingStrategyConfiguration
;
import
io.shardingjdbc.core.yaml.sharding.strategy.YamlStandardShardingStrategyConfiguration
;
import
org.junit.Test
;
import
static
org
.
hamcrest
.
CoreMatchers
.
instanceOf
;
import
static
org
.
hamcrest
.
CoreMatchers
.
is
;
import
static
org
.
junit
.
Assert
.
assertNull
;
import
static
org
.
junit
.
Assert
.
assertThat
;
public
final
class
YamlShardingStrategyConfigurationTest
{
@Test
public
void
assertBuildWithStandard
()
{
assertStandardShardingStrategyConfig
((
StandardShardingStrategyConfiguration
)
createStandardShardingStrategyConfig
().
build
());
}
private
YamlShardingStrategyConfiguration
createStandardShardingStrategyConfig
()
{
YamlStandardShardingStrategyConfiguration
standardShardingStrategyConfig
=
new
YamlStandardShardingStrategyConfiguration
();
standardShardingStrategyConfig
.
setShardingColumn
(
"order_id"
);
standardShardingStrategyConfig
.
setPreciseAlgorithmClassName
(
"TestPreciseAlgorithmClass"
);
standardShardingStrategyConfig
.
setRangeAlgorithmClassName
(
"TestRangeAlgorithmClass"
);
YamlShardingStrategyConfiguration
result
=
new
YamlShardingStrategyConfiguration
();
result
.
setStandard
(
standardShardingStrategyConfig
);
return
result
;
}
private
void
assertStandardShardingStrategyConfig
(
final
StandardShardingStrategyConfiguration
actual
)
{
assertThat
(
actual
.
getShardingColumn
(),
is
(
"order_id"
));
assertThat
(
actual
.
getPreciseAlgorithmClassName
(),
is
(
"TestPreciseAlgorithmClass"
));
assertThat
(
actual
.
getRangeAlgorithmClassName
(),
is
(
"TestRangeAlgorithmClass"
));
}
@Test
public
void
assertBuildWithComplex
()
{
assertComplexShardingStrategyConfig
((
ComplexShardingStrategyConfiguration
)
createComplexShardingStrategyConfig
().
build
());
}
private
YamlShardingStrategyConfiguration
createComplexShardingStrategyConfig
()
{
YamlComplexShardingStrategyConfiguration
complexShardingStrategyConfig
=
new
YamlComplexShardingStrategyConfiguration
();
complexShardingStrategyConfig
.
setShardingColumns
(
"user_id, order_id"
);
complexShardingStrategyConfig
.
setAlgorithmClassName
(
"TestAlgorithmClass"
);
YamlShardingStrategyConfiguration
result
=
new
YamlShardingStrategyConfiguration
();
result
.
setComplex
(
complexShardingStrategyConfig
);
return
result
;
}
private
void
assertComplexShardingStrategyConfig
(
final
ComplexShardingStrategyConfiguration
actual
)
{
assertThat
(
actual
.
getShardingColumns
(),
is
(
"user_id, order_id"
));
assertThat
(
actual
.
getAlgorithmClassName
(),
is
(
"TestAlgorithmClass"
));
}
@Test
public
void
assertBuildWithHint
()
{
assertHintShardingStrategyConfig
((
HintShardingStrategyConfiguration
)
createHintShardingStrategyConfig
().
build
());
}
private
YamlShardingStrategyConfiguration
createHintShardingStrategyConfig
()
{
YamlHintShardingStrategyConfiguration
hintShardingStrategyConfig
=
new
YamlHintShardingStrategyConfiguration
();
hintShardingStrategyConfig
.
setAlgorithmClassName
(
"TestAlgorithmClass"
);
YamlShardingStrategyConfiguration
result
=
new
YamlShardingStrategyConfiguration
();
result
.
setHint
(
hintShardingStrategyConfig
);
return
result
;
}
private
void
assertHintShardingStrategyConfig
(
final
HintShardingStrategyConfiguration
actual
)
{
assertThat
(
actual
.
getAlgorithmClassName
(),
is
(
"TestAlgorithmClass"
));
}
@Test
public
void
assertBuildWithInline
()
{
assertInlineShardingStrategyConfig
((
InlineShardingStrategyConfiguration
)
createInlineShardingStrategyConfig
().
build
());
}
private
YamlShardingStrategyConfiguration
createInlineShardingStrategyConfig
()
{
YamlInlineShardingStrategyConfiguration
inlineShardingStrategyConfig
=
new
YamlInlineShardingStrategyConfiguration
();
inlineShardingStrategyConfig
.
setShardingColumn
(
"order_id"
);
inlineShardingStrategyConfig
.
setAlgorithmExpression
(
"t_order_${order_id % 2}"
);
YamlShardingStrategyConfiguration
result
=
new
YamlShardingStrategyConfiguration
();
result
.
setInline
(
inlineShardingStrategyConfig
);
return
result
;
}
private
void
assertInlineShardingStrategyConfig
(
final
InlineShardingStrategyConfiguration
actual
)
{
assertThat
(
actual
.
getShardingColumn
(),
is
(
"order_id"
));
assertThat
(
actual
.
getAlgorithmExpression
(),
is
(
"t_order_${order_id % 2}"
));
}
@Test
public
void
assertBuildWithNone
()
{
assertNoneShardingStrategyConfig
((
NoneShardingStrategyConfiguration
)
createNoneShardingStrategyConfig
().
build
());
}
private
YamlShardingStrategyConfiguration
createNoneShardingStrategyConfig
()
{
YamlNoneShardingStrategyConfiguration
noneShardingStrategyConfig
=
new
YamlNoneShardingStrategyConfiguration
();
YamlShardingStrategyConfiguration
result
=
new
YamlShardingStrategyConfiguration
();
result
.
setNone
(
noneShardingStrategyConfig
);
return
result
;
}
private
void
assertNoneShardingStrategyConfig
(
final
NoneShardingStrategyConfiguration
actual
)
{
assertThat
(
actual
,
instanceOf
(
NoneShardingStrategyConfiguration
.
class
));
}
@Test
public
void
assertBuildWithNull
()
{
assertNull
(
new
YamlShardingStrategyConfiguration
().
build
());
}
@Test
(
expected
=
IllegalArgumentException
.
class
)
public
void
assertBuildWithMultipleSHardingStrategies
()
{
YamlShardingStrategyConfiguration
actual
=
new
YamlShardingStrategyConfiguration
();
actual
.
setStandard
(
new
YamlStandardShardingStrategyConfiguration
());
actual
.
setComplex
(
new
YamlComplexShardingStrategyConfiguration
());
actual
.
build
();
}
}
sharding-core/src/test/java/io/shardingjdbc/core/yaml/sharding/YamlTableRuleConfigurationTest.java
0 → 100644
浏览文件 @
242acb80
/*
* Copyright 1999-2015 dangdang.com.
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* </p>
*/
package
io.shardingjdbc.core.yaml.sharding
;
import
io.shardingjdbc.core.api.config.TableRuleConfiguration
;
import
io.shardingjdbc.core.api.config.strategy.NoneShardingStrategyConfiguration
;
import
io.shardingjdbc.core.keygen.DefaultKeyGenerator
;
import
io.shardingjdbc.core.yaml.sharding.strategy.YamlNoneShardingStrategyConfiguration
;
import
org.junit.Test
;
import
static
org
.
hamcrest
.
CoreMatchers
.
instanceOf
;
import
static
org
.
hamcrest
.
CoreMatchers
.
is
;
import
static
org
.
junit
.
Assert
.
assertNull
;
import
static
org
.
junit
.
Assert
.
assertThat
;
public
final
class
YamlTableRuleConfigurationTest
{
@Test
(
expected
=
NullPointerException
.
class
)
public
void
assertBuildWithoutLogicTable
()
{
new
YamlTableRuleConfiguration
().
build
();
}
@Test
public
void
assertBuildWithoutShardingStrategy
()
{
TableRuleConfiguration
actual
=
createYamlTableRuleConfig
().
build
();
assertTableRuleConfig
(
actual
);
assertWithoutShardingStrategy
(
actual
);
}
@Test
public
void
assertBuildWithShardingStrategy
()
{
TableRuleConfiguration
actual
=
createYamlTableRuleConfigWithShardingStrategy
().
build
();
assertTableRuleConfig
(
actual
);
assertWithShardingStrategy
(
actual
);
}
private
YamlTableRuleConfiguration
createYamlTableRuleConfig
()
{
YamlTableRuleConfiguration
result
=
new
YamlTableRuleConfiguration
();
result
.
setLogicTable
(
"t_order"
);
result
.
setActualDataNodes
(
"ds_${0..1}.t_order_${0..1}"
);
result
.
setKeyGeneratorColumnName
(
"order_id"
);
result
.
setKeyGeneratorClass
(
DefaultKeyGenerator
.
class
.
getName
());
result
.
setLogicIndex
(
"order_index"
);
return
result
;
}
private
YamlTableRuleConfiguration
createYamlTableRuleConfigWithShardingStrategy
()
{
YamlTableRuleConfiguration
result
=
createYamlTableRuleConfig
();
YamlShardingStrategyConfiguration
yamlShardingStrategyConfig
=
new
YamlShardingStrategyConfiguration
();
yamlShardingStrategyConfig
.
setNone
(
new
YamlNoneShardingStrategyConfiguration
());
result
.
setDatabaseStrategy
(
yamlShardingStrategyConfig
);
result
.
setTableStrategy
(
yamlShardingStrategyConfig
);
return
result
;
}
private
void
assertTableRuleConfig
(
final
TableRuleConfiguration
actual
)
{
assertThat
(
actual
.
getLogicTable
(),
is
(
"t_order"
));
assertThat
(
actual
.
getActualDataNodes
(),
is
(
"ds_${0..1}.t_order_${0..1}"
));
assertThat
(
actual
.
getKeyGeneratorColumnName
(),
is
(
"order_id"
));
assertThat
(
actual
.
getKeyGeneratorClass
(),
is
(
DefaultKeyGenerator
.
class
.
getName
()));
assertThat
(
actual
.
getLogicIndex
(),
is
(
"order_index"
));
}
private
void
assertWithoutShardingStrategy
(
final
TableRuleConfiguration
actual
)
{
assertNull
(
actual
.
getDatabaseShardingStrategyConfig
());
assertNull
(
actual
.
getTableShardingStrategyConfig
());
}
private
void
assertWithShardingStrategy
(
final
TableRuleConfiguration
actual
)
{
assertThat
(
actual
.
getDatabaseShardingStrategyConfig
(),
instanceOf
(
NoneShardingStrategyConfiguration
.
class
));
assertThat
(
actual
.
getTableShardingStrategyConfig
(),
instanceOf
(
NoneShardingStrategyConfiguration
.
class
));
}
}
sharding-core/src/test/resources/yaml/sharding-rule.yaml
浏览文件 @
242acb80
...
...
@@ -63,6 +63,7 @@ shardingRule:
algorithmExpression
:
t_order_${order_id % 2}
keyGeneratorColumnName
:
order_id
keyGeneratorClass
:
io.shardingjdbc.core.keygen.DefaultKeyGenerator
logicIndex
:
order_index
t_order_item
:
actualDataNodes
:
ds_${0..1}.t_order_item_${0..1}
tableStrategy
:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录