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 aaa5023  Review ShardingRouteEngineFactory (#9548)
aaa5023 is described below

commit aaa5023f188b5e6f3f1fb947d2abeef388bc51a4
Author: Juan Pan(Trista) <[email protected]>
AuthorDate: Tue Mar 2 11:21:03 2021 +0800

    Review ShardingRouteEngineFactory (#9548)
    
    * Review ShardingRouteEngineFactory
    
    * fix ut
---
 .../shardingsphere/sharding/rule/ShardingRule.java | 23 ++++++++++++
 .../sharding/rule/single/SingleTableRule.java      |  2 ++
 .../engine/type/ShardingRouteEngineFactory.java    | 33 +++++++----------
 ...gEngine.java => SingleTablesRoutingEngine.java} | 42 +++++++---------------
 .../type/ShardingRouteEngineFactoryTest.java       | 15 ++++----
 ...est.java => SingleTablesRoutingEngineTest.java} | 14 ++++----
 6 files changed, 65 insertions(+), 64 deletions(-)

diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java
index 0f22f6d..772baf6 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java
@@ -284,6 +284,16 @@ public final class ShardingRule implements 
DataNodeContainedRule, TableContained
     }
     
     /**
+     * Judge logic tables is all belong to sharding tables.
+     *
+     * @param logicTableNames logic table names
+     * @return logic tables is all belong to sharding tables or not
+     */
+    public boolean isAllShardingTables(final Collection<String> 
logicTableNames) {
+        return logicTableNames.stream().allMatch(each -> 
findTableRule(each).isPresent());
+    }
+    
+    /**
      * Judge logic table is belong to broadcast tables.
      *
      * @param logicTableName logic table name
@@ -294,6 +304,19 @@ public final class ShardingRule implements 
DataNodeContainedRule, TableContained
     }
     
     /**
+     * Judge if all single tables exist in same data source.
+     *
+     * @param logicTableNames logic table names
+     * @return all single tables exist in same data source or not
+     */
+    public boolean isSingleTablesInSameDataSource(final Collection<String> 
logicTableNames) {
+        if (!singleTableRules.keySet().containsAll(logicTableNames)) {
+            return false;
+        }
+        return 1 == singleTableRules.values().stream().filter(each -> 
logicTableNames.contains(each.getTableName())).collect(Collectors.toSet()).size();
+    }
+    
+    /**
      * Judge if there is at least one table rule for logic tables.
      *
      * @param logicTableNames logic table names
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/main/java/org/apache/shardingsphere/sharding/rule/single/SingleTableRule.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/main/java/org/apache/shardingsphere/sharding/rule/single/SingleTableRule.java
index 436cb41..39ed929 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/main/java/org/apache/shardingsphere/sharding/rule/single/SingleTableRule.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/main/java/org/apache/shardingsphere/sharding/rule/single/SingleTableRule.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.sharding.rule.single;
 
+import lombok.EqualsAndHashCode;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 
@@ -25,6 +26,7 @@ import lombok.RequiredArgsConstructor;
  */
 @RequiredArgsConstructor
 @Getter
+@EqualsAndHashCode
 public final class SingleTableRule {
     
     private final String tableName;
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/ShardingRouteEngineFactory.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/ShardingRouteEngineFactory.java
index e9119cd..5ee91db 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/ShardingRouteEngineFactory.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/ShardingRouteEngineFactory.java
@@ -32,7 +32,7 @@ import 
org.apache.shardingsphere.sharding.route.engine.type.broadcast.ShardingTa
 import 
org.apache.shardingsphere.sharding.route.engine.type.complex.ShardingComplexRoutingEngine;
 import 
org.apache.shardingsphere.sharding.route.engine.type.ignore.ShardingIgnoreRoutingEngine;
 import 
org.apache.shardingsphere.sharding.route.engine.type.federated.ShardingFederatedRoutingEngine;
-import 
org.apache.shardingsphere.sharding.route.engine.type.single.SingleTableRoutingEngine;
+import 
org.apache.shardingsphere.sharding.route.engine.type.single.SingleTablesRoutingEngine;
 import 
org.apache.shardingsphere.sharding.route.engine.type.standard.ShardingStandardRoutingEngine;
 import 
org.apache.shardingsphere.sharding.route.engine.type.unicast.ShardingUnicastRoutingEngine;
 import org.apache.shardingsphere.sharding.rule.ShardingRule;
@@ -100,7 +100,7 @@ public final class ShardingRouteEngineFactory {
         }
         Collection<String> tableNames = 
sqlStatementContext.getTablesContext().getTableNames();
         if (!tableNames.isEmpty() && 
!shardingRule.tableRuleExists(tableNames)) {
-            return new SingleTableRoutingEngine(tableNames, sqlStatement);
+            return new SingleTablesRoutingEngine(tableNames, sqlStatement);
         }
         return new ShardingTableBroadcastRoutingEngine(metaData.getSchema(), 
sqlStatementContext);
     }
