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

wuweijie 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 c38362c  Fix test case for 
ContextManagerTest.assertAlterDataSourceConfiguration (#15240)
c38362c is described below

commit c38362c17645e336d43ed6bfa4d42ed0bba57f4d
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Feb 4 00:36:50 2022 +0800

    Fix test case for ContextManagerTest.assertAlterDataSourceConfiguration 
(#15240)
    
    * Refactor ContextManagerTest
    
    * Refactor ContextManagerTest
    
    * Refactor ContextManagerTest
    
    * Refactor ContextManagerTest
    
    * Fix test case for ContextManagerTest.assertAlterDataSourceConfiguration
    
    * Fix test case for ContextManagerTest.assertAlterDataSourceConfiguration
---
 .../mode/manager/ContextManager.java               | 106 ++++++-----
 .../mode/manager/ContextManagerTest.java           | 201 ++++++---------------
 2 files changed, 112 insertions(+), 195 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 8acb7b0..3e3c283 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
@@ -135,6 +135,58 @@ public final class ContextManager implements AutoCloseable 
{
     }
     
     /**
+     * Alter schema.
+     *
+     * @param schemaName schema name
+     * @param schema schema
+     */
+    public void alterSchema(final String schemaName, final 
ShardingSphereSchema schema) {
+        ShardingSphereMetaData alteredMetaData = new ShardingSphereMetaData(
+                schemaName, 
metaDataContexts.getMetaData(schemaName).getResource(), 
metaDataContexts.getMetaData(schemaName).getRuleMetaData(), schema);
+        Map<String, ShardingSphereMetaData> alteredMetaDataMap = new 
HashMap<>(metaDataContexts.getMetaDataMap());
+        alteredMetaDataMap.put(schemaName, alteredMetaData);
+        FederationSchemaMetaData alteredSchemaMetaData = new 
FederationSchemaMetaData(schemaName, schema.getTables());
+        
metaDataContexts.getOptimizerContext().getFederationMetaData().getSchemas().put(schemaName,
 alteredSchemaMetaData);
+        
metaDataContexts.getOptimizerContext().getPlannerContexts().put(schemaName, 
OptimizerPlannerContextFactory.create(alteredSchemaMetaData));
+        renewMetaDataContexts(rebuildMetaDataContexts(alteredMetaDataMap));
+    }
+    
+    /**
+     * Alter schema.
+     *
+     * @param schemaName schema name
+     * @param changedTableMetaData changed table meta data
+     * @param deletedTable deleted table
+     */
+    public void alterSchema(final String schemaName, final TableMetaData 
changedTableMetaData, final String deletedTable) {
+        ShardingSphereMetaData metaData = 
metaDataContexts.getMetaData(schemaName);
+        alterSingleTableDataNodes(metaData, changedTableMetaData);
+        FederationSchemaMetaData schemaMetaData = 
metaDataContexts.getOptimizerContext().getFederationMetaData().getSchemas().get(schemaName);
+        metaData.getSchema().put(changedTableMetaData.getName(), 
changedTableMetaData);
+        schemaMetaData.put(changedTableMetaData);
+        
metaDataContexts.getOptimizerContext().getPlannerContexts().put(schemaName, 
OptimizerPlannerContextFactory.create(schemaMetaData));
+        if (null != deletedTable) {
+            metaData.getSchema().remove(deletedTable);
+            schemaMetaData.remove(deletedTable);
+            
metaDataContexts.getOptimizerContext().getPlannerContexts().put(schemaName, 
OptimizerPlannerContextFactory.create(schemaMetaData));
+        }
+    }
+    
+    private void alterSingleTableDataNodes(final ShardingSphereMetaData 
metaData, final TableMetaData changedTableMetaData) {
+        if (!containsInDataNodeContainedRule(changedTableMetaData.getName(), 
metaData)) {
+            
metaData.getRuleMetaData().findRules(MutableDataNodeRule.class).forEach(each -> 
{
+                if 
(each.findSingleTableDataNode(changedTableMetaData.getName()).isPresent()) {
+                    each.put(changedTableMetaData.getName(), 
each.findSingleTableDataNode(changedTableMetaData.getName()).get().getDataSourceName());
+                }
+            });
+        }
+    }
+    
+    private boolean containsInDataNodeContainedRule(final String tableName, 
final ShardingSphereMetaData schemaMetaData) {
+        return 
schemaMetaData.getRuleMetaData().findRules(DataNodeContainedRule.class).stream().anyMatch(each
 -> each.getAllTables().contains(tableName));
+    }
+    
+    /**
      * Delete schema.
      * 
      * @param schemaName schema name
@@ -226,60 +278,6 @@ public final class ContextManager implements AutoCloseable 
{
     }
     
     /**
-     * Alter schema.
-     * 
-     * @param schemaName schema name
-     * @param schema schema
-     */
-    public void alterSchema(final String schemaName, final 
ShardingSphereSchema schema) {
-        ShardingSphereMetaData kernelMetaData = new 
ShardingSphereMetaData(schemaName, 
metaDataContexts.getMetaData(schemaName).getResource(),
-                metaDataContexts.getMetaData(schemaName).getRuleMetaData(), 
schema);
-        Map<String, ShardingSphereMetaData> kernelMetaDataMap = new 
HashMap<>(metaDataContexts.getMetaDataMap());
-        kernelMetaDataMap.put(schemaName, kernelMetaData);
-        FederationSchemaMetaData schemaMetaData = new 
FederationSchemaMetaData(schemaName, schema.getTables());
-        
metaDataContexts.getOptimizerContext().getFederationMetaData().getSchemas().put(schemaName,
 schemaMetaData);
-        
metaDataContexts.getOptimizerContext().getPlannerContexts().put(schemaName, 
OptimizerPlannerContextFactory.create(schemaMetaData));
-        renewMetaDataContexts(rebuildMetaDataContexts(kernelMetaDataMap));
-    }
-    
-    /**
-     * Alter schema.
-     *
-     * @param schemaName schema name
-     * @param changedTableMetaData changed table meta data                  
-     * @param deletedTable deleted table
-     */
-    public void alterSchema(final String schemaName, final TableMetaData 
changedTableMetaData, final String deletedTable) {
-        ShardingSphereMetaData metaData = 
metaDataContexts.getMetaData(schemaName);
-        alterSingleTableDataNodes(metaData, changedTableMetaData);
-        FederationSchemaMetaData schemaMetaData = 
metaDataContexts.getOptimizerContext().getFederationMetaData().getSchemas().get(schemaName);
-        if (null != changedTableMetaData) {
-            metaData.getSchema().put(changedTableMetaData.getName(), 
changedTableMetaData);
-            schemaMetaData.put(changedTableMetaData);
-            
metaDataContexts.getOptimizerContext().getPlannerContexts().put(schemaName, 
OptimizerPlannerContextFactory.create(schemaMetaData));
-        }
-        if (null != deletedTable) {
-            metaData.getSchema().remove(deletedTable);
-            schemaMetaData.remove(deletedTable);
-            
metaDataContexts.getOptimizerContext().getPlannerContexts().put(schemaName, 
OptimizerPlannerContextFactory.create(schemaMetaData));
-        }
-    }
-    
-    private void alterSingleTableDataNodes(final ShardingSphereMetaData 
metaData, final TableMetaData changedTableMetaData) {
-        if (!containsInDataNodeContainedRule(changedTableMetaData.getName(), 
metaData)) {
-            
metaData.getRuleMetaData().findRules(MutableDataNodeRule.class).forEach(each -> 
{
-                if 
(each.findSingleTableDataNode(changedTableMetaData.getName()).isPresent()) {
-                    each.put(changedTableMetaData.getName(), 
each.findSingleTableDataNode(changedTableMetaData.getName()).get().getDataSourceName());
-                }
-            });
-        }
-    }
-    
-    private boolean containsInDataNodeContainedRule(final String tableName, 
final ShardingSphereMetaData schemaMetaData) {
-        return 
schemaMetaData.getRuleMetaData().findRules(DataNodeContainedRule.class).stream().anyMatch(each
 -> each.getAllTables().contains(tableName));
-    }
-    
-    /**
      * Alter global rule configuration.
      * 
      * @param ruleConfigurations global rule configuration
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 625978a..8000fea 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
@@ -22,7 +22,6 @@ import 
org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.DefaultSchema;
 import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.infra.datasource.props.DataSourceProperties;
-import 
org.apache.shardingsphere.infra.federation.optimizer.context.OptimizerContext;
 import 
org.apache.shardingsphere.infra.federation.optimizer.context.parser.OptimizerParserContext;
 import 
org.apache.shardingsphere.infra.federation.optimizer.context.planner.OptimizerPlannerContext;
 import 
org.apache.shardingsphere.infra.federation.optimizer.metadata.FederationMetaData;
@@ -41,7 +40,6 @@ import 
org.apache.shardingsphere.mode.metadata.persist.service.SchemaMetaDataPer
 import org.apache.shardingsphere.test.mock.MockedDataSource;
 import org.apache.shardingsphere.transaction.context.TransactionContexts;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Answers;
@@ -66,7 +64,6 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
 import static org.mockito.Mockito.mock;
@@ -77,28 +74,27 @@ import static org.mockito.Mockito.when;
 @RunWith(MockitoJUnitRunner.class)
 public final class ContextManagerTest {
     
-    private static Map<String, DataSource> dataSourceMap;
-    
     @Mock(answer = Answers.RETURNS_DEEP_STUBS)
     private MetaDataContexts metaDataContexts;
     
-    @Mock
-    private TransactionContexts transactionContexts;
-    
-    @Mock
-    private InstanceContext instanceContext;
-    
     private ContextManager contextManager;
     
     @Before
     public void setUp() throws SQLException {
         contextManager = new ContextManager();
-        contextManager.init(metaDataContexts, transactionContexts, 
instanceContext);
-        dataSourceMap = new HashMap<>(2, 1);
-        DataSource primaryDataSource = mock(DataSource.class);
-        DataSource replicaDataSource = mock(DataSource.class);
-        dataSourceMap.put("test_primary_ds", primaryDataSource);
-        dataSourceMap.put("test_replica_ds", replicaDataSource);
+        contextManager.init(metaDataContexts, mock(TransactionContexts.class), 
mock(InstanceContext.class));
+        
when(metaDataContexts.getGlobalRuleMetaData()).thenReturn(mock(ShardingSphereRuleMetaData.class,
 RETURNS_DEEP_STUBS));
+        
when(metaDataContexts.getOptimizerContext().getFederationMetaData().getSchemas()).thenReturn(new
 LinkedHashMap<>());
+        when(metaDataContexts.getProps()).thenReturn(new 
ConfigurationProperties(new Properties()));
+    }
+    
+    @Test
+    public void assertGetDataSourceMap() {
+        ShardingSphereResource resource = new ShardingSphereResource(
+                Collections.singletonMap("foo_ds", new MockedDataSource()), 
mock(DataSourcesMetaData.class), mock(CachedDatabaseMetaData.class), 
mock(DatabaseType.class));
+        
when(metaDataContexts.getMetaData(DefaultSchema.LOGIC_NAME)).thenReturn(
+                new ShardingSphereMetaData(DefaultSchema.LOGIC_NAME, resource, 
mock(ShardingSphereRuleMetaData.class), new ShardingSphereSchema()));
+        
assertThat(contextManager.getDataSourceMap(DefaultSchema.LOGIC_NAME).size(), 
is(1));
     }
     
     @Test
@@ -116,101 +112,59 @@ public final class ContextManagerTest {
     }
     
     @Test
-    public void assertGetDataSourceMap() {
-        ShardingSphereResource resource = new 
ShardingSphereResource(dataSourceMap, mock(DataSourcesMetaData.class), 
mock(CachedDatabaseMetaData.class), mock(DatabaseType.class));
-        when(metaDataContexts.getMetaData(anyString())).thenReturn(new 
ShardingSphereMetaData("logic_schema", resource, 
mock(ShardingSphereRuleMetaData.class), new ShardingSphereSchema()));
-        
assertThat(contextManager.getDataSourceMap(DefaultSchema.LOGIC_NAME).size(), 
is(2));
-    }
-    
-    @Test
     public void assertAddSchema() throws SQLException {
         when(metaDataContexts.getMetaDataMap()).thenReturn(new 
LinkedHashMap<>());
-        
when(metaDataContexts.getGlobalRuleMetaData()).thenReturn(mock(ShardingSphereRuleMetaData.class,
 RETURNS_DEEP_STUBS));
-        
when(metaDataContexts.getOptimizerContext().getFederationMetaData().getSchemas()).thenReturn(new
 LinkedHashMap<>());
-        
when(metaDataContexts.getProps()).thenReturn(mock(ConfigurationProperties.class));
-        contextManager.addSchema("test_add_schema");
-        
assertTrue(metaDataContexts.getMetaDataMap().containsKey("test_add_schema"));
-        
assertTrue(metaDataContexts.getOptimizerContext().getFederationMetaData().getSchemas().containsKey("test_add_schema"));
+        contextManager.addSchema("foo_schema");
+        
assertTrue(contextManager.getMetaDataContexts().getMetaDataMap().containsKey("foo_schema"));
+        
assertTrue(contextManager.getMetaDataContexts().getOptimizerContext().getFederationMetaData().getSchemas().containsKey("foo_schema"));
     }
     
     @Test
-    public void assertDeleteSchema() {
-        Map<String, ShardingSphereMetaData> metaDataMap = new 
LinkedHashMap<>();
-        metaDataMap.put("test_delete_schema", 
mock(ShardingSphereMetaData.class));
-        when(metaDataContexts.getMetaDataMap()).thenReturn(metaDataMap);
-        FederationSchemaMetaData federationSchemaMetaData = 
mock(FederationSchemaMetaData.class);
-        Map<String, FederationSchemaMetaData> federationSchemaMetaDataMap = 
new LinkedHashMap<>();
-        federationSchemaMetaDataMap.put("test_delete_schema", 
federationSchemaMetaData);
-        
when(metaDataContexts.getOptimizerContext().getFederationMetaData().getSchemas()).thenReturn(federationSchemaMetaDataMap);
-        Map<String, OptimizerParserContext> parserContexts = new 
LinkedHashMap<>();
-        parserContexts.put("test_delete_schema", 
mock(OptimizerParserContext.class));
-        
when(metaDataContexts.getOptimizerContext().getParserContexts()).thenReturn(parserContexts);
-        Map<String, OptimizerPlannerContext> plannerContexts = new 
LinkedHashMap<>();
-        plannerContexts.put("test_delete_schema", 
mock(OptimizerPlannerContext.class));
-        
when(metaDataContexts.getOptimizerContext().getPlannerContexts()).thenReturn(plannerContexts);
-        contextManager.deleteSchema("test_delete_schema");
-        
assertFalse(metaDataContexts.getMetaDataMap().containsKey("test_delete_schema"));
-        
assertFalse(metaDataContexts.getOptimizerContext().getFederationMetaData().getSchemas().containsKey("test_delete_schema"));
-        assertFalse(parserContexts.containsKey("test_delete_schema"));
-        assertFalse(plannerContexts.containsKey("test_delete_schema"));
+    public void assertAlterSchema() {
+        contextManager.alterSchema("foo_schema", new 
ShardingSphereSchema(Collections.singletonMap("foo_table", new 
TableMetaData("foo_table", Collections.emptyList(), Collections.emptyList()))));
+        
assertTrue(contextManager.getMetaDataContexts().getMetaDataMap().get("foo_schema").getSchema().containsTable("foo_table"));
+        
assertTrue(contextManager.getMetaDataContexts().getOptimizerContext().getFederationMetaData().getSchemas().get("foo_schema").getTables().containsKey("foo_table"));
     }
     
     @Test
-    public void assertAlterSchema() {
-        Map<String, ShardingSphereMetaData> metaDataMap = new 
LinkedHashMap<>();
-        ShardingSphereMetaData shardingSphereMetaData = 
mock(ShardingSphereMetaData.class, RETURNS_DEEP_STUBS);
-        metaDataMap.put("test_schema", shardingSphereMetaData);
-        when(metaDataContexts.getMetaDataMap()).thenReturn(metaDataMap);
-        
when(metaDataContexts.getMetaData("test_schema")).thenReturn(shardingSphereMetaData);
-        
when(metaDataContexts.getOptimizerContext().getFederationMetaData().getSchemas()).thenReturn(new
 LinkedHashMap<>());
-        Map<String, TableMetaData> tables = new HashMap<>();
-        tables.put("test_table_1", new TableMetaData("test_table_1", 
Collections.emptyList(), Collections.emptyList()));
-        contextManager.alterSchema("test_schema", new 
ShardingSphereSchema(tables));
-        
assertTrue(metaDataContexts.getOptimizerContext().getFederationMetaData().getSchemas().get("test_schema").getTables().containsKey("test_table_1"));
+    public void assertDeleteSchema() {
+        when(metaDataContexts.getMetaDataMap()).thenReturn(new 
HashMap<>(Collections.singletonMap("foo_schema", 
mock(ShardingSphereMetaData.class))));
+        
when(metaDataContexts.getOptimizerContext().getFederationMetaData().getSchemas()).thenReturn(new
 HashMap<>(Collections.singletonMap("foo_schema", 
mock(FederationSchemaMetaData.class))));
+        
when(metaDataContexts.getOptimizerContext().getParserContexts()).thenReturn(new 
HashMap<>(Collections.singletonMap("foo_schema", 
mock(OptimizerParserContext.class))));
+        
when(metaDataContexts.getOptimizerContext().getPlannerContexts()).thenReturn(new
 HashMap<>(Collections.singletonMap("foo_schema", 
mock(OptimizerPlannerContext.class))));
+        contextManager.deleteSchema("foo_schema");
+        
assertFalse(contextManager.getMetaDataContexts().getMetaDataMap().containsKey("foo_schema"));
+        
assertFalse(contextManager.getMetaDataContexts().getOptimizerContext().getFederationMetaData().getSchemas().containsKey("foo_schema"));
+        
assertFalse(contextManager.getMetaDataContexts().getOptimizerContext().getParserContexts().containsKey("foo_schema"));
+        
assertFalse(contextManager.getMetaDataContexts().getOptimizerContext().getPlannerContexts().containsKey("foo_schema"));
     }
     
     @Test
     public void assertAddResource() throws SQLException {
-        ShardingSphereMetaData originalMetaData = mockOriginalMetaData();
-        
when(metaDataContexts.getMetaData("test_schema")).thenReturn(originalMetaData);
-        Map<String, ShardingSphereMetaData> metaDataMap = new 
LinkedHashMap<>();
-        metaDataMap.put("test_schema", originalMetaData);
-        when(metaDataContexts.getMetaDataMap()).thenReturn(metaDataMap);
-        ShardingSphereRuleMetaData globalRuleMetaData = 
mock(ShardingSphereRuleMetaData.class);
-        when(globalRuleMetaData.getConfigurations()).thenReturn(new 
LinkedList<>());
-        
when(metaDataContexts.getGlobalRuleMetaData()).thenReturn(globalRuleMetaData);
-        
when(metaDataContexts.getOptimizerContext()).thenReturn(mock(OptimizerContext.class));
-        
when(metaDataContexts.getOptimizerContext().getFederationMetaData()).thenReturn(mock(FederationMetaData.class));
-        
when(metaDataContexts.getOptimizerContext().getFederationMetaData().getSchemas()).thenReturn(new
 LinkedHashMap<>());
-        
when(metaDataContexts.getOptimizerContext().getParserContexts()).thenReturn(new 
LinkedHashMap<>());
-        when(metaDataContexts.getProps()).thenReturn(new 
ConfigurationProperties(new Properties()));
-        contextManager.addResource("test_schema", 
createToBeAddedDataSourceProperties());
-        
assertAddedDataSources(contextManager.getMetaDataContexts().getMetaDataMap().get("test_schema").getResource().getDataSources());
+        when(metaDataContexts.getMetaDataMap()).thenReturn(new 
HashMap<>(Collections.singletonMap("foo_schema", new ShardingSphereMetaData(
+                "foo_schema", mock(ShardingSphereResource.class), new 
ShardingSphereRuleMetaData(new LinkedList<>(), new LinkedList<>()), 
mock(ShardingSphereSchema.class)))));
+        
when(metaDataContexts.getGlobalRuleMetaData().getRules()).thenReturn(Collections.emptyList());
+        contextManager.addResource("foo_schema", 
createToBeAddedDataSourceProperties());
+        
assertAddedDataSources(contextManager.getMetaDataContexts().getMetaDataMap().get("foo_schema").getResource().getDataSources());
     }
     
-    private ShardingSphereMetaData mockOriginalMetaData() {
-        ShardingSphereMetaData result = mock(ShardingSphereMetaData.class, 
RETURNS_DEEP_STUBS);
-        when(result.getName()).thenReturn("test_schema");
-        when(result.getResource().getDataSources()).thenReturn(new 
LinkedHashMap<>());
-        when(result.getRuleMetaData().getConfigurations()).thenReturn(new 
LinkedList<>());
+    private Map<String, DataSourceProperties> 
createToBeAddedDataSourceProperties() {
+        Map<String, DataSourceProperties> result = new LinkedHashMap<>(2, 1);
+        result.put("foo_ds_1", new 
DataSourceProperties(MockedDataSource.class.getName(), createProperties("root", 
"root")));
+        result.put("foo_ds_2", new 
DataSourceProperties(MockedDataSource.class.getName(), createProperties("root", 
"root")));
         return result;
     }
     
     private void assertAddedDataSources(final Map<String, DataSource> actual) {
-        
assertThat(contextManager.getMetaDataContexts().getMetaDataMap().get("test_schema").getResource().getDataSources().size(),
 is(2));
-        assertTrue(actual.containsKey("foo_ds_1"));
-        assertDataSource((MockedDataSource) actual.get("foo_ds_1"));
-        assertTrue(actual.containsKey("foo_ds_2"));
-        assertDataSource((MockedDataSource) actual.get("foo_ds_2"));
+        assertThat(actual.size(), is(2));
+        assertAddedDataSource((MockedDataSource) actual.get("foo_ds_1"));
+        assertAddedDataSource((MockedDataSource) actual.get("foo_ds_2"));
     }
     
-    private Map<String, DataSourceProperties> 
createToBeAddedDataSourceProperties() {
-        Properties dataSourceProps = new Properties();
-        dataSourceProps.put("jdbcUrl", "jdbc:mock://127.0.0.1/foo_ds");
-        Map<String, DataSourceProperties> result = new LinkedHashMap<>();
-        result.put("foo_ds_1", new 
DataSourceProperties(MockedDataSource.class.getName(), 
createProperties(dataSourceProps)));
-        result.put("foo_ds_2", new 
DataSourceProperties(MockedDataSource.class.getName(), 
createProperties(dataSourceProps)));
-        return result;
+    private void assertAddedDataSource(final MockedDataSource actual) {
+        assertThat(actual.getUrl(), is("jdbc:mock://127.0.0.1/foo_ds"));
+        assertThat(actual.getUsername(), is("root"));
+        assertThat(actual.getPassword(), is("root"));
     }
     
     @Test
@@ -226,34 +180,17 @@ public final class ContextManagerTest {
         metaDataMap.put("test_schema", originalMetaData);
         when(metaDataContexts.getMetaDataMap()).thenReturn(metaDataMap);
         
when(metaDataContexts.getMetaData("test_schema")).thenReturn(originalMetaData);
-        ShardingSphereRuleMetaData globalShardingSphereRuleMetaData = 
mock(ShardingSphereRuleMetaData.class);
-        
when(globalShardingSphereRuleMetaData.getConfigurations()).thenReturn(new 
LinkedList<>());
-        
when(metaDataContexts.getGlobalRuleMetaData()).thenReturn(globalShardingSphereRuleMetaData);
-        
when(metaDataContexts.getOptimizerContext()).thenReturn(mock(OptimizerContext.class));
+        
when(metaDataContexts.getGlobalRuleMetaData().getRules()).thenReturn(Collections.emptyList());
         
when(metaDataContexts.getOptimizerContext().getFederationMetaData()).thenReturn(mock(FederationMetaData.class));
-        
when(metaDataContexts.getOptimizerContext().getFederationMetaData().getSchemas()).thenReturn(new
 LinkedHashMap<>());
         
when(metaDataContexts.getOptimizerContext().getParserContexts()).thenReturn(new 
LinkedHashMap<>());
-        when(metaDataContexts.getProps()).thenReturn(new 
ConfigurationProperties(new Properties()));
-        contextManager.alterResource("test_schema", 
createToBeAlteredDataSourceProperties());
+        contextManager.alterResource("test_schema", 
Collections.singletonMap("foo_ds", new 
DataSourceProperties(MockedDataSource.class.getName(), createProperties("test", 
"test"))));
         assertAlteredDataSource((MockedDataSource) 
contextManager.getMetaDataContexts().getMetaDataMap().get("test_schema").getResource().getDataSources().get("foo_ds"));
     }
     
-    private Map<String, DataSourceProperties> 
createToBeAlteredDataSourceProperties() {
-        Properties dataSourceProps = new Properties();
-        dataSourceProps.put("url", "jdbc:mock://127.0.0.1/foo_ds");
-        dataSourceProps.put("username", "test");
-        dataSourceProps.put("password", "test");
-        Map<String, DataSourceProperties> result = new LinkedHashMap<>();
-        result.put("foo_ds", new 
DataSourceProperties(MockedDataSource.class.getName(), 
createProperties(dataSourceProps)));
-        return result;
-    }
-    
     private void assertAlteredDataSource(final MockedDataSource actual) {
-        assertNotNull(actual);
         assertThat(actual.getUrl(), is("jdbc:mock://127.0.0.1/foo_ds"));
         assertThat(actual.getPassword(), is("test"));
         assertThat(actual.getUsername(), is("test"));
-        assertThat(actual.getDriverClassName(), 
is(MockedDataSource.class.getName()));
     }
     
     @Test 
@@ -277,9 +214,6 @@ public final class ContextManagerTest {
         metaDataMap.put("test", shardingSphereMetaData);
         when(metaDataContexts.getMetaDataMap()).thenReturn(metaDataMap);
         
when(metaDataContexts.getMetaDataPersistService()).thenReturn(Optional.of(mock(MetaDataPersistService.class,
 RETURNS_DEEP_STUBS)));
-        
when(metaDataContexts.getGlobalRuleMetaData()).thenReturn(mock(ShardingSphereRuleMetaData.class,
 RETURNS_DEEP_STUBS));
-        
when(metaDataContexts.getOptimizerContext().getFederationMetaData().getSchemas()).thenReturn(new
 LinkedHashMap<>());
-        when(metaDataContexts.getProps()).thenReturn(new 
ConfigurationProperties(new Properties()));
         Collection<RuleConfiguration> ruleConfigs = new LinkedList<>();
         RuleConfiguration ruleConfig = mock(RuleConfiguration.class);
         ruleConfigs.add(ruleConfig);
@@ -288,8 +222,6 @@ public final class ContextManagerTest {
     }
     
     @Test
-    @Ignore
-    // TODO fix test cases
     public void assertAlterDataSourceConfiguration() {
         ShardingSphereMetaData originalMetaData = 
mock(ShardingSphereMetaData.class, RETURNS_DEEP_STUBS);
         when(originalMetaData.getName()).thenReturn("test_schema");
@@ -297,26 +229,22 @@ public final class ContextManagerTest {
         when(originalMetaData.getResource()).thenReturn(originalResource);
         ShardingSphereRuleMetaData ruleMetaData = mockRuleMetaData();
         when(originalMetaData.getRuleMetaData()).thenReturn(ruleMetaData);
-        
when(metaDataContexts.getGlobalRuleMetaData()).thenReturn(mock(ShardingSphereRuleMetaData.class));
-        when(metaDataContexts.getProps()).thenReturn(new 
ConfigurationProperties(new Properties()));
-        
when(metaDataContexts.getOptimizerContext().getFederationMetaData().getSchemas()).thenReturn(new
 LinkedHashMap<>());
         
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<>();
-        Properties dataSourceProps = new Properties();
-        dataSourceProps.put("username", "test");
-        dataSourceProps.put("password", "test");
-        newDataSourceProps.put("ds_1", new 
DataSourceProperties(MockedDataSource.class.getName(), 
createProperties(dataSourceProps)));
+        newDataSourceProps.put("ds_1", new 
DataSourceProperties(MockedDataSource.class.getName(), createProperties("test", 
"test")));
+        ShardingSphereRuleMetaData globalRuleMetaData = 
mock(ShardingSphereRuleMetaData.class);
+        when(globalRuleMetaData.getConfigurations()).thenReturn(new 
LinkedList<>());
+        
when(metaDataContexts.getGlobalRuleMetaData()).thenReturn(globalRuleMetaData);
         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 actualDs = (MockedDataSource) 
contextManager.getMetaDataContexts().getMetaData("test_schema").getResource().getDataSources().get("ds_1");
-        assertThat(actualDs.getDriverClassName(), 
is(MockedDataSource.class.getName()));
-        assertThat(actualDs.getUrl(), is("jdbc:mock://127.0.0.1/foo_ds"));
-        assertThat(actualDs.getPassword(), is("test"));
-        assertThat(actualDs.getUsername(), is("test"));
+        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"));
     }
     
     private ShardingSphereResource mockOriginalResource() {
@@ -358,12 +286,10 @@ public final class ContextManagerTest {
         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.getOptimizerContext().getFederationMetaData().getSchemas()).thenReturn(new
 LinkedHashMap<>());
         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));
-        when(metaDataContexts.getProps()).thenReturn(new 
ConfigurationProperties(new Properties()));
         contextManager.reloadMetaData("test_schema");
         verify(schemaMetaDataPersistService, 
times(1)).persist(eq("test_schema"), any(ShardingSphereSchema.class));
         contextManager.reloadMetaData("test_schema", "test_table");
@@ -373,21 +299,14 @@ public final class ContextManagerTest {
         
assertTrue(contextManager.getMetaDataContexts().getMetaData("test_schema").getResource().getDataSources().containsKey("foo_ds"));
     }
     
-    private Map<String, Object> createProperties(final Properties 
dataSourceProps) {
-        Map<String, Object> result = new HashMap(dataSourceProps);
-        result.putIfAbsent("driverClassName", 
MockedDataSource.class.getName());
+    private Map<String, Object> createProperties(final String username, final 
String password) {
+        Map<String, Object> result = new HashMap<>(3, 1);
         result.putIfAbsent("url", "jdbc:mock://127.0.0.1/foo_ds");
-        result.putIfAbsent("username", "root");
-        result.putIfAbsent("password", "root");
+        result.putIfAbsent("username", username);
+        result.putIfAbsent("password", password);
         return result;
     }
     
-    private void assertDataSource(final MockedDataSource actual) {
-        assertThat(actual.getUrl(), is("jdbc:mock://127.0.0.1/foo_ds"));
-        assertThat(actual.getUsername(), is("root"));
-        assertThat(actual.getPassword(), is("root"));
-    }
-    
     @Test
     public void assertClose() throws Exception {
         contextManager.close();

Reply via email to