This is an automated email from the ASF dual-hosted git repository.
heliang666s pushed a commit to branch 3.3
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.3 by this push:
new 7a71763003 Dubbo registry multiple remove dubbo test common (#16031)
7a71763003 is described below
commit 7a71763003b6da94dbd811901a6845b281f50c6d
Author: wxt1222 <[email protected]>
AuthorDate: Tue Jan 27 17:51:17 2026 +0800
Dubbo registry multiple remove dubbo test common (#16031)
* dubbo-registry-multiple-remove-dubbo-test-common
* dubbo-registry-multiple-remove-dubbo-test-common
* dubbo-registry-multiple-remove-dubbo-test-common
* dubbo-registry-multiple-remove-dubbo-test-common
* dubbo-registry-multiple-remove-dubbo-test-common
* dubbo-registry-multiple-remove-dubbo-test-common
* dubbo-registry-multiple-remove-dubbo-test-common
* dubbo-registry-multiple-remove-dubbo-test-common
* dubbo-registry-multiple-remove-dubbo-test-common
* dubbo-registry-multiple-remove-dubbo-test-common
* dubbo-registry-multiple-remove-dubbo-test-common
---------
Co-authored-by: Rain Yu <[email protected]>
---
dubbo-registry/dubbo-registry-multiple/pom.xml | 6 -
.../multiple/MultipleRegistry2S2RTest.java | 190 ++++++++++++++-------
.../multiple/MultipleServiceDiscoveryTest.java | 45 ++---
3 files changed, 156 insertions(+), 85 deletions(-)
diff --git a/dubbo-registry/dubbo-registry-multiple/pom.xml
b/dubbo-registry/dubbo-registry-multiple/pom.xml
index 012288a5a5..af00a87698 100644
--- a/dubbo-registry/dubbo-registry-multiple/pom.xml
+++ b/dubbo-registry/dubbo-registry-multiple/pom.xml
@@ -47,12 +47,6 @@
<artifactId>commons-lang3</artifactId>
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-test-common</artifactId>
- <version>${project.parent.version}</version>
- <scope>test</scope>
- </dependency>
<dependency>
<groupId>org.apache.curator</groupId>
diff --git
a/dubbo-registry/dubbo-registry-multiple/src/test/java/org/apache/dubbo/registry/multiple/MultipleRegistry2S2RTest.java
b/dubbo-registry/dubbo-registry-multiple/src/test/java/org/apache/dubbo/registry/multiple/MultipleRegistry2S2RTest.java
index 4c35d448fe..735e8b0105 100644
---
a/dubbo-registry/dubbo-registry-multiple/src/test/java/org/apache/dubbo/registry/multiple/MultipleRegistry2S2RTest.java
+++
b/dubbo-registry/dubbo-registry-multiple/src/test/java/org/apache/dubbo/registry/multiple/MultipleRegistry2S2RTest.java
@@ -20,16 +20,23 @@ import org.apache.dubbo.common.URL;
import org.apache.dubbo.registry.NotifyListener;
import org.apache.dubbo.registry.Registry;
import org.apache.dubbo.registry.zookeeper.ZookeeperRegistry;
-import org.apache.dubbo.remoting.zookeeper.curator5.Curator5ZookeeperClient;
+import org.apache.dubbo.registry.zookeeper.ZookeeperRegistryFactory;
import org.apache.dubbo.remoting.zookeeper.curator5.ZookeeperClient;
+import java.lang.reflect.Field;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Assumptions;
-import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
+import org.mockito.ArgumentCaptor;
+import org.mockito.MockedConstruction;
+import org.mockito.Mockito;
/**
* 2019-04-30
@@ -38,59 +45,86 @@ class MultipleRegistry2S2RTest {
private static final String SERVICE_NAME =
"org.apache.dubbo.registry.MultipleService2S2R";
private static final String SERVICE2_NAME =
"org.apache.dubbo.registry.MultipleService2S2R2";
+ private static final String MOCK_ZK_ADDR_1 =
"zookeeper://127.0.0.1:2181?check=false";
+ private static final String MOCK_ZK_ADDR_2 =
"zookeeper://127.0.0.1:2182?check=false";
+ private static final URL MOCK_ZK_URL_1 = URL.valueOf(MOCK_ZK_ADDR_1);
+ private static final URL MOCK_ZK_URL_2 = URL.valueOf(MOCK_ZK_ADDR_2);
+
+ private MultipleRegistry multipleRegistry;
+
+ private ZookeeperClient mockZkClient1;
+ private ZookeeperClient mockZkClient2;
+ private ZookeeperRegistry mockZkRegistry1;
+ private ZookeeperRegistry mockZkRegistry2;
+
+ @BeforeEach
+ void setUp() {
+ mockZkClient1 = Mockito.mock(ZookeeperClient.class);
+ mockZkClient2 = Mockito.mock(ZookeeperClient.class);
+ mockZkRegistry1 = Mockito.mock(ZookeeperRegistry.class);
+ mockZkRegistry2 = Mockito.mock(ZookeeperRegistry.class);
+
+ try (MockedConstruction<ZookeeperRegistryFactory>
zkFactoryConstruction =
+ Mockito.mockConstruction(ZookeeperRegistryFactory.class,
(mockFactory, context) -> {
+ Mockito.lenient()
+ .when(mockFactory.getRegistry(MOCK_ZK_URL_1))
+ .thenReturn(mockZkRegistry1);
+ Mockito.lenient()
+ .when(mockFactory.getRegistry(MOCK_ZK_URL_2))
+ .thenReturn(mockZkRegistry2);
+ })) {
+
Mockito.lenient().when(mockZkRegistry1.isAvailable()).thenReturn(true);
+
Mockito.lenient().when(mockZkRegistry2.isAvailable()).thenReturn(true);
+
Mockito.lenient().when(mockZkRegistry1.getUrl()).thenReturn(MOCK_ZK_URL_1);
+
Mockito.lenient().when(mockZkRegistry2.getUrl()).thenReturn(MOCK_ZK_URL_2);
+
+ URL multipleUrl =
+
URL.valueOf("multiple://127.0.0.1?application=vic&enable-empty-protection=false&check=false&"
+ + MultipleRegistry.REGISTRY_FOR_SERVICE + "=" +
MOCK_ZK_ADDR_1 + "," + MOCK_ZK_ADDR_2 + "&"
+ + MultipleRegistry.REGISTRY_FOR_REFERENCE + "=" +
MOCK_ZK_ADDR_1 + "," + MOCK_ZK_ADDR_2);
+
+ multipleRegistry = (MultipleRegistry) new
MultipleRegistryFactory().createRegistry(multipleUrl);
+
+ Map<URL, Registry> serviceRegistries = new HashMap<>();
+ serviceRegistries.put(MOCK_ZK_URL_1, mockZkRegistry1);
+ serviceRegistries.put(MOCK_ZK_URL_2, mockZkRegistry2);
+ setPrivateField(multipleRegistry, "serviceRegistries",
serviceRegistries);
+ setPrivateField(multipleRegistry, "referenceRegistries",
serviceRegistries);
+ } catch (Exception e) {
+ throw new RuntimeException("Failed to initialize
MultipleRegistry", e);
+ }
+ }
- private static MultipleRegistry multipleRegistry;
- // for test content
- private static ZookeeperClient zookeeperClient;
- private static ZookeeperClient zookeeperClient2;
-
- private static ZookeeperRegistry zookeeperRegistry;
- private static ZookeeperRegistry zookeeperRegistry2;
-
- private static String zookeeperConnectionAddress1,
zookeeperConnectionAddress2;
-
- @BeforeAll
- public static void beforeAll() {
- zookeeperConnectionAddress1 =
System.getProperty("zookeeper.connection.address.1");
- zookeeperConnectionAddress2 =
System.getProperty("zookeeper.connection.address.2");
-
- URL url =
URL.valueOf("multiple://127.0.0.1?application=vic&enable-empty-protection=false&"
- + MultipleRegistry.REGISTRY_FOR_SERVICE
- + "=" + zookeeperConnectionAddress1 + "," +
zookeeperConnectionAddress2 + "&"
- + MultipleRegistry.REGISTRY_FOR_REFERENCE + "=" +
zookeeperConnectionAddress1 + ","
- + zookeeperConnectionAddress2);
- multipleRegistry = (MultipleRegistry) new
MultipleRegistryFactory().createRegistry(url);
-
- // for test validation
- zookeeperClient = new
Curator5ZookeeperClient(URL.valueOf(zookeeperConnectionAddress1));
- zookeeperRegistry = MultipleRegistryTestUtil.getZookeeperRegistry(
- multipleRegistry.getServiceRegistries().values());
- zookeeperClient2 = new
Curator5ZookeeperClient(URL.valueOf(zookeeperConnectionAddress2));
- zookeeperRegistry2 = MultipleRegistryTestUtil.getZookeeperRegistry(
- multipleRegistry.getServiceRegistries().values());
+ private void setPrivateField(Object targetObj, String fieldName, Object
fieldValue) {
+ try {
+ Field field = targetObj.getClass().getDeclaredField(fieldName);
+ field.setAccessible(true);
+ field.set(targetObj, fieldValue);
+ } catch (NoSuchFieldException | IllegalAccessException e) {
+ throw new RuntimeException("Failed to set private field via
Reflection:" + fieldName, e);
+ }
}
@Test
void testParamConfig() {
-
Assertions.assertEquals(2,
multipleRegistry.origReferenceRegistryURLs.size());
-
Assertions.assertTrue(multipleRegistry.origReferenceRegistryURLs.contains(zookeeperConnectionAddress1));
-
Assertions.assertTrue(multipleRegistry.origReferenceRegistryURLs.contains(zookeeperConnectionAddress2));
+
Assertions.assertTrue(multipleRegistry.origReferenceRegistryURLs.contains(MOCK_ZK_ADDR_1));
+
Assertions.assertTrue(multipleRegistry.origReferenceRegistryURLs.contains(MOCK_ZK_ADDR_2));
Assertions.assertEquals(2,
multipleRegistry.origServiceRegistryURLs.size());
-
Assertions.assertTrue(multipleRegistry.origServiceRegistryURLs.contains(zookeeperConnectionAddress1));
-
Assertions.assertTrue(multipleRegistry.origServiceRegistryURLs.contains(zookeeperConnectionAddress2));
+
Assertions.assertTrue(multipleRegistry.origServiceRegistryURLs.contains(MOCK_ZK_ADDR_1));
+
Assertions.assertTrue(multipleRegistry.origServiceRegistryURLs.contains(MOCK_ZK_ADDR_2));
Assertions.assertEquals(2,
multipleRegistry.effectReferenceRegistryURLs.size());
-
Assertions.assertTrue(multipleRegistry.effectReferenceRegistryURLs.contains(zookeeperConnectionAddress1));
-
Assertions.assertTrue(multipleRegistry.effectReferenceRegistryURLs.contains(zookeeperConnectionAddress2));
+
Assertions.assertTrue(multipleRegistry.effectReferenceRegistryURLs.contains(MOCK_ZK_ADDR_1));
+
Assertions.assertTrue(multipleRegistry.effectReferenceRegistryURLs.contains(MOCK_ZK_ADDR_2));
Assertions.assertEquals(2,
multipleRegistry.effectServiceRegistryURLs.size());
-
Assertions.assertTrue(multipleRegistry.effectServiceRegistryURLs.contains(zookeeperConnectionAddress1));
-
Assertions.assertTrue(multipleRegistry.effectServiceRegistryURLs.contains(zookeeperConnectionAddress2));
+
Assertions.assertTrue(multipleRegistry.effectServiceRegistryURLs.contains(MOCK_ZK_ADDR_1));
+
Assertions.assertTrue(multipleRegistry.effectServiceRegistryURLs.contains(MOCK_ZK_ADDR_2));
-
Assertions.assertTrue(multipleRegistry.getServiceRegistries().containsKey(zookeeperConnectionAddress1));
-
Assertions.assertTrue(multipleRegistry.getServiceRegistries().containsKey(zookeeperConnectionAddress2));
+
Assertions.assertTrue(multipleRegistry.getServiceRegistries().containsKey(MOCK_ZK_URL_1));
+
Assertions.assertTrue(multipleRegistry.getServiceRegistries().containsKey(MOCK_ZK_URL_2));
Assertions.assertEquals(
2, multipleRegistry.getServiceRegistries().values().size());
// java.util.Iterator<Registry> registryIterable =
@@ -121,17 +155,19 @@ class MultipleRegistry2S2RTest {
@Test
void testRegistryAndUnRegistry() throws InterruptedException {
- URL serviceUrl = URL.valueOf(
- "http2://multiple/" + SERVICE_NAME +
"?notify=false&methods=test1,test2&category=providers");
- // URL serviceUrl2 = URL.valueOf("http2://multiple2/" +
SERVICE_NAME +
- // "?notify=false&methods=test1,test2&category=providers");
+ URL serviceUrl = URL.valueOf("http2://multiple/" + SERVICE_NAME
+ +
"?notify=false&methods=test1,test2&category=providers&application=vic");
+
multipleRegistry.register(serviceUrl);
+ Mockito.verify(mockZkRegistry1, Mockito.times(1)).register(serviceUrl);
+ Mockito.verify(mockZkRegistry2, Mockito.times(1)).register(serviceUrl);
String path = "/dubbo/" + SERVICE_NAME + "/providers";
- List<String> providerList = zookeeperClient.getChildren(path);
+
Mockito.when(mockZkClient1.getChildren(path)).thenReturn(Arrays.asList("provider1"));
+ List<String> providerList = mockZkClient1.getChildren(path);
Assertions.assertTrue(!providerList.isEmpty());
- final List<URL> list = new ArrayList<URL>();
+ final List<URL> list = new ArrayList<>();
multipleRegistry.subscribe(serviceUrl, new NotifyListener() {
@Override
public void notify(List<URL> urls) {
@@ -139,12 +175,31 @@ class MultipleRegistry2S2RTest {
list.addAll(urls);
}
});
+
+ ArgumentCaptor<NotifyListener> captor1 =
ArgumentCaptor.forClass(NotifyListener.class);
+ ArgumentCaptor<NotifyListener> captor2 =
ArgumentCaptor.forClass(NotifyListener.class);
+ Mockito.verify(mockZkRegistry1,
Mockito.times(1)).subscribe(Mockito.eq(serviceUrl), captor1.capture());
+ Mockito.verify(mockZkRegistry2,
Mockito.times(1)).subscribe(Mockito.eq(serviceUrl), captor2.capture());
+
+ List<URL> mockUrls1 =
Arrays.asList(URL.valueOf("http2://127.0.0.1:20880/" + SERVICE_NAME));
+ List<URL> mockUrls2 =
Arrays.asList(URL.valueOf("http2://127.0.0.1:20881/" + SERVICE_NAME));
+ captor1.getValue().notify(mockUrls1);
+ captor2.getValue().notify(mockUrls2);
+
Thread.sleep(1500);
Assertions.assertEquals(2, list.size());
multipleRegistry.unregister(serviceUrl);
+ Mockito.verify(mockZkRegistry1,
Mockito.times(1)).unregister(serviceUrl);
+ Mockito.verify(mockZkRegistry2,
Mockito.times(1)).unregister(serviceUrl);
+
+ List<URL> unregisterUrls =
Arrays.asList(URL.valueOf("empty://127.0.0.1:20880/" + SERVICE_NAME));
+ captor1.getValue().notify(unregisterUrls);
+ captor2.getValue().notify(unregisterUrls);
+
Thread.sleep(1500);
Assertions.assertEquals(1, list.size());
+
List<URL> urls =
MultipleRegistryTestUtil.getProviderURLsFromNotifyURLS(list);
Assertions.assertEquals(1, list.size());
Assertions.assertEquals("empty", list.get(0).getProtocol());
@@ -152,17 +207,19 @@ class MultipleRegistry2S2RTest {
@Test
void testSubscription() throws InterruptedException {
- URL serviceUrl = URL.valueOf(
- "http2://multiple/" + SERVICE2_NAME +
"?notify=false&methods=test1,test2&category=providers");
- // URL serviceUrl2 = URL.valueOf("http2://multiple2/" +
SERVICE_NAME +
- // "?notify=false&methods=test1,test2&category=providers");
+ URL serviceUrl = URL.valueOf("http2://multiple/" + SERVICE2_NAME
+ +
"?notify=false&methods=test1,test2&category=providers&application=vic");
+
multipleRegistry.register(serviceUrl);
+ Mockito.verify(mockZkRegistry1, Mockito.times(1)).register(serviceUrl);
+ Mockito.verify(mockZkRegistry2, Mockito.times(1)).register(serviceUrl);
String path = "/dubbo/" + SERVICE2_NAME + "/providers";
- List<String> providerList = zookeeperClient.getChildren(path);
+
Mockito.when(mockZkClient1.getChildren(path)).thenReturn(Arrays.asList("provider1"));
+ List<String> providerList = mockZkClient1.getChildren(path);
Assumptions.assumeTrue(!providerList.isEmpty());
- final List<URL> list = new ArrayList<URL>();
+ final List<URL> list = new ArrayList<>();
multipleRegistry.subscribe(serviceUrl, new NotifyListener() {
@Override
public void notify(List<URL> urls) {
@@ -170,22 +227,41 @@ class MultipleRegistry2S2RTest {
list.addAll(urls);
}
});
+
+ ArgumentCaptor<NotifyListener> captor1 =
ArgumentCaptor.forClass(NotifyListener.class);
+ ArgumentCaptor<NotifyListener> captor2 =
ArgumentCaptor.forClass(NotifyListener.class);
+ Mockito.verify(mockZkRegistry1,
Mockito.times(1)).subscribe(Mockito.eq(serviceUrl), captor1.capture());
+ Mockito.verify(mockZkRegistry2,
Mockito.times(1)).subscribe(Mockito.eq(serviceUrl), captor2.capture());
+
+ List<URL> mockUrls1 =
Arrays.asList(URL.valueOf("http2://127.0.0.1:20880/" + SERVICE2_NAME));
+ List<URL> mockUrls2 =
Arrays.asList(URL.valueOf("http2://127.0.0.1:20881/" + SERVICE2_NAME));
+ captor1.getValue().notify(mockUrls1);
+ captor2.getValue().notify(mockUrls2);
+
Thread.sleep(1500);
Assertions.assertEquals(2, list.size());
List<Registry> serviceRegistries =
- new
ArrayList<Registry>(multipleRegistry.getServiceRegistries().values());
+ new
ArrayList<>(multipleRegistry.getServiceRegistries().values());
serviceRegistries.get(0).unregister(serviceUrl);
+ Mockito.verify(mockZkRegistry1,
Mockito.times(1)).unregister(serviceUrl);
+
+ List<URL> unregisterUrls1 =
Arrays.asList(URL.valueOf("empty://127.0.0.1:20880/" + SERVICE2_NAME));
+ captor1.getValue().notify(unregisterUrls1);
+
Thread.sleep(1500);
Assertions.assertEquals(1, list.size());
- List<URL> urls =
MultipleRegistryTestUtil.getProviderURLsFromNotifyURLS(list);
+ List<URL> urls1 =
MultipleRegistryTestUtil.getProviderURLsFromNotifyURLS(list);
Assertions.assertEquals(1, list.size());
Assertions.assertTrue(!"empty".equals(list.get(0).getProtocol()));
serviceRegistries.get(1).unregister(serviceUrl);
+ Mockito.verify(mockZkRegistry2,
Mockito.times(1)).unregister(serviceUrl);
+ List<URL> unregisterUrls2 =
Arrays.asList(URL.valueOf("empty://127.0.0.1:20881/" + SERVICE2_NAME));
+ captor2.getValue().notify(unregisterUrls2);
Thread.sleep(1500);
Assertions.assertEquals(1, list.size());
- urls = MultipleRegistryTestUtil.getProviderURLsFromNotifyURLS(list);
+ List<URL> urls2 =
MultipleRegistryTestUtil.getProviderURLsFromNotifyURLS(list);
Assertions.assertEquals(1, list.size());
Assertions.assertEquals("empty", list.get(0).getProtocol());
}
diff --git
a/dubbo-registry/dubbo-registry-multiple/src/test/java/org/apache/dubbo/registry/multiple/MultipleServiceDiscoveryTest.java
b/dubbo-registry/dubbo-registry-multiple/src/test/java/org/apache/dubbo/registry/multiple/MultipleServiceDiscoveryTest.java
index b9bebdd7fc..b3391576f7 100644
---
a/dubbo-registry/dubbo-registry-multiple/src/test/java/org/apache/dubbo/registry/multiple/MultipleServiceDiscoveryTest.java
+++
b/dubbo-registry/dubbo-registry-multiple/src/test/java/org/apache/dubbo/registry/multiple/MultipleServiceDiscoveryTest.java
@@ -32,7 +32,6 @@ import org.apache.dubbo.rpc.model.ApplicationModel;
import java.lang.reflect.Field;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -46,7 +45,7 @@ import static
org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataU
public class MultipleServiceDiscoveryTest {
- private static String zookeeperConnectionAddress1,
zookeeperConnectionAddress2;
+ private static String mockZkAddress =
"zookeeper://mock-zk:2181?check=false";
@Test
public void testOnEvent() {
@@ -57,34 +56,36 @@ public class MultipleServiceDiscoveryTest {
MetadataInfo metadataInfo = JsonUtils.toJavaObject(metadata_111,
MetadataInfo.class);
ApplicationModel applicationModel =
ApplicationModel.defaultModel();
applicationModel.getApplicationConfigManager().setApplication(new
ApplicationConfig("app2"));
- zookeeperConnectionAddress1 =
-
"multiple://127.0.0.1:2181?reference-registry=127.0.0.1:2181?enableEmptyProtection=false&child.a1=zookeeper://127.0.0.1:2181";
- List<Object> urlsSameRevision = new ArrayList<>();
- urlsSameRevision.add("127.0.0.1:20880?revision=111");
- urlsSameRevision.add("127.0.0.2:20880?revision=111");
- urlsSameRevision.add("127.0.0.3:20880?revision=111");
- URL url = URL.valueOf(zookeeperConnectionAddress1);
+ String multipleUrl = String.format(
+
"multiple://mock-registry:2181?reference-registry=%s&child.a1=%s&check=false",
+ mockZkAddress, mockZkAddress);
+ URL url = URL.valueOf(multipleUrl);
url.setScopeModel(applicationModel);
MultipleServiceDiscovery multipleServiceDiscovery = new
MultipleServiceDiscovery(url);
- Class<MultipleServiceDiscovery> multipleServiceDiscoveryClass =
MultipleServiceDiscovery.class;
- Field serviceDiscoveries =
multipleServiceDiscoveryClass.getDeclaredField("serviceDiscoveries");
- serviceDiscoveries.setAccessible(true);
- ServiceDiscovery serviceDiscoveryMock =
Mockito.mock(ServiceDiscovery.class);
-
Mockito.when(serviceDiscoveryMock.getRemoteMetadata(Mockito.anyString(),
Mockito.anyList()))
+ Class<MultipleServiceDiscovery> msdClass =
MultipleServiceDiscovery.class;
+ Field serviceDiscoveriesField =
msdClass.getDeclaredField("serviceDiscoveries");
+ serviceDiscoveriesField.setAccessible(true);
+ ServiceDiscovery mockServiceDiscovery =
Mockito.mock(ServiceDiscovery.class);
+
Mockito.when(mockServiceDiscovery.getRemoteMetadata(Mockito.anyString(),
Mockito.anyList()))
.thenReturn(metadataInfo);
- serviceDiscoveries.set(
- multipleServiceDiscovery,
Collections.singletonMap("child.a1", serviceDiscoveryMock));
+ Map<String, ServiceDiscovery> mockServiceDiscoveries = new
HashMap<>();
+ mockServiceDiscoveries.put("child.a1", mockServiceDiscovery);
+ serviceDiscoveriesField.set(multipleServiceDiscovery,
mockServiceDiscoveries);
MultipleServiceDiscovery.MultiServiceInstancesChangedListener
listener =
(MultipleServiceDiscovery.MultiServiceInstancesChangedListener)
multipleServiceDiscovery.createListener(Sets.newHashSet("app1"));
multipleServiceDiscovery.addServiceInstancesChangedListener(listener);
- MultipleServiceDiscovery.SingleServiceInstancesChangedListener
singleServiceInstancesChangedListener =
+
+ MultipleServiceDiscovery.SingleServiceInstancesChangedListener
singleListener =
listener.getAndComputeIfAbsent("child.a1", (a1) -> null);
- Assert.notNull(
- singleServiceInstancesChangedListener,
"singleServiceInstancesChangedListener can not be null");
- singleServiceInstancesChangedListener.onEvent(
- new ServiceInstancesChangedEvent("app1",
buildInstances(urlsSameRevision)));
- Mockito.verify(serviceDiscoveryMock, Mockito.times(1))
+ Assert.notNull(singleListener,
"singleServiceInstancesChangedListener can not be null");
+
+ List<Object> urlsSameRevision = new ArrayList<>();
+ urlsSameRevision.add("127.0.0.1:20880?revision=111");
+ urlsSameRevision.add("127.0.0.2:20880?revision=111");
+ urlsSameRevision.add("127.0.0.3:20880?revision=111");
+ singleListener.onEvent(new ServiceInstancesChangedEvent("app1",
buildInstances(urlsSameRevision)));
+ Mockito.verify(mockServiceDiscovery, Mockito.times(1))
.getRemoteMetadata(Mockito.anyString(), Mockito.anyList());
Field serviceUrlsField =
ServiceInstancesChangedListener.class.getDeclaredField("serviceUrls");
serviceUrlsField.setAccessible(true);