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;
}
}