This is an automated email from the ASF dual-hosted git repository.

zhangliang 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 98c40b0  fixed 9411 (#9565)
98c40b0 is described below

commit 98c40b01630dd2988cc2b074bbc061c62131668c
Author: arthasking123 <[email protected]>
AuthorDate: Wed Mar 3 14:51:02 2021 +0800

    fixed 9411 (#9565)
---
 .../ShardingTableBroadcastRoutingEngineTest.java   | 106 ++++++++++++++++++---
 1 file changed, 92 insertions(+), 14 deletions(-)

diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/broadcast/ShardingTableBroadcastRoutingEngineTest.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/broadcast/ShardingTableBroadcastRoutingEngineTest.java
index abe3757..b8b23b3 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/broadcast/ShardingTableBroadcastRoutingEngineTest.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/broadcast/ShardingTableBroadcastRoutingEngineTest.java
@@ -27,7 +27,6 @@ import 
org.apache.shardingsphere.infra.route.context.RouteUnit;
 import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
 import 
org.apache.shardingsphere.sharding.api.config.rule.ShardingTableRuleConfiguration;
 import org.apache.shardingsphere.sharding.rule.ShardingRule;
-import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.junit.MockitoJUnitRunner;
@@ -49,22 +48,24 @@ public final class ShardingTableBroadcastRoutingEngineTest {
     private ShardingTableBroadcastRoutingEngine 
shardingTableBroadcastRoutingEngine;
     
     private ShardingRule shardingRule;
-    
-    @Before
-    public void setUp() {
-        shardingTableBroadcastRoutingEngine = new 
ShardingTableBroadcastRoutingEngine(mock(ShardingSphereSchema.class), 
mockSQLStatementContext());
-        shardingRule = new ShardingRule(createShardingRuleConfiguration(), 
mock(DatabaseType.class), createDataSourceMap());
+
+    private void setUp(final String sqlStateTableName, final boolean 
bContainBroadCastTable) {
+        shardingTableBroadcastRoutingEngine = new 
ShardingTableBroadcastRoutingEngine(mock(ShardingSphereSchema.class), 
mockSQLStatementContext(sqlStateTableName));
+        shardingRule = new 
ShardingRule(createShardingRuleConfiguration(bContainBroadCastTable), 
mock(DatabaseType.class), createDataSourceMap());
     }
-    
-    private SQLStatementContext<?> mockSQLStatementContext() {
+
+    private SQLStatementContext<?> mockSQLStatementContext(final String 
sqlStateTableName) {
         SQLStatementContext<?> result = mock(SQLStatementContext.class, 
RETURNS_DEEP_STUBS);
-        
when(result.getTablesContext().getTableNames()).thenReturn(Lists.newArrayList("t_order"));
+        
when(result.getTablesContext().getTableNames()).thenReturn(sqlStateTableName.isEmpty()
 ? Lists.newArrayList() : Lists.newArrayList(sqlStateTableName));
         return result;
     }
     
-    private ShardingRuleConfiguration createShardingRuleConfiguration() {
+    private ShardingRuleConfiguration createShardingRuleConfiguration(final 
boolean bContainBroadCastTable) {
         ShardingRuleConfiguration result = new ShardingRuleConfiguration();
         result.getTables().add(new ShardingTableRuleConfiguration("t_order", 
"ds${0..1}.t_order_${0..2}"));
+        if (!bContainBroadCastTable) {
+            result.getBroadcastTables().add("t_order");
+        }
         return result;
     }
     
@@ -76,25 +77,65 @@ public final class ShardingTableBroadcastRoutingEngineTest {
     }
     
     @Test
+    public void assertRouteForNormalDDLOfEmptyList() {
+        setUp("", true);
+        RouteContext routeContext = new RouteContext();
+        shardingTableBroadcastRoutingEngine.route(routeContext, shardingRule);
+        assertRouteContextOfEmptyList(routeContext);
+    }
+    
+    @Test
+    public void assertRouteForNonExistDropIndexOfEmptyList() {
+        setUp("", true);
+        RouteContext routeContext = new RouteContext();
+        shardingTableBroadcastRoutingEngine.route(routeContext, shardingRule);
+    }
+    
+    @Test
+    public void assertRouteForDropIndexOfEmptyList() {
+        setUp("", true);
+        RouteContext routeContext = new RouteContext();
+        shardingTableBroadcastRoutingEngine.route(routeContext, shardingRule);
+        assertRouteContextOfEmptyList(routeContext);
+    }
+
+    private void assertRouteUnitOfEmptyList(final RouteUnit routeUnit, final 
String dataSourceName, final String actualTableName) {
+        assertThat(routeUnit.getDataSourceMapper().getActualName(), 
is(dataSourceName));
+        assertThat(routeUnit.getTableMappers().size(), is(1));
+        assertThat(routeUnit.getTableMappers().iterator().next(), is(new 
RouteMapper("", actualTableName)));
+    }
+
+    private void assertRouteContextOfEmptyList(final RouteContext actual) {
+        assertThat(actual.getActualDataSourceNames().size(), is(2));
+        assertThat(actual.getRouteUnits().size(), is(2));
+        Iterator<RouteUnit> routeUnits = actual.getRouteUnits().iterator();
+        assertRouteUnitOfEmptyList(routeUnits.next(), "ds0", "");
+        assertRouteUnitOfEmptyList(routeUnits.next(), "ds1", "");
+    }
+
+    @Test
     public void assertRouteForNormalDDL() {
+        setUp("t_order", true);
         RouteContext routeContext = new RouteContext();
         shardingTableBroadcastRoutingEngine.route(routeContext, shardingRule);
         assertRouteContext(routeContext);
     }
-    
+
     @Test
     public void assertRouteForNonExistDropIndex() {
+        setUp("t_order", true);
         RouteContext routeContext = new RouteContext();
         shardingTableBroadcastRoutingEngine.route(routeContext, shardingRule);
     }
-    
+
     @Test
     public void assertRouteForDropIndex() {
+        setUp("t_order", true);
         RouteContext routeContext = new RouteContext();
         shardingTableBroadcastRoutingEngine.route(routeContext, shardingRule);
         assertRouteContext(routeContext);
     }
-    
+
     private void assertRouteContext(final RouteContext actual) {
         assertThat(actual.getActualDataSourceNames().size(), is(2));
         assertThat(actual.getRouteUnits().size(), is(6));
@@ -106,10 +147,47 @@ public final class 
ShardingTableBroadcastRoutingEngineTest {
         assertRouteUnit(routeUnits.next(), "ds1", "t_order_1");
         assertRouteUnit(routeUnits.next(), "ds1", "t_order_2");
     }
-    
+
     private void assertRouteUnit(final RouteUnit routeUnit, final String 
dataSourceName, final String actualTableName) {
         assertThat(routeUnit.getDataSourceMapper().getActualName(), 
is(dataSourceName));
         assertThat(routeUnit.getTableMappers().size(), is(1));
         assertThat(routeUnit.getTableMappers().iterator().next(), is(new 
RouteMapper("t_order", actualTableName)));
     }
+
+    @Test
+    public void assertRouteForNormalDDLNoContain() {
+        setUp("t_order", false);
+        RouteContext routeContext = new RouteContext();
+        shardingTableBroadcastRoutingEngine.route(routeContext, shardingRule);
+        assertRouteContextOfEmptyListNoContain(routeContext);
+    }
+
+    @Test
+    public void assertRouteForNonExistDropIndexNoContain() {
+        setUp("t_order", false);
+        RouteContext routeContext = new RouteContext();
+        shardingTableBroadcastRoutingEngine.route(routeContext, shardingRule);
+    }
+
+    @Test
+    public void assertRouteForDropIndexNoContain() {
+        setUp("t_order", false);
+        RouteContext routeContext = new RouteContext();
+        shardingTableBroadcastRoutingEngine.route(routeContext, shardingRule);
+        assertRouteContextOfEmptyListNoContain(routeContext);
+    }
+
+    private void assertRouteUnitOfEmptyListNoContain(final RouteUnit 
routeUnit, final String dataSourceName, final String actualTableName) {
+        assertThat(routeUnit.getDataSourceMapper().getActualName(), 
is(dataSourceName));
+        assertThat(routeUnit.getTableMappers().size(), is(1));
+        assertThat(routeUnit.getTableMappers().iterator().next(), is(new 
RouteMapper("t_order", actualTableName)));
+    }
+
+    private void assertRouteContextOfEmptyListNoContain(final RouteContext 
actual) {
+        assertThat(actual.getActualDataSourceNames().size(), is(2));
+        assertThat(actual.getRouteUnits().size(), is(2));
+        Iterator<RouteUnit> routeUnits = actual.getRouteUnits().iterator();
+        assertRouteUnitOfEmptyListNoContain(routeUnits.next(), "ds0", 
"t_order");
+        assertRouteUnitOfEmptyListNoContain(routeUnits.next(), "ds1", 
"t_order");
+    }
 }

Reply via email to