You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2022/02/05 10:25:13 UTC
[shardingsphere] branch master updated: Simplify ContextManagerTest (#15247)
This is an automated email from the ASF dual-hosted git repository.
panjuan 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 74e3056 Simplify ContextManagerTest (#15247)
74e3056 is described below
commit 74e30564c16f312527b2a6da7c6b3a2b5a6c26ba
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Sat Feb 5 18:24:16 2022 +0800
Simplify ContextManagerTest (#15247)
---
.../mode/manager/ContextManager.java | 8 +-
.../mode/manager/ContextManagerTest.java | 102 +++++++--------------
.../ClusterContextManagerCoordinator.java | 2 +-
3 files changed, 40 insertions(+), 72 deletions(-)
diff --git a/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java b/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
index ce2a586..d9681f6 100644
--- a/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
+++ b/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
@@ -290,18 +290,18 @@ public final class ContextManager implements AutoCloseable {
}
/**
- * Alter props.
+ * Alter properties.
*
- * @param props props
+ * @param props properties to be altered
*/
- public void alterProps(final Properties props) {
+ public void alterProperties(final Properties props) {
renewMetaDataContexts(rebuildMetaDataContexts(new ConfigurationProperties(props)));
}
/**
* Reload meta data.
*
- * @param schemaName schema name
+ * @param schemaName schema name to be reload
*/
public void reloadMetaData(final String schemaName) {
try {
diff --git a/shardingsphere-mode/shardingsphere-mode-core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java b/shardingsphere-mode/shardingsphere-mode-core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
index 20ffdd6..6a3699c 100644
--- a/shardingsphere-mode/shardingsphere-mode-core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
+++ b/shardingsphere-mode/shardingsphere-mode-core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
@@ -47,12 +47,10 @@ import org.mockito.junit.MockitoJUnitRunner;
import javax.sql.DataSource;
import java.sql.SQLException;
-import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedList;
-import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Properties;
@@ -169,13 +167,13 @@ public final class ContextManagerTest {
public void assertAlterResource() throws SQLException {
Map<String, ShardingSphereMetaData> originalMetaDataMap = new HashMap<>(Collections.singletonMap("foo_schema", createOriginalMetaData()));
when(metaDataContexts.getMetaDataMap()).thenReturn(originalMetaDataMap);
- contextManager.alterResource("foo_schema", Collections.singletonMap("foo_ds", new DataSourceProperties(MockedDataSource.class.getName(), createProperties("test", "test"))));
- assertAlteredDataSource((MockedDataSource) contextManager.getMetaDataContexts().getMetaDataMap().get("foo_schema").getResource().getDataSources().get("foo_ds"));
+ contextManager.alterResource("foo_schema", Collections.singletonMap("bar_ds", new DataSourceProperties(MockedDataSource.class.getName(), createProperties("test", "test"))));
+ assertAlteredDataSource((MockedDataSource) contextManager.getMetaDataContexts().getMetaDataMap().get("foo_schema").getResource().getDataSources().get("bar_ds"));
}
private ShardingSphereMetaData createOriginalMetaData() {
ShardingSphereResource resource = mock(ShardingSphereResource.class);
- when(resource.getDataSources()).thenReturn(Collections.singletonMap("original_ds", new MockedDataSource()));
+ when(resource.getDataSources()).thenReturn(Collections.singletonMap("foo_ds", new MockedDataSource()));
ShardingSphereRuleMetaData ruleMetaData = mock(ShardingSphereRuleMetaData.class);
when(ruleMetaData.getConfigurations()).thenReturn(new LinkedList<>());
return new ShardingSphereMetaData("foo_schema", resource, ruleMetaData, mock(ShardingSphereSchema.class));
@@ -189,105 +187,75 @@ public final class ContextManagerTest {
@Test
public void assertDropResource() {
- ShardingSphereMetaData originalMetaData = mock(ShardingSphereMetaData.class);
- when(metaDataContexts.getMetaData("test_schema")).thenReturn(originalMetaData);
- ShardingSphereResource originalResource = mock(ShardingSphereResource.class);
- when(originalMetaData.getResource()).thenReturn(originalResource);
- Map<String, DataSource> originalDataSources = new LinkedHashMap<>();
- originalDataSources.put("ds_1", new MockedDataSource());
- when(originalResource.getDataSources()).thenReturn(originalDataSources);
- contextManager.dropResource("test_schema", Collections.singleton("ds_1"));
- assertTrue(contextManager.getMetaDataContexts().getMetaData("test_schema").getResource().getDataSources().isEmpty());
+ when(metaDataContexts.getMetaData("foo_schema").getResource().getDataSources()).thenReturn(new HashMap<>(Collections.singletonMap("foo_ds", new MockedDataSource())));
+ contextManager.dropResource("foo_schema", Collections.singleton("foo_ds"));
+ assertTrue(contextManager.getMetaDataContexts().getMetaData("foo_schema").getResource().getDataSources().isEmpty());
}
@Test
public void assertAlterRuleConfiguration() {
- Map<String, ShardingSphereMetaData> metaDataMap = new LinkedHashMap<>();
- ShardingSphereMetaData shardingSphereMetaData = new ShardingSphereMetaData(
- "test", mock(ShardingSphereResource.class), mock(ShardingSphereRuleMetaData.class), mock(ShardingSphereSchema.class));
- metaDataMap.put("test", shardingSphereMetaData);
- when(metaDataContexts.getMetaDataMap()).thenReturn(metaDataMap);
+ when(metaDataContexts.getMetaDataMap()).thenReturn(Collections.singletonMap("foo_schema",
+ new ShardingSphereMetaData("foo_schema", mock(ShardingSphereResource.class), mock(ShardingSphereRuleMetaData.class), mock(ShardingSphereSchema.class))));
when(metaDataContexts.getMetaDataPersistService()).thenReturn(Optional.of(mock(MetaDataPersistService.class, RETURNS_DEEP_STUBS)));
- Collection<RuleConfiguration> ruleConfigs = new LinkedList<>();
RuleConfiguration ruleConfig = mock(RuleConfiguration.class);
- ruleConfigs.add(ruleConfig);
- contextManager.alterRuleConfiguration("test", ruleConfigs);
- assertTrue(contextManager.getMetaDataContexts().getMetaDataMap().get("test").getRuleMetaData().getConfigurations().contains(ruleConfig));
+ contextManager.alterRuleConfiguration("foo_schema", Collections.singleton(ruleConfig));
+ assertTrue(contextManager.getMetaDataContexts().getMetaDataMap().get("foo_schema").getRuleMetaData().getConfigurations().contains(ruleConfig));
}
@Test
public void assertAlterDataSourceConfiguration() {
- ShardingSphereMetaData originalMetaData = mock(ShardingSphereMetaData.class, RETURNS_DEEP_STUBS);
- when(originalMetaData.getName()).thenReturn("test_schema");
- ShardingSphereResource originalResource = mockOriginalResource();
- when(originalMetaData.getResource()).thenReturn(originalResource);
- ShardingSphereRuleMetaData ruleMetaData = mockRuleMetaData();
- when(originalMetaData.getRuleMetaData()).thenReturn(ruleMetaData);
- when(metaDataContexts.getMetaData("test_schema")).thenReturn(originalMetaData);
- Map<String, ShardingSphereMetaData> originalMetaDataMap = new LinkedHashMap<>();
- originalMetaDataMap.put("test_schema", originalMetaData);
- when(metaDataContexts.getMetaDataMap()).thenReturn(originalMetaDataMap);
- Map<String, DataSourceProperties> newDataSourceProps = new LinkedHashMap<>();
- newDataSourceProps.put("ds_1", new DataSourceProperties(MockedDataSource.class.getName(), createProperties("test", "test")));
- contextManager.alterDataSourceConfiguration("test_schema", newDataSourceProps);
- assertTrue(contextManager.getMetaDataContexts().getMetaDataMap().containsKey("test_schema"));
- assertThat(contextManager.getMetaDataContexts().getMetaDataMap().get("test_schema").getResource().getDataSources().size(), is(1));
- MockedDataSource actualDataSource = (MockedDataSource) contextManager.getMetaDataContexts().getMetaData("test_schema").getResource().getDataSources().get("ds_1");
- assertThat(actualDataSource.getUrl(), is("jdbc:mock://127.0.0.1/foo_ds"));
- assertThat(actualDataSource.getPassword(), is("test"));
- assertThat(actualDataSource.getUsername(), is("test"));
+ ShardingSphereMetaData originalMetaData = new ShardingSphereMetaData("foo_schema", createOriginalResource(), createOriginalRuleMetaData(), mock(ShardingSphereSchema.class));
+ when(metaDataContexts.getMetaData("foo_schema")).thenReturn(originalMetaData);
+ when(metaDataContexts.getMetaDataMap()).thenReturn(Collections.singletonMap("foo_schema", originalMetaData));
+ contextManager.alterDataSourceConfiguration("foo_schema", Collections.singletonMap("foo_ds", new DataSourceProperties(MockedDataSource.class.getName(), createProperties("test", "test"))));
+ assertThat(contextManager.getMetaDataContexts().getMetaDataMap().get("foo_schema").getResource().getDataSources().size(), is(1));
+ assertAlteredDataSource((MockedDataSource) contextManager.getMetaDataContexts().getMetaData("foo_schema").getResource().getDataSources().get("foo_ds"));
}
- private ShardingSphereResource mockOriginalResource() {
- ShardingSphereResource result = mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS);
- Map<String, DataSource> originalDataSources = new LinkedHashMap<>();
+ private ShardingSphereResource createOriginalResource() {
+ ShardingSphereResource result = mock(ShardingSphereResource.class);
+ Map<String, DataSource> originalDataSources = new LinkedHashMap<>(2, 1);
originalDataSources.put("ds_1", new MockedDataSource());
originalDataSources.put("ds_2", new MockedDataSource());
when(result.getDataSources()).thenReturn(originalDataSources);
return result;
}
- private ShardingSphereRuleMetaData mockRuleMetaData() {
- ShardingSphereRuleMetaData result = mock(ShardingSphereRuleMetaData.class, RETURNS_DEEP_STUBS);
- List<RuleConfiguration> ruleConfigs = new LinkedList<>();
- ruleConfigs.add(mock(RuleConfiguration.class));
- when(result.getConfigurations()).thenReturn(ruleConfigs);
+ private ShardingSphereRuleMetaData createOriginalRuleMetaData() {
+ ShardingSphereRuleMetaData result = mock(ShardingSphereRuleMetaData.class);
+ when(result.getConfigurations()).thenReturn(Collections.singleton(mock(RuleConfiguration.class)));
return result;
}
@Test
public void assertAlterGlobalRuleConfiguration() {
- List<RuleConfiguration> newRuleConfigs = new LinkedList<>();
RuleConfiguration ruleConfig = mock(RuleConfiguration.class);
- newRuleConfigs.add(ruleConfig);
- contextManager.alterGlobalRuleConfiguration(newRuleConfigs);
+ contextManager.alterGlobalRuleConfiguration(Collections.singleton(ruleConfig));
assertTrue(contextManager.getMetaDataContexts().getGlobalRuleMetaData().getConfigurations().contains(ruleConfig));
}
@Test
public void assertAlterProps() {
- Properties newProps = new Properties();
- newProps.put("test1", "test1_value");
- contextManager.alterProps(newProps);
- assertThat(contextManager.getMetaDataContexts().getProps().getProps().get("test1"), is("test1_value"));
+ Properties props = new Properties();
+ props.put("foo", "foo_value");
+ contextManager.alterProperties(props);
+ assertThat(contextManager.getMetaDataContexts().getProps().getProps().get("foo"), is("foo_value"));
}
@Test
public void assertReloadMetaData() {
- ShardingSphereResource originalResource = mock(ShardingSphereResource.class);
- when(originalResource.getDataSources()).thenReturn(Collections.singletonMap("foo_ds", new MockedDataSource()));
- when(metaDataContexts.getMetaData("test_schema").getResource()).thenReturn(originalResource);
+ when(metaDataContexts.getMetaData("foo_schema").getResource().getDataSources()).thenReturn(Collections.singletonMap("foo_ds", new MockedDataSource()));
SchemaMetaDataPersistService schemaMetaDataPersistService = mock(SchemaMetaDataPersistService.class, RETURNS_DEEP_STUBS);
MetaDataPersistService metaDataPersistService = mock(MetaDataPersistService.class);
when(metaDataPersistService.getSchemaMetaDataService()).thenReturn(schemaMetaDataPersistService);
when(metaDataContexts.getMetaDataPersistService()).thenReturn(Optional.of(metaDataPersistService));
- contextManager.reloadMetaData("test_schema");
- verify(schemaMetaDataPersistService, times(1)).persist(eq("test_schema"), any(ShardingSphereSchema.class));
- contextManager.reloadMetaData("test_schema", "test_table");
- assertNotNull(contextManager.getMetaDataContexts().getMetaData("test_schema"));
- contextManager.reloadMetaData("test_schema", "test_table", "foo_ds");
- assertNotNull(contextManager.getMetaDataContexts().getMetaData("test_schema").getSchema());
- assertTrue(contextManager.getMetaDataContexts().getMetaData("test_schema").getResource().getDataSources().containsKey("foo_ds"));
+ contextManager.reloadMetaData("foo_schema");
+ verify(schemaMetaDataPersistService, times(1)).persist(eq("foo_schema"), any(ShardingSphereSchema.class));
+ contextManager.reloadMetaData("foo_schema", "foo_table");
+ assertNotNull(contextManager.getMetaDataContexts().getMetaData("foo_schema"));
+ contextManager.reloadMetaData("foo_schema", "foo_table", "foo_ds");
+ assertNotNull(contextManager.getMetaDataContexts().getMetaData("foo_schema").getSchema());
+ assertTrue(contextManager.getMetaDataContexts().getMetaData("foo_schema").getResource().getDataSources().containsKey("foo_ds"));
}
private Map<String, Object> createProperties(final String username, final String password) {
diff --git a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/ClusterContextManagerCoordinator.java b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/ClusterContextManagerCoordinator.java
index 8d7f021..011f35f 100644
--- a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/ClusterContextManagerCoordinator.java
+++ b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/ClusterContextManagerCoordinator.java
@@ -96,7 +96,7 @@ public final class ClusterContextManagerCoordinator {
*/
@Subscribe
public synchronized void renew(final PropertiesChangedEvent event) {
- contextManager.alterProps(event.getProps());
+ contextManager.alterProperties(event.getProps());
}
/**