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 18afc61f6dd Add more test cases on TokenUtils (#33673)
18afc61f6dd is described below

commit 18afc61f6dd42f7ea39966a04af7e4c8e1ada497
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Nov 15 17:16:28 2024 +0800

    Add more test cases on TokenUtils (#33673)
    
    * Add more test cases on TokenUtils
    
    * Rename ShardingTokenUtils
---
 .../rewrite/token/pojo/ConstraintToken.java        |  2 +-
 .../sharding/rewrite/token/pojo/CursorToken.java   |  2 +-
 .../sharding/rewrite/token/pojo/IndexToken.java    |  2 +-
 .../rewrite/token/pojo/ShardingTableToken.java     |  2 +-
 .../{TokenUtils.java => ShardingTokenUtils.java}   | 10 +++++-----
 ...nUtilsTest.java => ShardingTokenUtilsTest.java} | 23 ++++++++++++++--------
 6 files changed, 24 insertions(+), 17 deletions(-)

diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/ConstraintToken.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/ConstraintToken.java
index 1bd8a832648..b99df39e3c9 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/ConstraintToken.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/ConstraintToken.java
@@ -58,7 +58,7 @@ public final class ConstraintToken extends SQLToken 
implements Substitutable, Ro
     
     private String getConstraintValue(final RouteUnit routeUnit) {
         StringBuilder result = new StringBuilder(identifier.getValue());
-        Map<String, String> logicAndActualTables = 
TokenUtils.getLogicAndActualTableMap(routeUnit, sqlStatementContext, 
shardingRule);
+        Map<String, String> logicAndActualTables = 
ShardingTokenUtils.getLogicAndActualTableMap(routeUnit, sqlStatementContext, 
shardingRule);
         ((TableAvailable) 
sqlStatementContext).getTablesContext().getTableNames().stream().findFirst().map(logicAndActualTables::get).ifPresent(optional
 -> result.append('_').append(optional));
         return result.toString();
     }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/CursorToken.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/CursorToken.java
index a6b7678867c..86fe4cb1a74 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/CursorToken.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/CursorToken.java
@@ -57,7 +57,7 @@ public final class CursorToken extends SQLToken implements 
Substitutable, RouteU
     }
     
     private String getCursorValue(final RouteUnit routeUnit) {
-        Map<String, String> logicAndActualTables = 
TokenUtils.getLogicAndActualTableMap(routeUnit, sqlStatementContext, 
shardingRule);
+        Map<String, String> logicAndActualTables = 
ShardingTokenUtils.getLogicAndActualTableMap(routeUnit, sqlStatementContext, 
shardingRule);
         String actualTableName = 
logicAndActualTables.values().stream().sorted().findFirst().orElse(null);
         return Strings.isNullOrEmpty(actualTableName) ? identifier.getValue() 
: identifier.getValue() + "_" + actualTableName;
     }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/IndexToken.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/IndexToken.java
index 0aa6b4da5c3..11a6fe414ec 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/IndexToken.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/IndexToken.java
@@ -73,7 +73,7 @@ public final class IndexToken extends SQLToken implements 
Substitutable, RouteUn
         if (logicTableName.isPresent() && 
!shardingRule.isShardingTable(logicTableName.get())) {
             return identifier.getValue();
         }
-        Map<String, String> logicAndActualTables = 
TokenUtils.getLogicAndActualTableMap(routeUnit, sqlStatementContext, 
shardingRule);
+        Map<String, String> logicAndActualTables = 
ShardingTokenUtils.getLogicAndActualTableMap(routeUnit, sqlStatementContext, 
shardingRule);
         String actualTableName = 
logicTableName.map(logicAndActualTables::get).orElseGet(() -> 
logicAndActualTables.isEmpty() ? null : 
logicAndActualTables.values().iterator().next());
         return IndexMetaDataUtils.getActualIndexName(identifier.getValue(), 
actualTableName);
     }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/ShardingTableToken.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/ShardingTableToken.java
index 78b57967d84..3430c1457a2 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/ShardingTableToken.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/ShardingTableToken.java
@@ -54,7 +54,7 @@ public final class ShardingTableToken extends SQLToken 
implements Substitutable,
     }
     
     private String getActualTableName(final RouteUnit routeUnit) {
-        String actualTableName = 
TokenUtils.getLogicAndActualTableMap(routeUnit, sqlStatementContext, 
shardingRule).get(tableName.getValue());
+        String actualTableName = 
ShardingTokenUtils.getLogicAndActualTableMap(routeUnit, sqlStatementContext, 
shardingRule).get(tableName.getValue());
         actualTableName = null == actualTableName ? tableName.getValue() : 
actualTableName;
         return tableName.getQuoteCharacter().wrap(actualTableName);
     }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/TokenUtils.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/ShardingTokenUtils.java
