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