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 e99d425edca Refactor ContextManagerTest (#31919)
e99d425edca is described below

commit e99d425edca1a8fd6f8278545e185e6794310d8b
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Jun 29 12:02:08 2024 +0800

    Refactor ContextManagerTest (#31919)
    
    * Refactor ContextManagerTest
    
    * Refactor SingleRuleConfigurationDecorator
---
 .../SingleRuleConfigurationDecorator.java          | 81 ++++++++++------------
 .../mode/manager/ContextManagerTest.java           | 12 +++-
 2 files changed, 47 insertions(+), 46 deletions(-)

diff --git 
a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/decorator/SingleRuleConfigurationDecorator.java
 
b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/decorator/SingleRuleConfigurationDecorator.java
index 458441cae88..4eb6a573b2a 100644
--- 
a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/decorator/SingleRuleConfigurationDecorator.java
+++ 
b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/decorator/SingleRuleConfigurationDecorator.java
@@ -40,6 +40,7 @@ import java.util.LinkedHashSet;
 import java.util.LinkedList;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.stream.Collectors;
 
 /**
  * Single rule configuration decorator.
@@ -78,6 +79,35 @@ public final class SingleRuleConfigurationDecorator 
implements RuleConfiguration
         return splitTables.stream().anyMatch(each -> 
each.contains(SingleTableConstants.ASTERISK));
     }
     
+    private void checkRuleConfiguration(final String databaseName, final 
Map<String, DataSource> dataSources, final Collection<String> excludedTables, 
final Collection<DataNode> dataNodes) {
+        for (DataNode each : dataNodes) {
+            if 
(!SingleTableConstants.ASTERISK.equals(each.getDataSourceName())) {
+                ShardingSpherePreconditions.checkContainsKey(dataSources, 
each.getDataSourceName(),
+                        () -> new 
InvalidSingleRuleConfigurationException(String.format("Data source `%s` does 
not exist in database `%s`", each.getDataSourceName(), databaseName)));
+            }
+            ShardingSpherePreconditions.checkNotContains(excludedTables, 
each.getTableName(),
+                    () -> new 
InvalidSingleRuleConfigurationException(String.format("Table `%s` existed and 
is not a single table in database `%s`", each.getTableName(), databaseName)));
+        }
+    }
+    
+    private Collection<String> loadAllTables(final boolean 
isSchemaSupportedDatabaseType, final Map<String, Collection<DataNode>> 
actualDataNodes) {
+        return actualDataNodes.values().stream().map(each -> 
getTableNodeString(isSchemaSupportedDatabaseType, 
each.iterator().next())).collect(Collectors.toList());
+    }
+    
+    private String getTableNodeString(final boolean 
isSchemaSupportedDatabaseType, final DataNode dataNode) {
+        return isSchemaSupportedDatabaseType
+                ? formatTableName(dataNode.getDataSourceName(), 
dataNode.getSchemaName(), dataNode.getTableName())
+                : formatTableName(dataNode.getDataSourceName(), 
dataNode.getTableName());
+    }
+    
+    private String formatTableName(final String dataSourceName, final String 
schemaName, final String tableName) {
+        return String.format("%s.%s.%s", dataSourceName, schemaName, 
tableName);
+    }
+    
+    private String formatTableName(final String dataSourceName, final String 
tableName) {
+        return String.format("%s.%s", dataSourceName, tableName);
+    }
+    
     private Collection<String> loadSpecifiedTables(final boolean 
isSchemaSupportedDatabaseType, final Map<String, Collection<DataNode>> 
actualDataNodes,
                                                    final 
Collection<ShardingSphereRule> builtRules, final Collection<DataNode> 
configuredDataNodes) {
         Collection<String> expandRequiredDataSources = new 
LinkedHashSet<>(configuredDataNodes.size(), 1F);
@@ -89,11 +119,10 @@ public final class SingleRuleConfigurationDecorator 
implements RuleConfiguration
                 expectedDataNodes.put(each.getTableName(), each);
             }
         }
-        if (expandRequiredDataSources.isEmpty()) {
-            return 
loadSpecifiedTablesWithoutExpand(isSchemaSupportedDatabaseType, 
actualDataNodes, configuredDataNodes);
-        }
-        Collection<String> featureRequiredSingleTables = 
SingleTableLoadUtils.getFeatureRequiredSingleTables(builtRules);
-        return loadSpecifiedTablesWithExpand(isSchemaSupportedDatabaseType, 
actualDataNodes, featureRequiredSingleTables, expandRequiredDataSources, 
expectedDataNodes);
+        return expandRequiredDataSources.isEmpty()
+                ? 
loadSpecifiedTablesWithoutExpand(isSchemaSupportedDatabaseType, 
actualDataNodes, configuredDataNodes)
+                : loadSpecifiedTablesWithExpand(
+                        isSchemaSupportedDatabaseType, actualDataNodes, 
SingleTableLoadUtils.getFeatureRequiredSingleTables(builtRules), 
expandRequiredDataSources, expectedDataNodes);
     }
     
     private Collection<String> loadSpecifiedTablesWithExpand(final boolean 
isSchemaSupportedDatabaseType, final Map<String, Collection<DataNode>> 
actualDataNodes,
@@ -121,54 +150,20 @@ public final class SingleRuleConfigurationDecorator 
implements RuleConfiguration
         return result;
     }
     
-    private Collection<String> loadSpecifiedTablesWithoutExpand(final boolean 
isSchemaSupportedDatabaseType, final Map<String, Collection<DataNode>> 
actualDataNodes,
-                                                                final 
Collection<DataNode> configuredDataNodes) {
+    private Collection<String> loadSpecifiedTablesWithoutExpand(final boolean 
isSchemaSupportedDatabaseType,
+                                                                final 
Map<String, Collection<DataNode>> actualDataNodes, final Collection<DataNode> 
configuredDataNodes) {
         Collection<String> result = new 
LinkedHashSet<>(configuredDataNodes.size(), 1F);
         for (DataNode each : configuredDataNodes) {
             ShardingSpherePreconditions.checkContainsKey(actualDataNodes, 
each.getTableName(), () -> new 
SingleTableNotFoundException(getTableNodeString(isSchemaSupportedDatabaseType, 
each)));
             DataNode actualDataNode = 
actualDataNodes.get(each.getTableName()).iterator().next();
             String tableNodeStr = 
getTableNodeString(isSchemaSupportedDatabaseType, actualDataNode);
-            ShardingSpherePreconditions.checkState(actualDataNode.equals(each),
-                    () -> new 
InvalidSingleRuleConfigurationException(String.format("Single table '%s' is 
found that does not match %s", tableNodeStr,
-                            getTableNodeString(isSchemaSupportedDatabaseType, 
each))));
+            
ShardingSpherePreconditions.checkState(actualDataNode.equals(each), () -> new 
InvalidSingleRuleConfigurationException(
+                    String.format("Single table '%s' is found that does not 
match %s", tableNodeStr, getTableNodeString(isSchemaSupportedDatabaseType, 
each))));
             result.add(tableNodeStr);
         }
         return result;
     }
     
-    private Collection<String> loadAllTables(final boolean 
isSchemaSupportedDatabaseType, final Map<String, Collection<DataNode>> 
actualDataNodes) {
-        Collection<String> result = new LinkedList<>();
-        for (Entry<String, Collection<DataNode>> entry : 
actualDataNodes.entrySet()) {
-            result.add(getTableNodeString(isSchemaSupportedDatabaseType, 
entry.getValue().iterator().next()));
-        }
-        return result;
-    }
-    
-    private String getTableNodeString(final boolean 
isSchemaSupportedDatabaseType, final DataNode dataNode) {
-        return isSchemaSupportedDatabaseType
-                ? formatTableName(dataNode.getDataSourceName(), 
dataNode.getSchemaName(), dataNode.getTableName())
-                : formatTableName(dataNode.getDataSourceName(), 
dataNode.getTableName());
-    }
-    
-    private void checkRuleConfiguration(final String databaseName, final 
Map<String, DataSource> dataSources, final Collection<String> excludedTables, 
final Collection<DataNode> dataNodes) {
-        for (DataNode each : dataNodes) {
-            if 
(!SingleTableConstants.ASTERISK.equals(each.getDataSourceName())) {
-                ShardingSpherePreconditions.checkContainsKey(dataSources, 
each.getDataSourceName(),
-                        () -> new 
InvalidSingleRuleConfigurationException(String.format("Data source `%s` does 
not exist in database `%s`", each.getDataSourceName(), databaseName)));
-            }
-            ShardingSpherePreconditions.checkNotContains(excludedTables, 
each.getTableName(),
-                    () -> new 
InvalidSingleRuleConfigurationException(String.format("Table `%s` existed and 
is not a single table in database `%s`", each.getTableName(), databaseName)));
-        }
-    }
-    
-    private String formatTableName(final String dataSourceName, final String 
tableName) {
-        return String.format("%s.%s", dataSourceName, tableName);
-    }
-    
-    private String formatTableName(final String dataSourceName, final String 
schemaName, final String tableName) {
-        return String.format("%s.%s.%s", dataSourceName, schemaName, 
tableName);
-    }
-    
     @Override
     public Class<SingleRuleConfiguration> getType() {
         return SingleRuleConfiguration.class;
diff --git 
a/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
 
b/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
index cb4e3ba07ea..9bc2010ca2b 100644
--- 
a/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
+++ 
b/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.mode.manager;
 import org.apache.groovy.util.Maps;
 import org.apache.shardingsphere.infra.config.mode.ModeConfiguration;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
-import org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
 import org.apache.shardingsphere.infra.database.core.DefaultDatabase;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
 import org.apache.shardingsphere.infra.datanode.DataNode;
@@ -49,6 +48,12 @@ import org.apache.shardingsphere.test.util.PropertiesBuilder;
 import org.apache.shardingsphere.test.util.PropertiesBuilder.Property;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.Answers;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+import org.mockito.junit.jupiter.MockitoSettings;
+import org.mockito.quality.Strictness;
 
 import java.sql.Types;
 import java.util.Collections;
@@ -72,16 +77,17 @@ import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+@ExtendWith(MockitoExtension.class)
+@MockitoSettings(strictness = Strictness.LENIENT)
 class ContextManagerTest {
     
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
     private MetaDataContexts metaDataContexts;
     
     private ContextManager contextManager;
     
     @BeforeEach
     void setUp() {
-        metaDataContexts = mock(MetaDataContexts.class, RETURNS_DEEP_STUBS);
-        
when(metaDataContexts.getMetaData().getProps().getValue(ConfigurationPropertyKey.KERNEL_EXECUTOR_SIZE)).thenReturn(1);
         when(metaDataContexts.getMetaData().getProps()).thenReturn(new 
ConfigurationProperties(new Properties()));
         ShardingSphereDatabase database = mockDatabase();
         
when(metaDataContexts.getMetaData().containsDatabase("foo_db")).thenReturn(true);

Reply via email to