You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2021/09/02 02:55:28 UTC
[dubbo] branch 3.0-multi-instances updated: Fix uts
This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch 3.0-multi-instances
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.0-multi-instances by this push:
new de44579 Fix uts
de44579 is described below
commit de445791e58d46309b5dc17ebe1a264532b951ce
Author: Albumen Kevin <jh...@gmail.com>
AuthorDate: Thu Sep 2 10:55:03 2021 +0800
Fix uts
---
.../metadata/MetadataServiceNameMapping.java | 6 +-
.../ServiceInstanceMetadataCustomizer.java | 3 +-
.../client/ServiceDiscoveryRegistryTest.java | 90 +++++++-------
.../metadata/MetadataServiceNameMappingTest.java | 118 +++++++++++--------
.../ServiceInstanceMetadataCustomizerTest.java | 2 +-
.../store/InMemoryMetadataServiceTest.java | 2 +
.../migration/MigrationRuleListenerTest.java | 2 +
.../client/migration/model/MigrationRuleTest.java | 130 ++++++++++-----------
8 files changed, 188 insertions(+), 165 deletions(-)
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataServiceNameMapping.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataServiceNameMapping.java
index c963b72..a0735bf 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataServiceNameMapping.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataServiceNameMapping.java
@@ -45,7 +45,11 @@ public class MetadataServiceNameMapping extends AbstractServiceNameMapping imple
private static final List<String> IGNORED_SERVICE_INTERFACES = Collections.singletonList(MetadataService.class.getName());
private static final int CAS_RETRY_TIMES = 6;
- private MetadataReportInstance metadataReportInstance;
+ protected MetadataReportInstance metadataReportInstance;
+
+ public MetadataServiceNameMapping() {
+ metadataReportInstance = ApplicationModel.defaultModel().getBeanFactory().getBean(MetadataReportInstance.class);
+ }
@Override
public boolean map(URL url) {
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataCustomizer.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataCustomizer.java
index e238ea7..155a778 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataCustomizer.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataCustomizer.java
@@ -31,6 +31,7 @@ import org.apache.dubbo.rpc.model.ApplicationModel;
import java.util.Collections;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -59,7 +60,6 @@ public class ServiceInstanceMetadataCustomizer implements ServiceInstanceCustomi
public void customize(ServiceInstance serviceInstance) {
ApplicationModel applicationModel = serviceInstance.getApplicationModel();
ExtensionLoader<MetadataParamsFilter> loader = applicationModel.getExtensionLoader(MetadataParamsFilter.class);
- Set<MetadataParamsFilter> paramsFilters = loader.getSupportedExtensionInstances();
InMemoryWritableMetadataService localMetadataService
= (InMemoryWritableMetadataService) WritableMetadataService.getDefaultExtension(applicationModel);
@@ -75,6 +75,7 @@ public class ServiceInstanceMetadataCustomizer implements ServiceInstanceCustomi
}
MetadataInfo.ServiceInfo serviceInfo = metadataInfo.getServices().values().iterator().next();
URL url = serviceInfo.getUrl();
+ List<MetadataParamsFilter> paramsFilters = loader.getActivateExtension(url, "params-filter");
Map<String, String> allParams = new HashMap<>(url.getParameters());
// load instance params users want to load.
diff --git a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistryTest.java b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistryTest.java
index 31e7b37..f8378d4 100644
--- a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistryTest.java
+++ b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistryTest.java
@@ -98,63 +98,65 @@ public class ServiceDiscoveryRegistryTest {
when(serviceDiscovery.createListener(any())).thenReturn(instanceListener);
when(serviceDiscovery.getInstances(any())).thenReturn(Collections.emptyList());
- spiedMetadataService = spy(WritableMetadataService.getDefaultExtension(ApplicationModel.defaultModel()));
+ spiedMetadataService = spy(WritableMetadataService.getDefaultExtension(ApplicationModel.defaultModel()));
serviceDiscoveryRegistry = new ServiceDiscoveryRegistry(registryURL, serviceDiscovery, spiedMetadataService);
}
/**
* Test subscribe
- * - Normal case
- * - Exception case
- * - check=true
- * - check=false
+ * - Normal case
+ * - Exception case
+ * - check=true
+ * - check=false
*/
@Test
public void testDoSubscribe() {
- try (MockedStatic<ServiceNameMapping> mockStaticMapping = Mockito.mockStatic(ServiceNameMapping.class, withSettings().defaultAnswer(CALLS_REAL_METHODS))) {
- mockStaticMapping.when(ServiceNameMapping::getDefaultExtension).thenReturn(mapping);
- // Exception case, no interface-app mapping found
- when(mapping.getAndListenServices(any(), any(), any())).thenReturn(Collections.emptySet());
- // when check = false
- try {
- serviceDiscoveryRegistry.doSubscribe(url, testServiceListener);
- } finally {
- spiedMetadataService.unsubscribeURL(url);
- }
- // when check = true
- URL checkURL = url.addParameter(CHECK_KEY, true);
- Exception exceptionShouldHappen = null;
- try {
- serviceDiscoveryRegistry.doSubscribe(checkURL, testServiceListener);
- } catch (IllegalStateException e) {
- exceptionShouldHappen = e;
- } finally {
- spiedMetadataService.unsubscribeURL(checkURL);
- }
- if (exceptionShouldHappen == null) {
- fail();
- }
-
- // Normal case
- Set<String> singleApp = new HashSet<>();
- singleApp.add(APP_NAME1);
- when(mapping.getAndListenServices(any(), any(), any())).thenReturn(singleApp);
- try {
- serviceDiscoveryRegistry.doSubscribe(checkURL, testServiceListener);
- } finally {
- spiedMetadataService.unsubscribeURL(checkURL);
- }
+ ApplicationModel applicationModel = spy(ApplicationModel.defaultModel());
+ when(applicationModel.getDefaultExtension(ServiceNameMapping.class)).thenReturn(mapping);
+ // Exception case, no interface-app mapping found
+ when(mapping.getAndListenServices(any(), any(), any())).thenReturn(Collections.emptySet());
+ // when check = false
+ try {
+ registryURL = registryURL.setScopeModel(applicationModel);
+ serviceDiscoveryRegistry = new ServiceDiscoveryRegistry(registryURL, serviceDiscovery, spiedMetadataService);
+ serviceDiscoveryRegistry.doSubscribe(url, testServiceListener);
+ } finally {
+ registryURL = registryURL.setScopeModel(null);
+ spiedMetadataService.unsubscribeURL(url);
+ }
+ // when check = true
+ URL checkURL = url.addParameter(CHECK_KEY, true);
+ Exception exceptionShouldHappen = null;
+ try {
+ serviceDiscoveryRegistry.doSubscribe(checkURL, testServiceListener);
+ } catch (IllegalStateException e) {
+ exceptionShouldHappen = e;
+ } finally {
+ spiedMetadataService.unsubscribeURL(checkURL);
+ }
+ if (exceptionShouldHappen == null) {
+ fail();
+ }
+
+ // Normal case
+ Set<String> singleApp = new HashSet<>();
+ singleApp.add(APP_NAME1);
+ when(mapping.getAndListenServices(any(), any(), any())).thenReturn(singleApp);
+ try {
+ serviceDiscoveryRegistry.doSubscribe(checkURL, testServiceListener);
+ } finally {
+ spiedMetadataService.unsubscribeURL(checkURL);
}
}
/**
* Test instance listener registration
- * - one app
- * - multi apps
- * - repeat same multi apps, instance listener shared
- * - protocol included in key
- * - instance listener gets notified
- * - instance listener and service listener rightly mapped
+ * - one app
+ * - multi apps
+ * - repeat same multi apps, instance listener shared
+ * - protocol included in key
+ * - instance listener gets notified
+ * - instance listener and service listener rightly mapped
*/
@Test
public void testSubscribeURLs() {
diff --git a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/MetadataServiceNameMappingTest.java b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/MetadataServiceNameMappingTest.java
index f710e56..353c93b 100644
--- a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/MetadataServiceNameMappingTest.java
+++ b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/MetadataServiceNameMappingTest.java
@@ -18,15 +18,17 @@ package org.apache.dubbo.registry.client.metadata;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.config.configcenter.ConfigItem;
+import org.apache.dubbo.config.ApplicationConfig;
import org.apache.dubbo.config.MetadataReportConfig;
import org.apache.dubbo.config.context.ConfigManager;
import org.apache.dubbo.metadata.report.MetadataReport;
import org.apache.dubbo.metadata.report.MetadataReportInstance;
import org.apache.dubbo.rpc.model.ApplicationModel;
+import org.apache.dubbo.rpc.model.FrameworkModel;
+import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import org.mockito.MockedStatic;
import org.mockito.Mockito;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
@@ -42,6 +44,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.fail;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
public class MetadataServiceNameMappingTest {
@@ -50,61 +53,73 @@ public class MetadataServiceNameMappingTest {
private URL url;
private ConfigManager configManager;
private MetadataReport metadataReport;
+ private ApplicationModel applicationModel;
@BeforeEach
public void setUp() {
- mapping = new MetadataServiceNameMapping();
- url = URL.valueOf("dubbo://127.0.0.1:20880/TestService?version=1.0.0");
+ applicationModel = new ApplicationModel(FrameworkModel.defaultModel());
configManager = mock(ConfigManager.class);
metadataReport = mock(MetadataReport.class);
+ mapping = new MetadataServiceNameMapping();
+ mapping.setApplicationModel(applicationModel);
+ url = URL.valueOf("dubbo://127.0.0.1:20880/TestService?version=1.0.0");
+ }
+
+ @AfterEach
+ public void teardown() {
+ applicationModel.destroy();
}
@Test
public void testMap() {
- try (MockedStatic<ApplicationModel> mockedApplicationModel = Mockito.mockStatic(ApplicationModel.class)) {
- when(configManager.getMetadataConfigs()).thenReturn(Collections.emptyList());
- mockedApplicationModel.when(ApplicationModel::getConfigManager).thenReturn(configManager);
-
- // metadata report config not found
- boolean result = mapping.map(url);
- assertFalse(result);
-
- try (MockedStatic<MetadataReportInstance> mockedMetadataHolder = Mockito.mockStatic(MetadataReportInstance.class)) {
- when(configManager.getMetadataConfigs()).thenReturn(Arrays.asList(new MetadataReportConfig()));
- mockedMetadataHolder.when(() -> ApplicationModel.defaultModel().getBeanFactory().getBean(MetadataReportInstance.class).getMetadataReport(any())).thenReturn(metadataReport);
- when(metadataReport.registerServiceAppMapping(any(), any(), any())).thenReturn(true);
-
- // metadata report directly
- result = mapping.map(url);
- assertTrue(result);
-
- // metadata report using cas and retry, succeeded after retried 5 times
- when(metadataReport.registerServiceAppMapping(any(), any(), any())).thenReturn(false);
- when(metadataReport.getConfigItem(any(), any())).thenReturn(new ConfigItem());
- when(metadataReport.registerServiceAppMapping(any(), any(), any(), any())).thenAnswer(new Answer<Boolean>() {
- private int counter = 0;
- @Override
- public Boolean answer(InvocationOnMock invocationOnMock) throws Throwable {
- if (++counter == 5) {
- return true;
- }
- return false;
- }
- });
- assertTrue(mapping.map(url));
-
- // metadata report using cas and retry, failed after 6 times retry
- when(metadataReport.registerServiceAppMapping(any(), any(), any(), any())).thenReturn(false);
- Exception exceptionExpected = null;
- try {
- mapping.map(url);
- } catch (RuntimeException e) {
- exceptionExpected = e;
- }
- if (exceptionExpected == null) {
- fail();
+ ApplicationModel mockedApplicationModel = spy(ApplicationModel.defaultModel());
+
+ when(configManager.getMetadataConfigs()).thenReturn(Collections.emptyList());
+ Mockito.when(mockedApplicationModel.getApplicationConfigManager()).thenReturn(configManager);
+ Mockito.when(mockedApplicationModel.getCurrentConfig()).thenReturn(new ApplicationConfig("test"));
+
+ // metadata report config not found
+ mapping.setApplicationModel(mockedApplicationModel);
+ boolean result = mapping.map(url);
+ assertFalse(result);
+
+ when(configManager.getMetadataConfigs()).thenReturn(Arrays.asList(new MetadataReportConfig()));
+ MetadataReportInstance reportInstance = mock(MetadataReportInstance.class);
+ Mockito.when(reportInstance.getMetadataReport(any())).thenReturn(metadataReport);
+ mapping.metadataReportInstance = reportInstance;
+
+ when(metadataReport.registerServiceAppMapping(any(), any(), any())).thenReturn(true);
+
+ // metadata report directly
+ result = mapping.map(url);
+ assertTrue(result);
+
+ // metadata report using cas and retry, succeeded after retried 5 times
+ when(metadataReport.registerServiceAppMapping(any(), any(), any())).thenReturn(false);
+ when(metadataReport.getConfigItem(any(), any())).thenReturn(new ConfigItem());
+ when(metadataReport.registerServiceAppMapping(any(), any(), any(), any())).thenAnswer(new Answer<Boolean>() {
+ private int counter = 0;
+
+ @Override
+ public Boolean answer(InvocationOnMock invocationOnMock) throws Throwable {
+ if (++counter == 5) {
+ return true;
}
+ return false;
}
+ });
+ assertTrue(mapping.map(url));
+
+ // metadata report using cas and retry, failed after 6 times retry
+ when(metadataReport.registerServiceAppMapping(any(), any(), any(), any())).thenReturn(false);
+ Exception exceptionExpected = null;
+ try {
+ mapping.map(url);
+ } catch (RuntimeException e) {
+ exceptionExpected = e;
+ }
+ if (exceptionExpected == null) {
+ fail();
}
}
@@ -115,13 +130,14 @@ public class MetadataServiceNameMappingTest {
public void testGet() {
Set<String> set = new HashSet<>();
set.add("app1");
- try (MockedStatic<MetadataReportInstance> mockedMetadataHolder = Mockito.mockStatic(MetadataReportInstance.class)) {
- mockedMetadataHolder.when(() -> ApplicationModel.defaultModel().getBeanFactory().getBean(MetadataReportInstance.class).getMetadataReport(any())).thenReturn(metadataReport);
- when(metadataReport.getServiceAppMapping(any(), any())).thenReturn(set);
- Set<String> result = mapping.get(url);
- assertEquals(set, result);
- }
+ MetadataReportInstance reportInstance = mock(MetadataReportInstance.class);
+ Mockito.when(reportInstance.getMetadataReport(any())).thenReturn(metadataReport);
+ when(metadataReport.getServiceAppMapping(any(), any())).thenReturn(set);
+
+ mapping.metadataReportInstance = reportInstance;
+ Set<String> result = mapping.get(url);
+ assertEquals(set, result);
}
/**
diff --git a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataCustomizerTest.java b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataCustomizerTest.java
index 08e7c72..a33831f 100644
--- a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataCustomizerTest.java
+++ b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataCustomizerTest.java
@@ -82,7 +82,7 @@ public class ServiceInstanceMetadataCustomizerTest {
try (MockedStatic<ConfigurationUtils> mockedUtils = Mockito.mockStatic(ConfigurationUtils.class)) {
try (MockedStatic<WritableMetadataService> mockMetadataService = Mockito.mockStatic(WritableMetadataService.class)) {
mockMetadataService.when(() -> WritableMetadataService.getDefaultExtension(ApplicationModel.defaultModel())).thenReturn(metadataService);
- mockedUtils.when(() -> ConfigurationUtils.getProperty(DUBBO_LABELS)).thenReturn("k1=v1;k2=v2");
+ mockedUtils.when(() -> ConfigurationUtils.getProperty(ApplicationModel.defaultModel(), DUBBO_LABELS)).thenReturn("k1=v1;k2=v2");
// mockedUtils.when(() -> ConfigurationUtils.getProperty(DUBBO_ENV_KEYS)).thenReturn("ENV_KEY1;ENV_KEY1");
// mockedUtils.when(() -> ConfigurationUtils.getProperty(ENV_KEY1)).thenReturn("");
diff --git a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/store/InMemoryMetadataServiceTest.java b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/store/InMemoryMetadataServiceTest.java
index 76fcf84..f1ad1fb 100644
--- a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/store/InMemoryMetadataServiceTest.java
+++ b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/store/InMemoryMetadataServiceTest.java
@@ -69,6 +69,7 @@ public class InMemoryMetadataServiceTest {
@Test
public void testExport() {
InMemoryWritableMetadataService metadataService = new InMemoryWritableMetadataService();
+ metadataService.setApplicationModel(ApplicationModel.defaultModel());
// export normal url
URL url = URL.valueOf("dubbo://30.225.21.30:20880/org.apache.dubbo.registry.service.DemoService?" +
"REGISTRY_CLUSTER=registry1&anyhost=true&application=demo-provider2&delay=5000&deprecated=false&dubbo=2.0.2" +
@@ -155,6 +156,7 @@ public class InMemoryMetadataServiceTest {
@Test
public void testUnExport() {
InMemoryWritableMetadataService metadataService = new InMemoryWritableMetadataService();
+ metadataService.setApplicationModel(ApplicationModel.defaultModel());
// export normal url
URL url = URL.valueOf("dubbo://30.225.21.30:20880/org.apache.dubbo.registry.service.DemoService?" +
"REGISTRY_CLUSTER=registry1&anyhost=true&application=demo-provider2&delay=5000&deprecated=false&dubbo=2.0.2" +
diff --git a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/migration/MigrationRuleListenerTest.java b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/migration/MigrationRuleListenerTest.java
index 406b85d..16395d9 100644
--- a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/migration/MigrationRuleListenerTest.java
+++ b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/migration/MigrationRuleListenerTest.java
@@ -126,6 +126,7 @@ public class MigrationRuleListenerTest {
MigrationRuleHandler<?> handler = Mockito.mock(MigrationRuleHandler.class, Mockito.withSettings().verboseLogging());
MigrationRuleListener migrationRuleListener = new MigrationRuleListener();
+ migrationRuleListener.setApplicationModel(ApplicationModel.defaultModel());
MigrationInvoker<?> migrationInvoker = Mockito.mock(MigrationInvoker.class);
migrationRuleListener.getHandlers().put(migrationInvoker, handler);
migrationRuleListener.onRefer(null, migrationInvoker, consumerURL, null);
@@ -171,6 +172,7 @@ public class MigrationRuleListenerTest {
// Both local rule and remote rule are here
// Local rule with one delayed task started to apply
MigrationRuleListener migrationRuleListener = new MigrationRuleListener();
+ migrationRuleListener.setApplicationModel(ApplicationModel.defaultModel());
Assertions.assertNotNull(migrationRuleListener.localRuleMigrationFuture);
Assertions.assertNull(migrationRuleListener.ruleMigrationFuture);
MigrationInvoker<?> migrationInvoker = Mockito.mock(MigrationInvoker.class);
diff --git a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/migration/model/MigrationRuleTest.java b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/migration/model/MigrationRuleTest.java
index 2ea3be6..844ab38 100644
--- a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/migration/model/MigrationRuleTest.java
+++ b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/migration/model/MigrationRuleTest.java
@@ -24,7 +24,6 @@ import org.apache.dubbo.rpc.model.ModuleModel;
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentMatchers;
-import org.mockito.MockedStatic;
import org.mockito.Mockito;
import java.util.Collections;
@@ -35,87 +34,84 @@ import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_CLUST
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.Mockito.CALLS_REAL_METHODS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-import static org.mockito.Mockito.withSettings;
public class MigrationRuleTest {
private static ServiceNameMapping mapping = mock(ServiceNameMapping.class);
@Test
public void test_parse() {
- try (MockedStatic<ServiceNameMapping> mockStaticMapping = Mockito.mockStatic(ServiceNameMapping.class, withSettings().defaultAnswer(CALLS_REAL_METHODS))) {
- mockStaticMapping.when(ServiceNameMapping::getDefaultExtension).thenReturn(mapping);
- when(mapping.getServices(any())).thenReturn(Collections.emptySet());
+ when(mapping.getServices(any())).thenReturn(Collections.emptySet());
- String rule = "key: demo-consumer\n" +
- "step: APPLICATION_FIRST\n" +
- "threshold: 1.0\n" +
- "proportion: 60\n" +
- "delay: 60\n" +
- "force: false\n" +
- "interfaces:\n" +
- " - serviceKey: DemoService:1.0.0\n" +
- " threshold: 0.5\n" +
- " proportion: 30\n" +
- " delay: 30\n" +
- " force: true\n" +
- " step: APPLICATION_FIRST\n" +
- " - serviceKey: GreetingService:1.0.0\n" +
- " step: FORCE_APPLICATION\n" +
- "applications:\n" +
- " - serviceKey: TestApplication\n" +
- " threshold: 0.3\n" +
- " proportion: 20\n" +
- " delay: 10\n" +
- " force: false\n" +
- " step: FORCE_INTERFACE\n";
+ String rule = "key: demo-consumer\n" +
+ "step: APPLICATION_FIRST\n" +
+ "threshold: 1.0\n" +
+ "proportion: 60\n" +
+ "delay: 60\n" +
+ "force: false\n" +
+ "interfaces:\n" +
+ " - serviceKey: DemoService:1.0.0\n" +
+ " threshold: 0.5\n" +
+ " proportion: 30\n" +
+ " delay: 30\n" +
+ " force: true\n" +
+ " step: APPLICATION_FIRST\n" +
+ " - serviceKey: GreetingService:1.0.0\n" +
+ " step: FORCE_APPLICATION\n" +
+ "applications:\n" +
+ " - serviceKey: TestApplication\n" +
+ " threshold: 0.3\n" +
+ " proportion: 20\n" +
+ " delay: 10\n" +
+ " force: false\n" +
+ " step: FORCE_INTERFACE\n";
- MigrationRule migrationRule = MigrationRule.parse(rule);
- assertEquals("demo-consumer", migrationRule.getKey());
- assertEquals(MigrationStep.APPLICATION_FIRST, migrationRule.getStep());
- assertEquals(1.0f, migrationRule.getThreshold());
- assertEquals(60, migrationRule.getProportion());
- assertEquals(60, migrationRule.getDelay());
- assertEquals(false, migrationRule.getForce());
+ MigrationRule migrationRule = MigrationRule.parse(rule);
+ assertEquals("demo-consumer", migrationRule.getKey());
+ assertEquals(MigrationStep.APPLICATION_FIRST, migrationRule.getStep());
+ assertEquals(1.0f, migrationRule.getThreshold());
+ assertEquals(60, migrationRule.getProportion());
+ assertEquals(60, migrationRule.getDelay());
+ assertEquals(false, migrationRule.getForce());
- URL url = Mockito.mock(URL.class);
- ModuleModel defaultModule = ApplicationModel.defaultModel().getDefaultModule();
- url.setScopeModel(defaultModule);
- Mockito.when(url.getDisplayServiceKey()).thenReturn("DemoService:1.0.0");
- Mockito.when(url.getParameter(ArgumentMatchers.eq(REGISTRY_CLUSTER_TYPE_KEY), anyString())).thenReturn("default");
- Mockito.when(url.getParameter(ArgumentMatchers.eq(REGISTRY_CLUSTER_TYPE_KEY), anyString())).thenReturn("default");
+ URL url = Mockito.mock(URL.class);
+ ModuleModel defaultModule = Mockito.spy(ApplicationModel.defaultModel().getDefaultModule());
+ Mockito.when(defaultModule.getDefaultExtension(ServiceNameMapping.class)).thenReturn(mapping);
- assertEquals(migrationRule.getInterfaces().size(), 2);
+ Mockito.when(url.getScopeModel()).thenReturn(defaultModule);
+ Mockito.when(url.getDisplayServiceKey()).thenReturn("DemoService:1.0.0");
+ Mockito.when(url.getParameter(ArgumentMatchers.eq(REGISTRY_CLUSTER_TYPE_KEY), anyString())).thenReturn("default");
+ Mockito.when(url.getParameter(ArgumentMatchers.eq(REGISTRY_CLUSTER_TYPE_KEY), anyString())).thenReturn("default");
- assertEquals(0.5f, migrationRule.getThreshold(url));
- assertEquals(30, migrationRule.getProportion(url));
- assertEquals(30, migrationRule.getDelay(url));
- assertEquals(true, migrationRule.getForce(url));
- assertEquals(MigrationStep.APPLICATION_FIRST, migrationRule.getStep(url));
+ assertEquals(migrationRule.getInterfaces().size(), 2);
- Mockito.when(url.getDisplayServiceKey()).thenReturn("GreetingService:1.0.0");
- assertEquals(1.0f, migrationRule.getThreshold(url));
- assertEquals(60, migrationRule.getProportion(url));
- assertEquals(60, migrationRule.getDelay(url));
- assertEquals(false, migrationRule.getForce(url));
- assertEquals(MigrationStep.FORCE_APPLICATION, migrationRule.getStep(url));
+ assertEquals(0.5f, migrationRule.getThreshold(url));
+ assertEquals(30, migrationRule.getProportion(url));
+ assertEquals(30, migrationRule.getDelay(url));
+ assertEquals(true, migrationRule.getForce(url));
+ assertEquals(MigrationStep.APPLICATION_FIRST, migrationRule.getStep(url));
- Mockito.when(url.getDisplayServiceKey()).thenReturn("GreetingService:1.0.1");
- Mockito.when(url.getServiceInterface()).thenReturn("GreetingService");
- WritableMetadataService metadataService = WritableMetadataService.getDefaultExtension(defaultModule);
- metadataService.putCachedMapping(ServiceNameMapping.buildMappingKey(url), Collections.singleton("TestApplication"));
+ Mockito.when(url.getDisplayServiceKey()).thenReturn("GreetingService:1.0.0");
+ assertEquals(1.0f, migrationRule.getThreshold(url));
+ assertEquals(60, migrationRule.getProportion(url));
+ assertEquals(60, migrationRule.getDelay(url));
+ assertEquals(false, migrationRule.getForce(url));
+ assertEquals(MigrationStep.FORCE_APPLICATION, migrationRule.getStep(url));
- Set<String> services = new HashSet<>();
- services.add("TestApplication");
- when(mapping.getServices(any())).thenReturn(services);
- assertEquals(0.3f, migrationRule.getThreshold(url));
- assertEquals(20, migrationRule.getProportion(url));
- assertEquals(10, migrationRule.getDelay(url));
- assertEquals(false, migrationRule.getForce(url));
- assertEquals(MigrationStep.FORCE_INTERFACE, migrationRule.getStep(url));
- metadataService.removeCachedMapping("GreetingService");
- }
+ Mockito.when(url.getDisplayServiceKey()).thenReturn("GreetingService:1.0.1");
+ Mockito.when(url.getServiceInterface()).thenReturn("GreetingService");
+ WritableMetadataService metadataService = WritableMetadataService.getDefaultExtension(defaultModule);
+ metadataService.putCachedMapping(ServiceNameMapping.buildMappingKey(url), Collections.singleton("TestApplication"));
+
+ Set<String> services = new HashSet<>();
+ services.add("TestApplication");
+ when(mapping.getServices(any())).thenReturn(services);
+ assertEquals(0.3f, migrationRule.getThreshold(url));
+ assertEquals(20, migrationRule.getProportion(url));
+ assertEquals(10, migrationRule.getDelay(url));
+ assertEquals(false, migrationRule.getForce(url));
+ assertEquals(MigrationStep.FORCE_INTERFACE, migrationRule.getStep(url));
+ metadataService.removeCachedMapping("GreetingService");
}
}