You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2022/09/13 04:22:01 UTC

[shardingsphere] branch master updated: Revise pr 20778 (#20948)

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

zhaojinchao 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 2fffc35977b Revise pr 20778 (#20948)
2fffc35977b is described below

commit 2fffc35977ba3cb6df8679d39a6ef78351af777f
Author: Zhengqiang Duan <du...@apache.org>
AuthorDate: Tue Sep 13 12:21:53 2022 +0800

    Revise pr 20778 (#20948)
---
 .../mode/metadata/MetaDataContextsFactoryTest.java | 92 +++++++++++-----------
 1 file changed, 47 insertions(+), 45 deletions(-)

diff --git a/shardingsphere-mode/shardingsphere-mode-core/src/test/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsFactoryTest.java b/shardingsphere-mode/shardingsphere-mode-core/src/test/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsFactoryTest.java
index 3c6635ddb0d..537f5c6f02b 100644
--- a/shardingsphere-mode/shardingsphere-mode-core/src/test/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsFactoryTest.java
+++ b/shardingsphere-mode/shardingsphere-mode-core/src/test/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsFactoryTest.java
@@ -17,16 +17,10 @@
 
 package org.apache.shardingsphere.mode.metadata;
 
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
 import org.apache.shardingsphere.infra.config.database.impl.DataSourceGeneratedDatabaseConfiguration;
+import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.instance.InstanceContext;
 import org.apache.shardingsphere.infra.instance.metadata.jdbc.JDBCInstanceMetaData;
-import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabasesFactory;
 import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
@@ -44,80 +38,81 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.mockito.Answers;
 import org.mockito.Mock;
 import org.mockito.MockedStatic;
 import org.mockito.Mockito;
 import org.mockito.junit.MockitoJUnitRunner;
 
 import java.sql.SQLException;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.Map;
+import java.util.Properties;
 
+import static org.hamcrest.CoreMatchers.instanceOf;
 import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
 import static org.mockito.Mockito.any;
 import static org.mockito.Mockito.anyCollection;
 import static org.mockito.Mockito.anyMap;
 import static org.mockito.Mockito.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.mockStatic;
-import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
 import static org.mockito.Mockito.when;
 
 @RunWith(MockitoJUnitRunner.class)
 public final class MetaDataContextsFactoryTest {
     
-    @Mock
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
     private MetaDataPersistService metaDataPersistService;
     
     @Mock
     private DatabaseMetaDataPersistService databaseMetaDataPersistService;
     
-    @Mock
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
     private ShardingSphereDatabase database;
     
     @Mock
     private JDBCInstanceMetaData jdbcInstanceMetaData;
     
-    private final Properties properties = new Properties();
+    private final Collection<ShardingSphereRule> rules = new LinkedList<>();
     
-    private final Collection<ShardingSphereRule> shardingSphereRules = new LinkedList<>();
+    private final Map<String, ShardingSphereDatabase> databases = new HashMap<>();
     
-    private final Map<String, ShardingSphereDatabase> mockDatabases = new HashMap<>();
+    private MockedStatic<ShardingSphereDatabasesFactory> databasesFactory;
     
-    private MockedStatic<ShardingSphereDatabasesFactory> mockedDbFactory;
-    
-    private MockedStatic<GlobalRulesBuilder> mockedGlobalRulesBuilder;
+    private MockedStatic<GlobalRulesBuilder> globalRulesBuilder;
     
     @Before
     public void setUp() {
-        shardingSphereRules.add(new MockedRule());
-        mockDatabases.put("foo_db", database);
+        rules.add(new MockedRule());
+        databases.put("foo_db", database);
         when(metaDataPersistService.getEffectiveDataSources(eq("foo_db"), Mockito.anyMap())).thenReturn(Collections.singletonMap("foo_ds", new MockedDataSource()));
         DatabaseRulePersistService databaseRulePersistService = mockDatabaseRulePersistService();
         when(metaDataPersistService.getDatabaseRulePersistService()).thenReturn(databaseRulePersistService);
         GlobalRulePersistService globalRulePersistService = mockGlobalRulePersistService();
         when(metaDataPersistService.getGlobalRuleService()).thenReturn(globalRulePersistService);
         PropertiesPersistService propertiesPersistService = mock(PropertiesPersistService.class);
-        when(propertiesPersistService.load()).thenReturn(properties);
+        when(propertiesPersistService.load()).thenReturn(new Properties());
         when(metaDataPersistService.getPropsService()).thenReturn(propertiesPersistService);
         when(metaDataPersistService.getDatabaseMetaDataService()).thenReturn(databaseMetaDataPersistService);
         mockDatabasesFactory();
         mockGlobalRulesBuilder();
     }
     
-    @After
-    public void tearDown() {
-        mockedDbFactory.close();
-        mockedGlobalRulesBuilder.close();
-    }
-    
     private void mockDatabasesFactory() {
-        mockedDbFactory = mockStatic(ShardingSphereDatabasesFactory.class);
-        mockedDbFactory.when(() -> ShardingSphereDatabasesFactory.create(anyMap(), any(), any())).thenReturn(mockDatabases);
+        databasesFactory = mockStatic(ShardingSphereDatabasesFactory.class);
+        databasesFactory.when(() -> ShardingSphereDatabasesFactory.create(anyMap(), any(), any())).thenReturn(databases);
     }
     
     private void mockGlobalRulesBuilder() {
-        mockedGlobalRulesBuilder = mockStatic(GlobalRulesBuilder.class);
-        mockedGlobalRulesBuilder.when(() -> GlobalRulesBuilder.buildRules(anyCollection(), anyMap(), any(InstanceContext.class), any())).thenReturn(shardingSphereRules);
+        globalRulesBuilder = mockStatic(GlobalRulesBuilder.class);
+        globalRulesBuilder.when(() -> GlobalRulesBuilder.buildRules(anyCollection(), anyMap(), any(InstanceContext.class), any(ConfigurationProperties.class))).thenReturn(rules);
     }
     
     private DatabaseRulePersistService mockDatabaseRulePersistService() {
@@ -133,31 +128,38 @@ public final class MetaDataContextsFactoryTest {
     }
     
     @Test
-    public void createFactoryWithJDBCInstanceMetadata() throws SQLException {
-        InstanceContext mockInstanceContext = mock(InstanceContext.class, RETURNS_DEEP_STUBS);
-        when(mockInstanceContext.getInstance().getMetaData()).thenReturn(jdbcInstanceMetaData);
-        MetaDataContexts actual = MetaDataContextsFactory.create(metaDataPersistService, createContextManagerBuilderParameter(), mockInstanceContext);
-        assertThat(actual.getPersistService(), is(metaDataPersistService));
-        ShardingSphereMetaData actualMetaData = actual.getMetaData();
-        assertThat(actualMetaData.getGlobalRuleMetaData().getRules(), is(shardingSphereRules));
-        assertThat(actualMetaData.getDatabases(), is(mockDatabases));
-        assertThat(actualMetaData.getProps().getProps(), is(properties));
+    public void assertCreateWithJDBCInstanceMetadata() throws SQLException {
+        InstanceContext instanceContext = mock(InstanceContext.class, RETURNS_DEEP_STUBS);
+        when(instanceContext.getInstance().getMetaData()).thenReturn(jdbcInstanceMetaData);
+        try (MetaDataContexts actual = MetaDataContextsFactory.create(metaDataPersistService, createContextManagerBuilderParameter(), instanceContext);) {
+            assertThat(actual.getMetaData().getGlobalRuleMetaData().getRules().size(), is(1));
+            assertThat(actual.getMetaData().getGlobalRuleMetaData().getRules().iterator().next(), instanceOf(MockedRule.class));
+            assertTrue(actual.getMetaData().getDatabases().containsKey("foo_db"));
+            assertThat(actual.getMetaData().getDatabases().size(), is(1));
+        }
     }
     
     @Test
-    public void createFactoryWithProxyInstanceMetadata() throws SQLException {
+    public void assertCreateWithProxyInstanceMetadata() throws SQLException {
         when(databaseMetaDataPersistService.loadAllDatabaseNames()).thenReturn(Collections.singletonList("foo_db"));
         when(metaDataPersistService.getDatabaseMetaDataService()).thenReturn(databaseMetaDataPersistService);
-        MetaDataContexts actual = MetaDataContextsFactory.create(metaDataPersistService, createContextManagerBuilderParameter(), mock(InstanceContext.class, RETURNS_DEEP_STUBS));
-        assertThat(actual.getPersistService(), is(metaDataPersistService));
-        ShardingSphereMetaData actualMetaData = actual.getMetaData();
-        assertThat(actualMetaData.getGlobalRuleMetaData().getRules(), is(shardingSphereRules));
-        assertThat(actualMetaData.getDatabases(), is(mockDatabases));
-        assertThat(actualMetaData.getProps().getProps(), is(properties));
+        try (MetaDataContexts actual = MetaDataContextsFactory.create(metaDataPersistService, createContextManagerBuilderParameter(), mock(InstanceContext.class, RETURNS_DEEP_STUBS));) {
+            assertThat(actual.getPersistService(), is(metaDataPersistService));
+            assertThat(actual.getMetaData().getGlobalRuleMetaData().getRules().size(), is(1));
+            assertThat(actual.getMetaData().getGlobalRuleMetaData().getRules().iterator().next(), instanceOf(MockedRule.class));
+            assertTrue(actual.getMetaData().getDatabases().containsKey("foo_db"));
+            assertThat(actual.getMetaData().getDatabases().size(), is(1));
+        }
     }
     
     private ContextManagerBuilderParameter createContextManagerBuilderParameter() {
         return new ContextManagerBuilderParameter(null,
                 Collections.singletonMap("foo_db", mock(DataSourceGeneratedDatabaseConfiguration.class)), Collections.emptyList(), new Properties(), Collections.emptyList(), null);
     }
+    
+    @After
+    public void tearDown() {
+        databasesFactory.close();
+        globalRulesBuilder.close();
+    }
 }