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());
+    }
 }