This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang 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 380f6e4 Update SingleTableRuleTest.java (#14635)
380f6e4 is described below
commit 380f6e42b3e2e38fbdaf244f139ba1c84a73234c
Author: ZiSheng Zhou <[email protected]>
AuthorDate: Mon Jan 10 18:18:54 2022 +0800
Update SingleTableRuleTest.java (#14635)
* Update SingleTableRuleTest.java
* Update SingleTableRuleTest.java
* Update SingleTableRuleTest.java
* Update SingleTableRuleTest.java
* Update SingleTableRuleTest.java
* Update SingleTableRuleTest.java
* Update SingleTableRuleTest.java
* Update SingleTableRuleTest.java
---
.../singletable/rule/SingleTableRuleTest.java | 146 ++++++++++++++++++++-
1 file changed, 142 insertions(+), 4 deletions(-)
diff --git
a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/test/java/org/apache/shardingsphere/singletable/rule/SingleTableRuleTest.java
b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/test/java/org/apache/shardingsphere/singletable/rule/SingleTableRuleTest.java
index 50a2eb9..c34223e 100644
---
a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/test/java/org/apache/shardingsphere/singletable/rule/SingleTableRuleTest.java
+++
b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/test/java/org/apache/shardingsphere/singletable/rule/SingleTableRuleTest.java
@@ -20,6 +20,8 @@ package org.apache.shardingsphere.singletable.rule;
import
org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.datanode.DataNode;
+import org.apache.shardingsphere.infra.route.context.RouteContext;
+import org.apache.shardingsphere.infra.route.context.RouteMapper;
import
org.apache.shardingsphere.infra.rule.identifier.type.DataNodeContainedRule;
import
org.apache.shardingsphere.singletable.config.SingleTableRuleConfiguration;
import org.junit.Before;
@@ -32,6 +34,7 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedHashMap;
+import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
@@ -39,6 +42,7 @@ import java.util.Properties;
import java.util.stream.Collectors;
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.mockito.Mockito.RETURNS_DEEP_STUBS;
@@ -83,7 +87,7 @@ public final class SingleTableRuleTest {
@Test
public void assertGetRuleType() {
- SingleTableRule singleTableRule = new SingleTableRule(new
SingleTableRuleConfiguration(), mock(DatabaseType.class),
+ SingleTableRule singleTableRule = new SingleTableRule(new
SingleTableRuleConfiguration(), mock(DatabaseType.class),
Collections.emptyMap(), Collections.emptyList(), new
ConfigurationProperties(new Properties()));
assertThat(singleTableRule.getType(),
is(SingleTableRule.class.getSimpleName()));
}
@@ -104,7 +108,7 @@ public final class SingleTableRuleTest {
public void assertGetSingleTableDataNodesWithUpperCase() {
DataNodeContainedRule dataNodeContainedRule =
mock(DataNodeContainedRule.class);
when(dataNodeContainedRule.getAllTables()).thenReturn(Arrays.asList("T_ORDER",
"T_ORDER_0", "T_ORDER_1"));
- SingleTableRule singleTableRule = new SingleTableRule(new
SingleTableRuleConfiguration(), mock(DatabaseType.class), dataSourceMap,
+ SingleTableRule singleTableRule = new SingleTableRule(new
SingleTableRuleConfiguration(), mock(DatabaseType.class), dataSourceMap,
Collections.singletonList(dataNodeContainedRule), new
ConfigurationProperties(new Properties()));
Map<String, Collection<DataNode>> actual =
singleTableRule.getSingleTableDataNodes();
assertThat(actual.size(), is(2));
@@ -115,7 +119,7 @@ public final class SingleTableRuleTest {
@Test
public void assertFindSingleTableDataNode() {
DataNodeContainedRule dataNodeContainedRule =
mock(DataNodeContainedRule.class);
- SingleTableRule singleTableRule = new SingleTableRule(new
SingleTableRuleConfiguration(), mock(DatabaseType.class), dataSourceMap,
+ SingleTableRule singleTableRule = new SingleTableRule(new
SingleTableRuleConfiguration(), mock(DatabaseType.class), dataSourceMap,
Collections.singletonList(dataNodeContainedRule), new
ConfigurationProperties(new Properties()));
Optional<DataNode> actual =
singleTableRule.findSingleTableDataNode("employee");
assertTrue(actual.isPresent());
@@ -126,11 +130,145 @@ public final class SingleTableRuleTest {
@Test
public void assertFindSingleTableDataNodeWithUpperCase() {
DataNodeContainedRule dataNodeContainedRule =
mock(DataNodeContainedRule.class);
- SingleTableRule singleTableRule = new SingleTableRule(new
SingleTableRuleConfiguration(), mock(DatabaseType.class), dataSourceMap,
+ SingleTableRule singleTableRule = new SingleTableRule(new
SingleTableRuleConfiguration(), mock(DatabaseType.class), dataSourceMap,
Collections.singletonList(dataNodeContainedRule), new
ConfigurationProperties(new Properties()));
Optional<DataNode> actual =
singleTableRule.findSingleTableDataNode("EMPLOYEE");
assertTrue(actual.isPresent());
assertThat(actual.get().getDataSourceName(), is("ds_0"));
assertThat(actual.get().getTableName(), is("employee"));
}
+
+ @Test
+ public void assertIsSingleTablesInSameDataSource() {
+ DataNodeContainedRule dataNodeContainedRule =
mock(DataNodeContainedRule.class);
+ SingleTableRule singleTableRule = new SingleTableRule(new
SingleTableRuleConfiguration(), mock(DatabaseType.class), dataSourceMap,
+ Collections.singletonList(dataNodeContainedRule), new
ConfigurationProperties(new Properties()));
+ Collection<String> singleTableNames = new LinkedList<>();
+ singleTableNames.add("employee");
+
assertTrue(singleTableRule.isSingleTablesInSameDataSource(singleTableNames));
+ }
+
+ @Test
+ public void assertIsAllTablesInSameDataSource() {
+ Collection<String> singleTableNames = new LinkedList<>();
+ singleTableNames.add("employee");
+ RouteMapper dataSourceMapper = new RouteMapper("ds_0", null);
+ Collection<RouteMapper> tableMappers = new LinkedList<>();
+ tableMappers.add(dataSourceMapper);
+ RouteContext routeContext = new RouteContext();
+ routeContext.putRouteUnit(dataSourceMapper, tableMappers);
+ DataNodeContainedRule dataNodeContainedRule =
mock(DataNodeContainedRule.class);
+ SingleTableRule singleTableRule = new SingleTableRule(new
SingleTableRuleConfiguration(), mock(DatabaseType.class), dataSourceMap,
+ Collections.singletonList(dataNodeContainedRule), new
ConfigurationProperties(new Properties()));
+ assertTrue(singleTableRule.isAllTablesInSameDataSource(routeContext,
singleTableNames));
+ }
+
+ @Test
+ public void assertGetDefaultDataSource() {
+ DataNodeContainedRule dataNodeContainedRule =
mock(DataNodeContainedRule.class);
+ SingleTableRuleConfiguration singleTableRuleConfiguration = new
SingleTableRuleConfiguration();
+ singleTableRuleConfiguration.setDefaultDataSource("ds_0");
+ SingleTableRule singleTableRule = new
SingleTableRule(singleTableRuleConfiguration, mock(DatabaseType.class),
dataSourceMap,
+ Collections.singletonList(dataNodeContainedRule), new
ConfigurationProperties(new Properties()));
+ assertThat(singleTableRule.getDefaultDataSource().get(), is("ds_0"));
+ }
+
+ @Test
+ public void assertGetSingleTableNames() {
+ DataNodeContainedRule dataNodeContainedRule =
mock(DataNodeContainedRule.class);
+ SingleTableRule singleTableRule = new SingleTableRule(new
SingleTableRuleConfiguration(), mock(DatabaseType.class), dataSourceMap,
+ Collections.singletonList(dataNodeContainedRule), new
ConfigurationProperties(new Properties()));
+ Collection<String> tableNames = new LinkedList<>();
+ tableNames.add("employee");
+
assertThat(singleTableRule.getSingleTableNames(tableNames).iterator().next(),
is("employee"));
+ }
+
+ @Test
+ public void assertPut() {
+ DataNodeContainedRule dataNodeContainedRule =
mock(DataNodeContainedRule.class);
+ SingleTableRule singleTableRule = new SingleTableRule(new
SingleTableRuleConfiguration(), mock(DatabaseType.class), dataSourceMap,
+ Collections.singletonList(dataNodeContainedRule), new
ConfigurationProperties(new Properties()));
+ String tableName = "teacher";
+ String dataSourceName = "ds_0";
+ singleTableRule.put(tableName, dataSourceName);
+ Collection<String> tableNames = new LinkedList<>();
+ tableNames.add("teacher");
+
assertThat(singleTableRule.getSingleTableNames(tableNames).iterator().next(),
is("teacher"));
+ assertTrue(singleTableRule.getAllTables().contains("employee"));
+ assertTrue(singleTableRule.getAllTables().contains("student"));
+ assertTrue(singleTableRule.getAllTables().contains("t_order_0"));
+ assertTrue(singleTableRule.getAllTables().contains("t_order_1"));
+ assertTrue(singleTableRule.getAllTables().contains("teacher"));
+ }
+
+ @Test
+ public void assertRemove() {
+ DataNodeContainedRule dataNodeContainedRule =
mock(DataNodeContainedRule.class);
+ SingleTableRule singleTableRule = new SingleTableRule(new
SingleTableRuleConfiguration(), mock(DatabaseType.class), dataSourceMap,
+ Collections.singletonList(dataNodeContainedRule), new
ConfigurationProperties(new Properties()));
+ String tableName = "employee";
+ singleTableRule.remove(tableName);
+ Collection<String> tableNames = new LinkedList<>();
+ tableNames.add("employee");
+ assertTrue(singleTableRule.getSingleTableNames(tableNames).isEmpty());
+ assertTrue(singleTableRule.getAllTables().contains("student"));
+ assertTrue(singleTableRule.getAllTables().contains("t_order_0"));
+ assertTrue(singleTableRule.getAllTables().contains("t_order_1"));
+ }
+
+ @Test
+ public void assertGetAllDataNodes() {
+ DataNodeContainedRule dataNodeContainedRule =
mock(DataNodeContainedRule.class);
+ SingleTableRule singleTableRule = new SingleTableRule(new
SingleTableRuleConfiguration(), mock(DatabaseType.class), dataSourceMap,
+ Collections.singletonList(dataNodeContainedRule), new
ConfigurationProperties(new Properties()));
+ assertTrue(singleTableRule.getAllDataNodes().containsKey("employee"));
+ assertTrue(singleTableRule.getAllDataNodes().containsKey("student"));
+ assertTrue(singleTableRule.getAllDataNodes().containsKey("t_order_0"));
+ assertTrue(singleTableRule.getAllDataNodes().containsKey("t_order_1"));
+ }
+
+ @Test
+ public void assertGetAllActualTables() {
+ DataNodeContainedRule dataNodeContainedRule =
mock(DataNodeContainedRule.class);
+ SingleTableRule singleTableRule = new SingleTableRule(new
SingleTableRuleConfiguration(), mock(DatabaseType.class), dataSourceMap,
+ Collections.singletonList(dataNodeContainedRule), new
ConfigurationProperties(new Properties()));
+ assertTrue(singleTableRule.getAllActualTables().isEmpty());
+ }
+
+ @Test
+ public void assertFindFirstActualTable() {
+ DataNodeContainedRule dataNodeContainedRule =
mock(DataNodeContainedRule.class);
+ SingleTableRule singleTableRule = new SingleTableRule(new
SingleTableRuleConfiguration(), mock(DatabaseType.class), dataSourceMap,
+ Collections.singletonList(dataNodeContainedRule), new
ConfigurationProperties(new Properties()));
+ String logicTable = "employee";
+
assertFalse(singleTableRule.findFirstActualTable(logicTable).isPresent());
+ }
+
+ @Test
+ public void assertIsNeedAccumulate() {
+ DataNodeContainedRule dataNodeContainedRule =
mock(DataNodeContainedRule.class);
+ SingleTableRule singleTableRule = new SingleTableRule(new
SingleTableRuleConfiguration(), mock(DatabaseType.class), dataSourceMap,
+ Collections.singletonList(dataNodeContainedRule), new
ConfigurationProperties(new Properties()));
+ Collection<String> tables = new LinkedList<>();
+ assertFalse(singleTableRule.isNeedAccumulate(tables));
+ }
+
+ @Test
+ public void assertFindLogicTableByActualTable() {
+ DataNodeContainedRule dataNodeContainedRule =
mock(DataNodeContainedRule.class);
+ SingleTableRule singleTableRule = new SingleTableRule(new
SingleTableRuleConfiguration(), mock(DatabaseType.class), dataSourceMap,
+ Collections.singletonList(dataNodeContainedRule), new
ConfigurationProperties(new Properties()));
+ String actualTable = "student";
+
assertFalse(singleTableRule.findLogicTableByActualTable(actualTable).isPresent());
+ }
+
+ @Test
+ public void assertFindActualTableByCatalog() {
+ DataNodeContainedRule dataNodeContainedRule =
mock(DataNodeContainedRule.class);
+ SingleTableRule singleTableRule = new SingleTableRule(new
SingleTableRuleConfiguration(), mock(DatabaseType.class), dataSourceMap,
+ Collections.singletonList(dataNodeContainedRule), new
ConfigurationProperties(new Properties()));
+ String catalog = "employee";
+ String logicTable = "t_order_0";
+ assertFalse(singleTableRule.findActualTableByCatalog(catalog,
logicTable).isPresent());
+ }
}