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