This is an automated email from the ASF dual-hosted git repository.

yx9o 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 a45ebc06b9c Add test cases of DropBroadcastTableRuleExecutorTest 
(#33108)
a45ebc06b9c is described below

commit a45ebc06b9c32f64ccd0e980952e062cf8ce276c
Author: Liang Zhang <zhangli...@apache.org>
AuthorDate: Thu Oct 3 18:44:24 2024 +0800

    Add test cases of DropBroadcastTableRuleExecutorTest (#33108)
---
 .../update/DropBroadcastTableRuleExecutor.java     | 10 ++--
 .../CreateBroadcastTableRuleExecutorTest.java      | 16 +++----
 .../update/DropBroadcastTableRuleExecutorTest.java | 54 +++++++++++-----------
 3 files changed, 41 insertions(+), 39 deletions(-)

diff --git 
a/features/broadcast/distsql/handler/src/main/java/org/apache/shardingsphere/broadcast/distsql/handler/update/DropBroadcastTableRuleExecutor.java
 
b/features/broadcast/distsql/handler/src/main/java/org/apache/shardingsphere/broadcast/distsql/handler/update/DropBroadcastTableRuleExecutor.java
index b237d04f8a3..2204f73a6d4 100644
--- 
a/features/broadcast/distsql/handler/src/main/java/org/apache/shardingsphere/broadcast/distsql/handler/update/DropBroadcastTableRuleExecutor.java
+++ 
b/features/broadcast/distsql/handler/src/main/java/org/apache/shardingsphere/broadcast/distsql/handler/update/DropBroadcastTableRuleExecutor.java
@@ -47,14 +47,14 @@ public final class DropBroadcastTableRuleExecutor 
implements DatabaseRuleDropExe
     @Override
     public void checkBeforeUpdate(final DropBroadcastTableRuleStatement 
sqlStatement) {
         if (!sqlStatement.isIfExists()) {
-            checkBroadcastTableRuleExist(sqlStatement);
+            checkBroadcastTableExist(sqlStatement);
         }
     }
     
-    private void checkBroadcastTableRuleExist(final 
DropBroadcastTableRuleStatement sqlStatement) {
-        Collection<String> currentRules = new 
CaseInsensitiveSet<>(rule.getConfiguration().getTables());
-        Collection<String> notExistedRules = 
sqlStatement.getTables().stream().filter(each -> 
!currentRules.contains(each)).collect(Collectors.toList());
-        ShardingSpherePreconditions.checkMustEmpty(notExistedRules, () -> new 
MissingRequiredRuleException("Broadcast", database.getName(), notExistedRules));
+    private void checkBroadcastTableExist(final 
DropBroadcastTableRuleStatement sqlStatement) {
+        Collection<String> currentTableNames = new 
CaseInsensitiveSet<>(rule.getConfiguration().getTables());
+        Collection<String> notExistedTableNames = 
sqlStatement.getTables().stream().filter(each -> 
!currentTableNames.contains(each)).collect(Collectors.toList());
+        ShardingSpherePreconditions.checkMustEmpty(notExistedTableNames, () -> 
new MissingRequiredRuleException("Broadcast", database.getName(), 
notExistedTableNames));
     }
     
     @Override
diff --git 
a/features/broadcast/distsql/handler/src/test/java/org/apache/shardingsphere/broadcast/distsql/handler/update/CreateBroadcastTableRuleExecutorTest.java
 
b/features/broadcast/distsql/handler/src/test/java/org/apache/shardingsphere/broadcast/distsql/handler/update/CreateBroadcastTableRuleExecutorTest.java
index 26ce0e839af..ae57e0e4577 100644
--- 
a/features/broadcast/distsql/handler/src/test/java/org/apache/shardingsphere/broadcast/distsql/handler/update/CreateBroadcastTableRuleExecutorTest.java
+++ 
b/features/broadcast/distsql/handler/src/test/java/org/apache/shardingsphere/broadcast/distsql/handler/update/CreateBroadcastTableRuleExecutorTest.java
@@ -45,14 +45,6 @@ import static org.mockito.Mockito.when;
 
 class CreateBroadcastTableRuleExecutorTest {
     
-    private ContextManager mockContextManager(final ShardingSphereDatabase 
database, final BroadcastRule rule) {
-        ContextManager result = mock(ContextManager.class, RETURNS_DEEP_STUBS);
-        when(database.getName()).thenReturn("foo_db");
-        when(database.getRuleMetaData()).thenReturn(new RuleMetaData(null == 
rule ? Collections.emptyList() : Collections.singleton(rule)));
-        when(result.getDatabase("foo_db")).thenReturn(database);
-        return result;
-    }
-    
     @Test
     void assertExecuteUpdateWithEmptyStorageUnits() {
         CreateBroadcastTableRuleStatement sqlStatement = new 
CreateBroadcastTableRuleStatement(false, Collections.singleton("t_address"));
@@ -107,4 +99,12 @@ class CreateBroadcastTableRuleExecutorTest {
         
verify(metaDataManagerPersistService).alterRuleConfiguration(eq("foo_db"),
                 ArgumentMatchers.<BroadcastRuleConfiguration>argThat(x -> 
x.getTables().equals(new HashSet<>(Arrays.asList("foo_tbl", "bar_tbl")))));
     }
+    
+    private ContextManager mockContextManager(final ShardingSphereDatabase 
database, final BroadcastRule rule) {
+        ContextManager result = mock(ContextManager.class, RETURNS_DEEP_STUBS);
+        when(database.getName()).thenReturn("foo_db");
+        when(database.getRuleMetaData()).thenReturn(new RuleMetaData(null == 
rule ? Collections.emptyList() : Collections.singleton(rule)));
+        when(result.getDatabase("foo_db")).thenReturn(database);
+        return result;
+    }
 }
diff --git 
a/features/broadcast/distsql/handler/src/test/java/org/apache/shardingsphere/broadcast/distsql/handler/update/DropBroadcastTableRuleExecutorTest.java
 
b/features/broadcast/distsql/handler/src/test/java/org/apache/shardingsphere/broadcast/distsql/handler/update/DropBroadcastTableRuleExecutorTest.java
index 70540bcaf23..c8ce8ab05a4 100644
--- 
a/features/broadcast/distsql/handler/src/test/java/org/apache/shardingsphere/broadcast/distsql/handler/update/DropBroadcastTableRuleExecutorTest.java
+++ 
b/features/broadcast/distsql/handler/src/test/java/org/apache/shardingsphere/broadcast/distsql/handler/update/DropBroadcastTableRuleExecutorTest.java
@@ -17,52 +17,54 @@
 
 package org.apache.shardingsphere.broadcast.distsql.handler.update;
 
-import org.apache.shardingsphere.broadcast.config.BroadcastRuleConfiguration;
 import 
org.apache.shardingsphere.broadcast.distsql.statement.DropBroadcastTableRuleStatement;
 import org.apache.shardingsphere.broadcast.rule.BroadcastRule;
+import 
org.apache.shardingsphere.distsql.handler.engine.update.DistSQLUpdateExecuteEngine;
 import 
org.apache.shardingsphere.infra.exception.kernel.metadata.rule.MissingRequiredRuleException;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-import org.junit.jupiter.api.BeforeEach;
+import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
+import org.apache.shardingsphere.mode.manager.ContextManager;
+import 
org.apache.shardingsphere.mode.persist.service.MetaDataManagerPersistService;
 import org.junit.jupiter.api.Test;
 
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
-import java.util.LinkedList;
 
 import static org.junit.jupiter.api.Assertions.assertThrows;
-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.verify;
 import static org.mockito.Mockito.when;
 
 class DropBroadcastTableRuleExecutorTest {
     
-    private final DropBroadcastTableRuleExecutor executor = new 
DropBroadcastTableRuleExecutor();
-    
-    @BeforeEach
-    void setUp() {
+    @Test
+    void assertExecuteUpdateWithoutToBeDroppedTables() {
+        DropBroadcastTableRuleStatement sqlStatement = new 
DropBroadcastTableRuleStatement(false, Collections.singleton("foo_tbl"));
         ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, 
RETURNS_DEEP_STUBS);
-        when(database.getName()).thenReturn("sharding_db");
-        executor.setDatabase(database);
+        BroadcastRule rule = mock(BroadcastRule.class, RETURNS_DEEP_STUBS);
+        assertThrows(MissingRequiredRuleException.class, () -> new 
DistSQLUpdateExecuteEngine(sqlStatement, "foo_db", mockContextManager(database, 
rule)).executeUpdate());
     }
     
     @Test
-    void assertCheckSQLStatementWithoutToBeDroppedRule() {
-        DropBroadcastTableRuleStatement sqlStatement = new 
DropBroadcastTableRuleStatement(false, Collections.singleton("t_address"));
-        BroadcastRule rule = mock(BroadcastRule.class);
-        when(rule.getConfiguration()).thenReturn(new 
BroadcastRuleConfiguration(Collections.emptyList()));
-        executor.setRule(rule);
-        assertThrows(MissingRequiredRuleException.class, () -> 
executor.checkBeforeUpdate(sqlStatement));
+    void assertExecuteUpdate() throws SQLException {
+        DropBroadcastTableRuleStatement sqlStatement = new 
DropBroadcastTableRuleStatement(true, new ArrayList<>(Arrays.asList("foo_tbl", 
"bar_tbl")));
+        ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, 
RETURNS_DEEP_STUBS);
+        BroadcastRule rule = mock(BroadcastRule.class, RETURNS_DEEP_STUBS);
+        
when(rule.getConfiguration().getTables()).thenReturn(Collections.singleton("foo_tbl"));
+        ContextManager contextManager = mockContextManager(database, rule);
+        new DistSQLUpdateExecuteEngine(sqlStatement, "foo_db", 
contextManager).executeUpdate();
+        MetaDataManagerPersistService metaDataManagerPersistService = 
contextManager.getPersistServiceFacade().getMetaDataManagerPersistService();
+        
verify(metaDataManagerPersistService).removeRuleConfiguration("foo_db", 
"broadcast");
     }
     
-    @Test
-    void assertUpdateCurrentRuleConfiguration() {
-        BroadcastRuleConfiguration config = new BroadcastRuleConfiguration(new 
LinkedList<>());
-        config.getTables().add("t_address");
-        BroadcastRule rule = mock(BroadcastRule.class);
-        when(rule.getConfiguration()).thenReturn(config);
-        executor.setRule(rule);
-        DropBroadcastTableRuleStatement sqlStatement = new 
DropBroadcastTableRuleStatement(false, Collections.singleton("t_address"));
-        BroadcastRuleConfiguration toBeAlteredConfig = 
executor.buildToBeAlteredRuleConfiguration(sqlStatement);
-        assertTrue(toBeAlteredConfig.getTables().isEmpty());
+    private ContextManager mockContextManager(final ShardingSphereDatabase 
database, final BroadcastRule rule) {
+        ContextManager result = mock(ContextManager.class, RETURNS_DEEP_STUBS);
+        when(database.getName()).thenReturn("foo_db");
+        when(database.getRuleMetaData()).thenReturn(new RuleMetaData(null == 
rule ? Collections.emptyList() : Collections.singleton(rule)));
+        when(result.getDatabase("foo_db")).thenReturn(database);
+        return result;
     }
 }

Reply via email to