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 85b95fa9dfb Add more test cases on
DMLShardingConditionsShardingAuditAlgorithm (#33695)
85b95fa9dfb is described below
commit 85b95fa9dfbe6d395935a11a9075a9dbb1e3e31b
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Nov 17 02:15:00 2024 +0800
Add more test cases on DMLShardingConditionsShardingAuditAlgorithm (#33695)
* Add @HighFrequencyInvocation on sharding SQLTokenGenerator's impl
* Add more test cases on DMLShardingConditionsShardingAuditAlgorithm
* Add more test cases on DMLShardingConditionsShardingAuditAlgorithm
* Add more test cases on DMLShardingConditionsShardingAuditAlgorithm
---
...MLShardingConditionsShardingAuditAlgorithm.java | 2 ++
...ardingConditionsShardingAuditAlgorithmTest.java | 41 ++++++++++++----------
2 files changed, 25 insertions(+), 18 deletions(-)
diff --git
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/algorithm/audit/DMLShardingConditionsShardingAuditAlgorithm.java
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/algorithm/audit/DMLShardingConditionsShardingAuditAlgorithm.java
index e957c1863e6..64d5f579acb 100644
---
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/algorithm/audit/DMLShardingConditionsShardingAuditAlgorithm.java
+++
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/algorithm/audit/DMLShardingConditionsShardingAuditAlgorithm.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.sharding.algorithm.audit;
+import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.binder.context.type.TableAvailable;
import
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
@@ -33,6 +34,7 @@ import java.util.List;
/**
* DML sharding conditions sharding audit algorithm.
*/
+@HighFrequencyInvocation
public final class DMLShardingConditionsShardingAuditAlgorithm implements
ShardingAuditAlgorithm {
@Override
diff --git
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/algorithm/audit/DMLShardingConditionsShardingAuditAlgorithmTest.java
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/algorithm/audit/DMLShardingConditionsShardingAuditAlgorithmTest.java
index a1765cdeffd..23a42efc8b4 100644
---
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/algorithm/audit/DMLShardingConditionsShardingAuditAlgorithmTest.java
+++
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/algorithm/audit/DMLShardingConditionsShardingAuditAlgorithmTest.java
@@ -25,52 +25,57 @@ import
org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import
org.apache.shardingsphere.sharding.exception.audit.DMLWithoutShardingKeyException;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
import org.apache.shardingsphere.sharding.spi.ShardingAuditAlgorithm;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.DDLStatement;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.dml.DMLStatement;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
import java.util.Collections;
+import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.withSettings;
+@ExtendWith(MockitoExtension.class)
class DMLShardingConditionsShardingAuditAlgorithmTest {
- private SQLStatementContext sqlStatementContext;
-
+ @Mock
private ShardingSphereDatabase database;
- private ShardingRule rule;
-
private ShardingAuditAlgorithm shardingAuditAlgorithm;
@BeforeEach
void setUp() {
shardingAuditAlgorithm =
TypedSPILoader.getService(ShardingAuditAlgorithm.class,
"DML_SHARDING_CONDITIONS");
- sqlStatementContext = mock(SQLStatementContext.class,
withSettings().extraInterfaces(TableAvailable.class).defaultAnswer(RETURNS_DEEP_STUBS));
- database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
- rule = mock(ShardingRule.class);
- when(((TableAvailable)
sqlStatementContext).getTablesContext().getTableNames()).thenReturn(Collections.singletonList("t_order"));
}
@Test
- void assertNotDMLStatementCheck() {
-
when(sqlStatementContext.getSqlStatement()).thenReturn(mock(DDLStatement.class));
- shardingAuditAlgorithm.check(sqlStatementContext,
Collections.emptyList(), mock(RuleMetaData.class), database);
- verify(database, times(0)).getRuleMetaData();
+ void assertCheckWithNotDMLStatement() {
+ assertDoesNotThrow(() ->
shardingAuditAlgorithm.check(mock(SQLStatementContext.class),
Collections.emptyList(), mock(RuleMetaData.class), database));
+ }
+
+ @Test
+ void assertCheckWithoutShardingTable() {
+ SQLStatementContext sqlStatementContext =
mock(SQLStatementContext.class,
withSettings().extraInterfaces(TableAvailable.class).defaultAnswer(RETURNS_DEEP_STUBS));
+ when(((TableAvailable)
sqlStatementContext).getTablesContext().getTableNames()).thenReturn(Collections.singleton("foo_tbl"));
+
when(sqlStatementContext.getSqlStatement()).thenReturn(mock(DMLStatement.class));
+ when(database.getRuleMetaData()).thenReturn(new
RuleMetaData(Collections.singleton(mock(ShardingRule.class))));
+ assertDoesNotThrow(() ->
shardingAuditAlgorithm.check(sqlStatementContext, Collections.emptyList(),
mock(RuleMetaData.class), database));
}
@Test
- void assertEmptyShardingConditionsCheck() {
+ void assertCheckWithShardingTable() {
+ SQLStatementContext sqlStatementContext =
mock(SQLStatementContext.class,
withSettings().extraInterfaces(TableAvailable.class).defaultAnswer(RETURNS_DEEP_STUBS));
+ when(((TableAvailable)
sqlStatementContext).getTablesContext().getTableNames()).thenReturn(Collections.singleton("foo_tbl"));
when(sqlStatementContext.getSqlStatement()).thenReturn(mock(DMLStatement.class));
- when(database.getRuleMetaData()).thenReturn(new
RuleMetaData(Collections.singletonList(rule)));
- when(rule.isShardingTable("t_order")).thenReturn(true);
+ ShardingRule rule = mock(ShardingRule.class);
+ when(rule.isShardingTable("foo_tbl")).thenReturn(true);
+ when(database.getRuleMetaData()).thenReturn(new
RuleMetaData(Collections.singleton(rule)));
assertThrows(DMLWithoutShardingKeyException.class, () ->
shardingAuditAlgorithm.check(sqlStatementContext, Collections.emptyList(),
mock(RuleMetaData.class), database));
}
}