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

Reply via email to