similarity index 88%
rename from 
features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/TokenUtils.java
rename to 
features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/ShardingTokenUtils.java
index 7837931db05..ee4cebf3dd1 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/TokenUtils.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/ShardingTokenUtils.java
@@ -31,20 +31,20 @@ import java.util.Collections;
 import java.util.Map;
 
 /**
- * Token utils.
+ * Sharding token utils.
  */
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class TokenUtils {
+public final class ShardingTokenUtils {
     
     /**
      * Get logic and actual table map.
      *
      * @param routeUnit route unit
      * @param sqlStatementContext SQL statement context
-     * @param shardingRule sharding rule
+     * @param rule sharding rule
      * @return key is logic table name, values is actual table belong to this 
data source
      */
-    public static Map<String, String> getLogicAndActualTableMap(final 
RouteUnit routeUnit, final SQLStatementContext sqlStatementContext, final 
ShardingRule shardingRule) {
+    public static Map<String, String> getLogicAndActualTableMap(final 
RouteUnit routeUnit, final SQLStatementContext sqlStatementContext, final 
ShardingRule rule) {
         if (!(sqlStatementContext instanceof TableAvailable)) {
             return Collections.emptyMap();
         }
@@ -52,7 +52,7 @@ public final class TokenUtils {
         Map<String, String> result = new 
CaseInsensitiveMap<>(tableNames.size(), 1F);
         for (RouteMapper each : routeUnit.getTableMappers()) {
             result.put(each.getLogicName(), each.getActualName());
-            
result.putAll(shardingRule.getLogicAndActualTablesFromBindingTable(routeUnit.getDataSourceMapper().getLogicName(),
 each.getLogicName(), each.getActualName(), tableNames));
+            
result.putAll(rule.getLogicAndActualTablesFromBindingTable(routeUnit.getDataSourceMapper().getLogicName(),
 each.getLogicName(), each.getActualName(), tableNames));
         }
         return result;
     }
diff --git 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/TokenUtilsTest.java
 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/ShardingTokenUtilsTest.java
similarity index 71%
rename from 
features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/TokenUtilsTest.java
rename to 
features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/ShardingTokenUtilsTest.java
index 49cf9693a85..90684b16957 100644
--- 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/TokenUtilsTest.java
+++ 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/ShardingTokenUtilsTest.java
@@ -31,34 +31,41 @@ import java.util.Map;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 import static org.mockito.Mockito.withSettings;
 
-class TokenUtilsTest {
+class ShardingTokenUtilsTest {
+    
+    @Test
+    void assertGetLogicAndActualTablesWithNotTableAvailable() {
+        Map<String, String> actual = 
ShardingTokenUtils.getLogicAndActualTableMap(mock(RouteUnit.class), 
mock(SQLStatementContext.class), mock(ShardingRule.class));
+        assertTrue(actual.isEmpty());
+    }
     
     @Test
     void assertGetLogicAndActualTablesFromRouteUnit() {
-        Map<String, String> actual = 
TokenUtils.getLogicAndActualTableMap(getRouteUnit(), mockSQLStatementContext(), 
mockShardingRule());
-        assertThat(actual.get("foo_table"), is("foo_table_0"));
-        assertThat(actual.get("bar_table"), is("bar_table_0"));
+        Map<String, String> actual = 
ShardingTokenUtils.getLogicAndActualTableMap(getRouteUnit(), 
mockSQLStatementContext(), mockShardingRule());
+        assertThat(actual.get("foo_tbl"), is("foo_tbl_0"));
+        assertThat(actual.get("bar_tbl"), is("bar_tbl_0"));
     }
     
     private RouteUnit getRouteUnit() {
-        return new RouteUnit(new RouteMapper(DefaultDatabase.LOGIC_NAME, 
"ds_0"), Collections.singleton(new RouteMapper("foo_table", "foo_table_0")));
+        return new RouteUnit(new RouteMapper(DefaultDatabase.LOGIC_NAME, 
"ds_0"), Collections.singleton(new RouteMapper("foo_tbl", "foo_tbl_0")));
     }
     
     private static SQLStatementContext mockSQLStatementContext() {
         SQLStatementContext result = mock(SQLStatementContext.class, 
withSettings().extraInterfaces(TableAvailable.class).defaultAnswer(RETURNS_DEEP_STUBS));
-        when(((TableAvailable) 
result).getTablesContext().getTableNames()).thenReturn(Arrays.asList("foo_table",
 "bar_table"));
+        when(((TableAvailable) 
result).getTablesContext().getTableNames()).thenReturn(Arrays.asList("foo_tbl", 
"bar_tbl"));
         return result;
     }
     
     private static ShardingRule mockShardingRule() {
         ShardingRule result = mock(ShardingRule.class);
-        
when(result.getLogicAndActualTablesFromBindingTable(DefaultDatabase.LOGIC_NAME, 
"foo_table", "foo_table_0", Arrays.asList("foo_table", "bar_table")))
-                .thenReturn(Collections.singletonMap("bar_table", 
"bar_table_0"));
+        
when(result.getLogicAndActualTablesFromBindingTable(DefaultDatabase.LOGIC_NAME, 
"foo_tbl", "foo_tbl_0", Arrays.asList("foo_tbl", "bar_tbl")))
+                .thenReturn(Collections.singletonMap("bar_tbl", "bar_tbl_0"));
         return result;
     }
 }

Reply via email to