You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by to...@apache.org on 2022/05/02 15:23:42 UTC
[shardingsphere] branch master updated: Refactor ClusterContextManagerCoordinatorTest (#17275)
This is an automated email from the ASF dual-hosted git repository.
totalo 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 f6dab84da4e Refactor ClusterContextManagerCoordinatorTest (#17275)
f6dab84da4e is described below
commit f6dab84da4ed7c45f698f7bdea0949eb9b78a93c
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Mon May 2 23:23:33 2022 +0800
Refactor ClusterContextManagerCoordinatorTest (#17275)
---
.../ClusterContextManagerCoordinatorTest.java | 119 +++++++++------------
1 file changed, 50 insertions(+), 69 deletions(-)
diff --git a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/ClusterContextManagerCoordinatorTest.java b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/ClusterContextManagerCoordinatorTest.java
index 70c21923bcd..c108cf33476 100644
--- a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/ClusterContextManagerCoordinatorTest.java
+++ b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/ClusterContextManagerCoordinatorTest.java
@@ -22,7 +22,6 @@ import org.apache.shardingsphere.authority.rule.AuthorityRule;
import org.apache.shardingsphere.infra.config.RuleConfiguration;
import org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmConfiguration;
import org.apache.shardingsphere.infra.config.mode.ModeConfiguration;
-import org.apache.shardingsphere.infra.config.mode.PersistRepositoryConfiguration;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
import org.apache.shardingsphere.infra.database.DefaultSchema;
@@ -60,9 +59,9 @@ import org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.confi
import org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.config.event.version.SchemaVersionChangedEvent;
import org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.metadata.event.DatabaseAddedEvent;
import org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.metadata.event.DatabaseDeletedEvent;
-import org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.status.compute.event.InstanceOfflineEvent;
import org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.process.ShowProcessListManager;
import org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.process.lock.ShowProcessListSimpleLock;
+import org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.status.compute.event.InstanceOfflineEvent;
import org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.status.compute.event.InstanceOnlineEvent;
import org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.status.compute.event.LabelsEvent;
import org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.status.compute.event.ShowProcessListUnitCompleteEvent;
@@ -92,7 +91,6 @@ import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.Map;
import java.util.Objects;
@@ -108,7 +106,6 @@ import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.argThat;
-import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
@@ -133,11 +130,9 @@ public final class ClusterContextManagerCoordinatorTest {
@Before
public void setUp() throws SQLException {
- PersistRepositoryConfiguration persistRepositoryConfig = new ClusterPersistRepositoryConfiguration("TEST", "", "", new Properties());
- ModeConfiguration modeConfig = new ModeConfiguration("Cluster", persistRepositoryConfig, false);
- ClusterContextManagerBuilder builder = new ClusterContextManagerBuilder();
- contextManager = builder.build(ContextManagerBuilderParameter.builder().modeConfig(modeConfig).databaseConfigs(new HashMap<>())
- .globalRuleConfigs(new LinkedList<>()).props(new Properties()).instanceDefinition(new InstanceDefinition(InstanceType.PROXY, 3307)).build());
+ ModeConfiguration modeConfig = new ModeConfiguration("Cluster", new ClusterPersistRepositoryConfiguration("TEST", "", "", new Properties()), false);
+ contextManager = new ClusterContextManagerBuilder().build(ContextManagerBuilderParameter.builder().modeConfig(modeConfig).databaseConfigs(Collections.emptyMap())
+ .globalRuleConfigs(Collections.emptyList()).props(new Properties()).instanceDefinition(new InstanceDefinition(InstanceType.PROXY, 3307)).build());
assertTrue(contextManager.getMetaDataContexts().getMetaDataPersistService().isPresent());
contextManager.renewMetaDataContexts(new MetaDataContexts(contextManager.getMetaDataContexts().getMetaDataPersistService().get(), createMetaDataMap(), globalRuleMetaData,
mock(ExecutorEngine.class), createOptimizerContext(), new ConfigurationProperties(new Properties())));
@@ -145,6 +140,23 @@ public final class ClusterContextManagerCoordinatorTest {
coordinator = new ClusterContextManagerCoordinator(metaDataPersistService, contextManager, mock(RegistryCenter.class));
}
+ private Map<String, ShardingSphereMetaData> createMetaDataMap() {
+ when(metaData.getDatabaseName()).thenReturn("db");
+ ShardingSphereResource resource = mock(ShardingSphereResource.class);
+ when(resource.getDatabaseType()).thenReturn(new MySQLDatabaseType());
+ when(metaData.getResource()).thenReturn(resource);
+ when(metaData.getSchemaByName(DefaultSchema.LOGIC_NAME)).thenReturn(mock(ShardingSphereSchema.class));
+ when(metaData.getRuleMetaData().getRules()).thenReturn(new LinkedList<>());
+ when(metaData.getRuleMetaData().getConfigurations()).thenReturn(Collections.emptyList());
+ return new HashMap<>(Collections.singletonMap("db", metaData));
+ }
+
+ private OptimizerContext createOptimizerContext() {
+ OptimizerContext result = mock(OptimizerContext.class, RETURNS_DEEP_STUBS);
+ when(result.getFederationMetaData().getDatabases()).thenReturn(new HashMap<>(Collections.singletonMap("db", new FederationDatabaseMetaData("db", Collections.emptyMap()))));
+ return result;
+ }
+
@Test
public void assertDatabaseAdd() throws SQLException {
when(metaDataPersistService.getDataSourceService().load("db_add")).thenReturn(getDataSourcePropertiesMap());
@@ -183,14 +195,14 @@ public final class ClusterContextManagerCoordinatorTest {
SchemaChangedEvent event = new SchemaChangedEvent("db", "db", changedTableMetaData, null);
coordinator.renew(event);
assertTrue(contextManager.getMetaDataContexts().getAllDatabaseNames().contains("db"));
- verify(contextManager.getMetaDataContexts().getMetaData("db").getSchemaByName("db")).put(eq("t_order"), eq(event.getChangedTableMetaData()));
+ verify(contextManager.getMetaDataContexts().getMetaData("db").getSchemaByName("db")).put("t_order", event.getChangedTableMetaData());
}
@Test
public void assertRuleConfigurationsChanged() {
- when(metaDataPersistService.getDatabaseVersionPersistService().isActiveVersion("db", "0")).thenReturn(Boolean.TRUE);
+ when(metaDataPersistService.getDatabaseVersionPersistService().isActiveVersion("db", "0")).thenReturn(true);
assertThat(contextManager.getMetaDataContexts().getMetaData("db"), is(metaData));
- coordinator.renew(new RuleConfigurationsChangedEvent("db", "0", new LinkedList<>()));
+ coordinator.renew(new RuleConfigurationsChangedEvent("db", "0", Collections.emptyList()));
assertThat(contextManager.getMetaDataContexts().getMetaData("db"), not(metaData));
}
@@ -206,7 +218,7 @@ public final class ClusterContextManagerCoordinatorTest {
@Test
public void assertDataSourceChanged() {
- when(metaDataPersistService.getDatabaseVersionPersistService().isActiveVersion("db", "0")).thenReturn(Boolean.TRUE);
+ when(metaDataPersistService.getDatabaseVersionPersistService().isActiveVersion("db", "0")).thenReturn(true);
coordinator.renew(new DataSourceChangedEvent("db", "0", getChangedDataSourcePropertiesMap()));
assertTrue(contextManager.getMetaDataContexts().getMetaData("db").getResource().getDataSources().containsKey("ds_2"));
}
@@ -243,26 +255,6 @@ public final class ClusterContextManagerCoordinatorTest {
return result;
}
- private Map<String, ShardingSphereMetaData> createMetaDataMap() {
- when(metaData.getDatabaseName()).thenReturn("db");
- ShardingSphereResource resource = mock(ShardingSphereResource.class);
- when(resource.getDatabaseType()).thenReturn(new MySQLDatabaseType());
- when(metaData.getResource()).thenReturn(resource);
- ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
- when(metaData.getSchemaByName(DefaultSchema.LOGIC_NAME)).thenReturn(schema);
- when(metaData.getRuleMetaData().getRules()).thenReturn(new LinkedList<>());
- when(metaData.getRuleMetaData().getConfigurations()).thenReturn(new LinkedList<>());
- return new HashMap<>(Collections.singletonMap("db", metaData));
- }
-
- private OptimizerContext createOptimizerContext() {
- OptimizerContext result = mock(OptimizerContext.class, RETURNS_DEEP_STUBS);
- Map<String, FederationDatabaseMetaData> databases = new HashMap<>(1, 1);
- databases.put("db", new FederationDatabaseMetaData("db", Collections.emptyMap()));
- when(result.getFederationMetaData().getDatabases()).thenReturn(databases);
- return result;
- }
-
@Test
public void assertRenewPrimaryDataSourceName() {
Collection<ShardingSphereRule> rules = new LinkedList<>();
@@ -298,24 +290,20 @@ public final class ClusterContextManagerCoordinatorTest {
@Test
public void assertRenewInstanceLabels() {
- Collection<String> labels = new LinkedHashSet<>();
- labels.add("test");
- LabelsEvent mockLabelsEvent = new LabelsEvent(contextManager.getInstanceContext().getInstance().getInstanceDefinition().getInstanceId().getId(), labels);
- coordinator.renew(mockLabelsEvent);
+ Collection<String> labels = Collections.singleton("test");
+ coordinator.renew( new LabelsEvent(contextManager.getInstanceContext().getInstance().getInstanceDefinition().getInstanceId().getId(), labels));
assertThat(contextManager.getInstanceContext().getInstance().getLabels(), is(labels));
}
@Test
public void assertRenewXaRecoveryIdEvent() {
- XaRecoveryIdEvent mockXaRecoveryIdEvent = new XaRecoveryIdEvent(contextManager.getInstanceContext().getInstance().getInstanceDefinition().getInstanceId().getId(), "127.0.0.100@3306");
- coordinator.renew(mockXaRecoveryIdEvent);
+ coordinator.renew(new XaRecoveryIdEvent(contextManager.getInstanceContext().getInstance().getInstanceDefinition().getInstanceId().getId(), "127.0.0.100@3306"));
assertThat(contextManager.getInstanceContext().getInstance().getXaRecoveryId(), is("127.0.0.100@3306"));
}
@Test
public void assertRenewInstanceOfflineEvent() {
- InstanceOfflineEvent mockInstanceOfflineEvent = new InstanceOfflineEvent(contextManager.getInstanceContext().getInstance().getInstanceDefinition());
- coordinator.renew(mockInstanceOfflineEvent);
+ coordinator.renew(new InstanceOfflineEvent(contextManager.getInstanceContext().getInstance().getInstanceDefinition()));
assertThat(contextManager.getInstanceContext().getInstance().getInstanceDefinition().getInstanceId().getUniqueSign(), is(3307));
}
@@ -323,14 +311,13 @@ public final class ClusterContextManagerCoordinatorTest {
public void assertRenewSchemaVersionChangedEvent() {
when(metaDataPersistService.getDataSourceService().load("db", "1")).thenReturn(getVersionChangedDataSourcePropertiesMap());
when(metaDataPersistService.getDatabaseRulePersistService().load("db", "1")).thenReturn(Collections.emptyList());
- SchemaVersionChangedEvent schemaVersionChangedEvent = new SchemaVersionChangedEvent("db", "1");
Map<String, DataSource> dataSourceMap = initContextManager();
- coordinator.renew(schemaVersionChangedEvent);
+ coordinator.renew(new SchemaVersionChangedEvent("db", "1"));
assertThat(contextManager.getDataSourceMap("db").get("ds_0"), is(dataSourceMap.get("ds_0")));
assertNotNull(contextManager.getDataSourceMap("db").get("ds_1"));
- assertThat(DataSourcePropertiesCreator.create(getChangeMockedDataSource()), is(DataSourcePropertiesCreator.create(contextManager.getDataSourceMap("db").get("ds_1"))));
+ assertThat(DataSourcePropertiesCreator.create(getChangedDataSource()), is(DataSourcePropertiesCreator.create(contextManager.getDataSourceMap("db").get("ds_1"))));
assertNotNull(contextManager.getDataSourceMap("db").get("primary_ds"));
- assertThat(DataSourcePropertiesCreator.create(getDefaultMockedDataSource()), is(DataSourcePropertiesCreator.create(contextManager.getDataSourceMap("db").get("primary_ds"))));
+ assertThat(DataSourcePropertiesCreator.create(new MockedDataSource()), is(DataSourcePropertiesCreator.create(contextManager.getDataSourceMap("db").get("primary_ds"))));
}
@Test
@@ -355,8 +342,8 @@ public final class ClusterContextManagerCoordinatorTest {
@Test
public void assertCompleteUnitShowProcessList() {
String showProcessListId = "foo_process_id";
- ShowProcessListSimpleLock simpleLock = new ShowProcessListSimpleLock();
- ShowProcessListManager.getInstance().getLocks().put(showProcessListId, simpleLock);
+ ShowProcessListSimpleLock lock = new ShowProcessListSimpleLock();
+ ShowProcessListManager.getInstance().getLocks().put(showProcessListId, lock);
long startTime = System.currentTimeMillis();
ExecutorService executorService = Executors.newFixedThreadPool(1);
executorService.submit(() -> {
@@ -364,55 +351,49 @@ public final class ClusterContextManagerCoordinatorTest {
Thread.sleep(50L);
} catch (final InterruptedException ignored) {
}
- ShowProcessListUnitCompleteEvent showProcessListUnitCompleteEvent = new ShowProcessListUnitCompleteEvent(showProcessListId);
- coordinator.completeUnitShowProcessList(showProcessListUnitCompleteEvent);
+ coordinator.completeUnitShowProcessList(new ShowProcessListUnitCompleteEvent(showProcessListId));
});
- simpleLockAwaitDefaultTime(simpleLock);
-
+ lockAndAwaitDefaultTime(lock);
long currentTime = System.currentTimeMillis();
assertTrue(currentTime > startTime + 50L);
assertTrue(currentTime < startTime + 5000L);
ShowProcessListManager.getInstance().getLocks().remove(showProcessListId);
}
- private void simpleLockAwaitDefaultTime(final ShowProcessListSimpleLock simpleLock) {
- simpleLock.lock();
+ private void lockAndAwaitDefaultTime(final ShowProcessListSimpleLock lock) {
+ lock.lock();
try {
- simpleLock.awaitDefaultTime();
+ lock.awaitDefaultTime();
} finally {
- simpleLock.unlock();
+ lock.unlock();
}
}
private Map<String, DataSource> initContextManager() {
Map<String, DataSource> result = getDataSourceMap();
- ShardingSphereResource shardingSphereResource = new ShardingSphereResource(result, mock(DataSourcesMetaData.class), mock(CachedDatabaseMetaData.class), mock(DatabaseType.class));
- ShardingSphereMetaData mockShardingSphereMetaData = new ShardingSphereMetaData("db", shardingSphereResource, mock(ShardingSphereRuleMetaData.class), Collections.emptyMap());
- contextManager.getMetaDataContexts().getMetaDataMap().put("db", mockShardingSphereMetaData);
+ ShardingSphereResource resource = new ShardingSphereResource(result, mock(DataSourcesMetaData.class), mock(CachedDatabaseMetaData.class), mock(DatabaseType.class));
+ ShardingSphereMetaData mockedMetaData = new ShardingSphereMetaData("db", resource, mock(ShardingSphereRuleMetaData.class), Collections.emptyMap());
+ contextManager.getMetaDataContexts().getMetaDataMap().put("db", mockedMetaData);
return result;
}
private Map<String, DataSource> getDataSourceMap() {
Map<String, DataSource> result = new LinkedHashMap<>(3, 1);
- result.put("ds_0", getDefaultMockedDataSource());
- result.put("ds_1", getDefaultMockedDataSource());
- result.put("db", getDefaultMockedDataSource());
+ result.put("ds_0", new MockedDataSource());
+ result.put("ds_1", new MockedDataSource());
+ result.put("db", new MockedDataSource());
return result;
}
private Map<String, DataSourceProperties> getVersionChangedDataSourcePropertiesMap() {
Map<String, DataSourceProperties> result = new LinkedHashMap<>(3, 1);
- result.put("primary_ds", DataSourcePropertiesCreator.create(getDefaultMockedDataSource()));
- result.put("ds_0", DataSourcePropertiesCreator.create(getDefaultMockedDataSource()));
- result.put("ds_1", DataSourcePropertiesCreator.create(getChangeMockedDataSource()));
+ result.put("primary_ds", DataSourcePropertiesCreator.create(new MockedDataSource()));
+ result.put("ds_0", DataSourcePropertiesCreator.create(new MockedDataSource()));
+ result.put("ds_1", DataSourcePropertiesCreator.create(getChangedDataSource()));
return result;
}
- private MockedDataSource getDefaultMockedDataSource() {
- return new MockedDataSource();
- }
-
- private MockedDataSource getChangeMockedDataSource() {
+ private MockedDataSource getChangedDataSource() {
MockedDataSource result = new MockedDataSource();
result.setMaxPoolSize(5);
result.setUsername("username");