@@ -113,7 +113,7 @@ public final class ShardingRouteEngineFactory {
             return new ShardingDatabaseBroadcastRoutingEngine();
         }
         if (!tableNames.isEmpty() && 
!shardingRule.tableRuleExists(tableNames)) {
-            return new SingleTableRoutingEngine(tableNames, sqlStatement);
+            return new SingleTablesRoutingEngine(tableNames, sqlStatement);
         }
         if (!tableNames.isEmpty()) {
             return new ShardingUnicastRoutingEngine(tableNames);
@@ -126,7 +126,7 @@ public final class ShardingRouteEngineFactory {
             Collection<String> tableNames = 
sqlStatementContext.getTablesContext().getTableNames();
             return shardingRule.tableRuleExists(tableNames)
                     ? new 
ShardingTableBroadcastRoutingEngine(metaData.getSchema(), sqlStatementContext)
-                    : new SingleTableRoutingEngine(tableNames, 
sqlStatementContext.getSqlStatement());
+                    : new SingleTablesRoutingEngine(tableNames, 
sqlStatementContext.getSqlStatement());
         } else {
             return new 
ShardingInstanceBroadcastRoutingEngine(metaData.getResource().getDataSourcesMetaData());
         }
@@ -150,33 +150,26 @@ public final class ShardingRouteEngineFactory {
             return new ShardingUnicastRoutingEngine(tableNames);
         }
         if (!shardingRule.tableRuleExists(tableNames)) {
-            return new SingleTableRoutingEngine(tableNames, sqlStatement);
+            return new SingleTablesRoutingEngine(tableNames, sqlStatement);
         }
-        if (shardingRule.tableRuleExists(tableNames) && 
shardingRule.singleTableRuleExists(tableNames)) {
-            return new ShardingFederatedRoutingEngine(tableNames);
+        if (shardingRule.isAllShardingTables(tableNames) && 1 == 
tableNames.size() || shardingRule.isAllBindingTables(tableNames)) {
+            return new 
ShardingStandardRoutingEngine(tableNames.iterator().next(), shardingConditions, 
props);
         }
-        return getShardingRoutingEngine(shardingRule, shardingConditions, 
sqlStatementContext, tableNames, props);
-    }
-    
-    private static ShardingRouteEngine getShardingRoutingEngine(final 
ShardingRule shardingRule, final ShardingConditions shardingConditions,
-                                                                final 
SQLStatementContext<?> sqlStatementContext,
-                                                                final 
Collection<String> tableNames, final ConfigurationProperties props) {
-        Collection<String> shardingTableNames = 
shardingRule.getShardingLogicTableNames(tableNames);
-        if (1 == shardingTableNames.size() || 
shardingRule.isAllBindingTables(shardingTableNames)) {
-            return new 
ShardingStandardRoutingEngine(shardingTableNames.iterator().next(), 
shardingConditions, props);
-        }
-        if (isFederatedQuery(sqlStatementContext, tableNames, 
shardingTableNames)) {
+        if (isShardingFederatedQuery(sqlStatementContext, tableNames, 
shardingRule)) {
             return new ShardingFederatedRoutingEngine(tableNames);
         }
         // TODO config for cartesian set
         return new ShardingComplexRoutingEngine(tableNames, 
shardingConditions, props);
     }
     
-    private static boolean isFederatedQuery(final SQLStatementContext<?> 
sqlStatementContext, final Collection<String> tableNames, final 
Collection<String> shardingTableNames) {
+    private static boolean isShardingFederatedQuery(final 
SQLStatementContext<?> sqlStatementContext, final Collection<String> 
tableNames, final ShardingRule shardingRule) {
         if (!(sqlStatementContext instanceof SelectStatementContext)) {
             return false;
         }
         SelectStatementContext select = (SelectStatementContext) 
sqlStatementContext;
-        return tableNames.size() == shardingTableNames.size() && 
(select.isContainsJoinQuery() || select.isContainsSubquery());
+        if (!select.isContainsJoinQuery() && !select.isContainsSubquery()) {
+            return false;
+        }
+        return shardingRule.isAllShardingTables(tableNames) || 
(shardingRule.tableRuleExists(tableNames) && 
shardingRule.singleTableRuleExists(tableNames));
     }
 }
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/single/SingleTableRoutingEngine.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/single/SingleTablesRoutingEngine.java
similarity index 66%
rename from 
shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/single/SingleTableRoutingEngine.java
rename to 
shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/single/SingleTablesRoutingEngine.java
index 1c6d8b5..e82db2e 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/single/SingleTableRoutingEngine.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/single/SingleTablesRoutingEngine.java
@@ -32,17 +32,13 @@ import 
org.apache.shardingsphere.sql.parser.sql.dialect.handler.ddl.DropTableSta
 
 import java.util.Collection;
 import java.util.Collections;
-import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
-import java.util.Map;
 import java.util.concurrent.ThreadLocalRandom;
-import java.util.stream.Collectors;
 
 /**
  * Single table engine.
  */
 @RequiredArgsConstructor
-public final class SingleTableRoutingEngine implements ShardingRouteEngine {
+public final class SingleTablesRoutingEngine implements ShardingRouteEngine {
     
     private final Collection<String> logicTables;
     
@@ -50,17 +46,20 @@ public final class SingleTableRoutingEngine implements 
ShardingRouteEngine {
     
     @Override
     public void route(final RouteContext routeContext, final ShardingRule 
shardingRule) {
-        if (sqlStatement instanceof CreateTableStatement) {
+        if (sqlStatement instanceof CreateTableStatement || 
containsDropTableIfExistClause()) {
             routeContext.getRouteUnits().add(getRandomRouteUnit(shardingRule));
         } else {
-            Collection<RouteUnit> routeUnits = 
getTargetRouteUnits(shardingRule);
-            routeContext.getRouteUnits().addAll(routeUnits);
-            if (1 < routeUnits.size()) {
+            fillRouteContext(shardingRule, routeContext);
+            if (1 < routeContext.getRouteUnits().size()) {
                 routeContext.setToCalcite(true);
             }
         }
     }
     
+    private boolean containsDropTableIfExistClause() {
+        return sqlStatement instanceof DropTableStatement && 
DropTableStatementHandler.containsIfExistClause((DropTableStatement) 
sqlStatement);
+    }
+    
     private RouteUnit getRandomRouteUnit(final ShardingRule shardingRule) {
         Collection<String> dataSourceNames = shardingRule.getDataSourceNames();
         String dataSource = 
Lists.newArrayList(dataSourceNames).get(ThreadLocalRandom.current().nextInt(dataSourceNames.size()));
@@ -68,29 +67,14 @@ public final class SingleTableRoutingEngine implements 
ShardingRouteEngine {
         return new RouteUnit(new RouteMapper(dataSource, dataSource), 
Collections.singletonList(new RouteMapper(table, table)));
     }
     
-    private Collection<RouteUnit> getTargetRouteUnits(final ShardingRule 
shardingRule) {
-        Map<RouteMapper, Collection<RouteMapper>> result = new 
LinkedHashMap<>();
+    private void fillRouteContext(final ShardingRule shardingRule, final 
RouteContext routeContext) {
         for (String each : logicTables) {
-            if (shardingRule.getSingleTableRules().containsKey(each)) {
-                fillRouteUnits(each, 
shardingRule.getSingleTableRules().get(each).getDataSourceName(), result);
-            } else if (containsDropTableIfExistClause()) {
-                return 
Collections.singletonList(getRandomRouteUnit(shardingRule));
-            } else {
+            if (!shardingRule.getSingleTableRules().containsKey(each)) {
                 throw new ShardingSphereException("`%s` single table does not 
exist.", each);
             }
+            String dataSource = 
shardingRule.getSingleTableRules().get(each).getDataSourceName();
+            RouteMapper dataSourceMapper = new RouteMapper(dataSource, 
dataSource);
+            routeContext.putRouteUnit(dataSourceMapper, new RouteMapper(each, 
each));
         }
-        return result.entrySet().stream().map(entry -> new 
RouteUnit(entry.getKey(), entry.getValue())).collect(Collectors.toList());
-    }
-    
-    private void fillRouteUnits(final String table, final String dataSource, 
final Map<RouteMapper, Collection<RouteMapper>> routeMappers) {
-        RouteMapper dataSourceMapper = new RouteMapper(dataSource, dataSource);
-        if (!routeMappers.containsKey(dataSourceMapper)) {
-            routeMappers.put(dataSourceMapper, new LinkedHashSet<>());
-        }
-        routeMappers.get(dataSourceMapper).add(new RouteMapper(table, table));
-    }
-    
-    private boolean containsDropTableIfExistClause() {
-        return sqlStatement instanceof DropTableStatement && 
DropTableStatementHandler.containsIfExistClause((DropTableStatement) 
sqlStatement);
     }
 }
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/ShardingRouteEngineFactoryTest.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/ShardingRouteEngineFactoryTest.java
index 750958a..d2babfa 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/ShardingRouteEngineFactoryTest.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/ShardingRouteEngineFactoryTest.java
@@ -29,7 +29,7 @@ import 
org.apache.shardingsphere.sharding.route.engine.type.broadcast.ShardingDa
 import 
org.apache.shardingsphere.sharding.route.engine.type.broadcast.ShardingInstanceBroadcastRoutingEngine;
 import 
org.apache.shardingsphere.sharding.route.engine.type.broadcast.ShardingTableBroadcastRoutingEngine;
 import 
org.apache.shardingsphere.sharding.route.engine.type.complex.ShardingComplexRoutingEngine;
-import 
org.apache.shardingsphere.sharding.route.engine.type.single.SingleTableRoutingEngine;
+import 
org.apache.shardingsphere.sharding.route.engine.type.single.SingleTablesRoutingEngine;
 import 
org.apache.shardingsphere.sharding.route.engine.type.standard.ShardingStandardRoutingEngine;
 import 
org.apache.shardingsphere.sharding.route.engine.type.unicast.ShardingUnicastRoutingEngine;
 import org.apache.shardingsphere.sharding.rule.ShardingRule;
@@ -123,7 +123,7 @@ public final class ShardingRouteEngineFactoryTest {
         
when(sqlStatementContext.getTablesContext().getTableNames()).thenReturn(Collections.singletonList("tbl"));
         
when(shardingRule.tableRuleExists(sqlStatementContext.getTablesContext().getTableNames())).thenReturn(false);
         ShardingRouteEngine actual = 
ShardingRouteEngineFactory.newInstance(shardingRule, metaData, 
sqlStatementContext, shardingConditions, props);
-        assertThat(actual, instanceOf(SingleTableRoutingEngine.class));
+        assertThat(actual, instanceOf(SingleTablesRoutingEngine.class));
     }
     
     @Test
@@ -228,7 +228,7 @@ public final class ShardingRouteEngineFactoryTest {
         SQLStatement sqlStatement = mock(SQLStatement.class);
         when(sqlStatementContext.getSqlStatement()).thenReturn(sqlStatement);
         ShardingRouteEngine actual = 
ShardingRouteEngineFactory.newInstance(shardingRule, metaData, 
sqlStatementContext, shardingConditions, props);
-        assertThat(actual, instanceOf(SingleTableRoutingEngine.class));
+        assertThat(actual, instanceOf(SingleTablesRoutingEngine.class));
     }
     
     @Test
@@ -238,7 +238,7 @@ public final class ShardingRouteEngineFactoryTest {
         SQLStatement sqlStatement = mock(MySQLSelectStatement.class);
         when(sqlStatementContext.getSqlStatement()).thenReturn(sqlStatement);
         ShardingRouteEngine actual = 
ShardingRouteEngineFactory.newInstance(shardingRule, metaData, 
sqlStatementContext, shardingConditions, props);
-        assertThat(actual, instanceOf(SingleTableRoutingEngine.class));
+        assertThat(actual, instanceOf(SingleTablesRoutingEngine.class));
     }
     
     @Test
@@ -280,8 +280,8 @@ public final class ShardingRouteEngineFactoryTest {
         SQLStatement sqlStatement = mock(SQLStatement.class);
         when(sqlStatementContext.getSqlStatement()).thenReturn(sqlStatement);
         tableNames.add("");
-        
when(shardingRule.getShardingLogicTableNames(tableNames)).thenReturn(tableNames);
         when(shardingRule.tableRuleExists(tableNames)).thenReturn(true);
+        when(shardingRule.isAllShardingTables(tableNames)).thenReturn(true);
         ShardingRouteEngine actual = 
ShardingRouteEngineFactory.newInstance(shardingRule, metaData, 
sqlStatementContext, shardingConditions, props);
         assertThat(actual, instanceOf(ShardingStandardRoutingEngine.class));
     }
@@ -292,7 +292,6 @@ public final class ShardingRouteEngineFactoryTest {
         when(sqlStatementContext.getSqlStatement()).thenReturn(sqlStatement);
         tableNames.add("1");
         tableNames.add("2");
-        
when(shardingRule.getShardingLogicTableNames(tableNames)).thenReturn(tableNames);
         when(shardingRule.tableRuleExists(tableNames)).thenReturn(true);
         ShardingRouteEngine actual = 
ShardingRouteEngineFactory.newInstance(shardingRule, metaData, 
sqlStatementContext, shardingConditions, props);
         assertThat(actual, instanceOf(ShardingComplexRoutingEngine.class));
@@ -315,7 +314,7 @@ public final class ShardingRouteEngineFactoryTest {
         when(shardingRule.tableRuleExists(tableNames)).thenReturn(false);
         tableNames.add("table_1");
         ShardingRouteEngine actual = 
ShardingRouteEngineFactory.newInstance(shardingRule, metaData, 
sqlStatementContext, shardingConditions, props);
-        assertThat(actual, instanceOf(SingleTableRoutingEngine.class));
+        assertThat(actual, instanceOf(SingleTablesRoutingEngine.class));
     }
     
     @Test
@@ -335,7 +334,7 @@ public final class ShardingRouteEngineFactoryTest {
         when(shardingRule.tableRuleExists(tableNames)).thenReturn(false);
         tableNames.add("table_1");
         ShardingRouteEngine actual = 
ShardingRouteEngineFactory.newInstance(shardingRule, metaData, 
sqlStatementContext, shardingConditions, props);
-        assertThat(actual, instanceOf(SingleTableRoutingEngine.class));
+        assertThat(actual, instanceOf(SingleTablesRoutingEngine.class));
     }
     
 }
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/single/SingleTableRoutingEngineTest.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/single/SingleTablesRoutingEngineTest.java
similarity index 89%
rename from 
shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/single/SingleTableRoutingEngineTest.java
rename to 
shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/single/SingleTablesRoutingEngineTest.java
index d1169a9..5ebb272 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/single/SingleTableRoutingEngineTest.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/single/SingleTablesRoutingEngineTest.java
@@ -40,17 +40,17 @@ import static org.junit.Assert.assertThat;
 import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
 import static org.mockito.Mockito.mock;
 
-public final class SingleTableRoutingEngineTest {
+public final class SingleTablesRoutingEngineTest {
     
     @Test
     public void assertRouteInSameDataSource() {
-        SingleTableRoutingEngine singleTableRoutingEngine = new 
SingleTableRoutingEngine(Arrays.asList("t_order", "t_order_item"), null);
+        SingleTablesRoutingEngine singleTablesRoutingEngine = new 
SingleTablesRoutingEngine(Arrays.asList("t_order", "t_order_item"), null);
         ShardingRuleConfiguration shardingRuleConfig = new 
ShardingRuleConfiguration();
         ShardingRule shardingRule = new ShardingRule(shardingRuleConfig, 
mock(DatabaseType.class), createDataSourceMap());
         shardingRule.getSingleTableRules().put("t_order", new 
SingleTableRule("t_order", "ds_0"));
         shardingRule.getSingleTableRules().put("t_order_item", new 
SingleTableRule("t_order_item", "ds_0"));
         RouteContext routeContext = new RouteContext();
-        singleTableRoutingEngine.route(routeContext, shardingRule);
+        singleTablesRoutingEngine.route(routeContext, shardingRule);
         List<RouteUnit> routeUnits = new 
ArrayList<>(routeContext.getRouteUnits());
         assertThat(routeContext.getRouteUnits().size(), is(1));
         assertThat(routeUnits.get(0).getDataSourceMapper().getActualName(), 
is("ds_0"));
@@ -67,13 +67,13 @@ public final class SingleTableRoutingEngineTest {
     
     @Test
     public void assertRouteInDifferentDataSource() {
-        SingleTableRoutingEngine singleTableRoutingEngine = new 
SingleTableRoutingEngine(Arrays.asList("t_order", "t_order_item"), null);
+        SingleTablesRoutingEngine singleTablesRoutingEngine = new 
SingleTablesRoutingEngine(Arrays.asList("t_order", "t_order_item"), null);
         ShardingRuleConfiguration shardingRuleConfig = new 
ShardingRuleConfiguration();
         ShardingRule shardingRule = new ShardingRule(shardingRuleConfig, 
mock(DatabaseType.class), createDataSourceMap());
         shardingRule.getSingleTableRules().put("t_order", new 
SingleTableRule("t_order", "ds_0"));
         shardingRule.getSingleTableRules().put("t_order_item", new 
SingleTableRule("t_order_item", "ds_1"));
         RouteContext routeContext = new RouteContext();
-        singleTableRoutingEngine.route(routeContext, shardingRule);
+        singleTablesRoutingEngine.route(routeContext, shardingRule);
         List<RouteUnit> routeUnits = new 
ArrayList<>(routeContext.getRouteUnits());
         assertThat(routeContext.getRouteUnits().size(), is(2));
         assertThat(routeUnits.get(0).getDataSourceMapper().getActualName(), 
is("ds_0"));
@@ -91,11 +91,11 @@ public final class SingleTableRoutingEngineTest {
     
     @Test
     public void assertRouteWithoutShardingRule() {
-        SingleTableRoutingEngine singleTableRoutingEngine = new 
SingleTableRoutingEngine(Arrays.asList("t_order", "t_order_item"), new 
MySQLCreateTableStatement());
+        SingleTablesRoutingEngine singleTablesRoutingEngine = new 
SingleTablesRoutingEngine(Arrays.asList("t_order", "t_order_item"), new 
MySQLCreateTableStatement());
         ShardingRuleConfiguration shardingRuleConfig = new 
ShardingRuleConfiguration();
         ShardingRule shardingRule = new ShardingRule(shardingRuleConfig, 
mock(DatabaseType.class), createDataSourceMap());
         RouteContext routeContext = new RouteContext();
-        singleTableRoutingEngine.route(routeContext, shardingRule);
+        singleTablesRoutingEngine.route(routeContext, shardingRule);
         List<RouteUnit> routeUnits = new 
ArrayList<>(routeContext.getRouteUnits());
         assertThat(routeContext.getRouteUnits().size(), is(1));
         assertThat(routeUnits.get(0).getTableMappers().size(), is(1));

Reply via email to