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