You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2022/01/10 10:19:39 UTC
[shardingsphere] branch master updated: Update SingleTableRuleTest.java (#14635)
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 <72...@users.noreply.github.com>
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());
+ }
}