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/12 12:35:59 UTC

[dubbo] branch 3.0 updated: UT:refer for multiple registry (#8760)

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

albumenj pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo.git


The following commit(s) were added to refs/heads/3.0 by this push:
     new 0891a7e  UT:refer for multiple registry (#8760)
0891a7e is described below

commit 0891a7e6acf4dde654fb17f92de6eae241b9cf42
Author: huazhongming <cr...@gmail.com>
AuthorDate: Sun Sep 12 20:35:49 2021 +0800

    UT:refer for multiple registry (#8760)
    
    * add ut: refer for multiple registry
    
    * fix import
    
    * fix
---
 .../apache/dubbo/config/ReferenceConfigTest.java   | 102 ++++++++++++++++-----
 1 file changed, 80 insertions(+), 22 deletions(-)

diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java
index 34129dd..576b396 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java
@@ -35,6 +35,7 @@ import org.apache.dubbo.registrycenter.RegistryCenter;
 import org.apache.dubbo.registrycenter.ZookeeperSingleRegistryCenter;
 import org.apache.dubbo.rpc.Exporter;
 import org.apache.dubbo.rpc.ProxyFactory;
+import org.apache.dubbo.rpc.cluster.support.registry.ZoneAwareClusterInvoker;
 import org.apache.dubbo.rpc.listener.ListenerInvokerWrapper;
 import org.apache.dubbo.rpc.model.ApplicationModel;
 import org.apache.dubbo.rpc.model.FrameworkModel;
@@ -68,6 +69,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.ArrayList;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
@@ -117,21 +119,25 @@ import static org.apache.dubbo.rpc.Constants.SCOPE_LOCAL;
 import static org.apache.dubbo.rpc.Constants.SCOPE_REMOTE;
 
 public class ReferenceConfigTest {
-    private String zkUrl;
-    private String registryUrl;
-    private RegistryCenter registryCenter;
+    private String zkUrl1;
+    private String zkUrl2;
+    private String registryUrl1;
+    private RegistryCenter registryCenter1;
+    private RegistryCenter registryCenter2;
 
     @BeforeEach
     public void setUp() throws Exception {
         DubboBootstrap.reset();
-        int zkServerPort = NetUtils.getAvailablePort(NetUtils.getRandomPort());
-        registryCenter = new ZookeeperSingleRegistryCenter(zkServerPort);
-        registryCenter.startup();
-        this.zkUrl = "zookeeper://localhost:" + zkServerPort;
-        this.registryUrl = "registry://localhost:" + zkServerPort + "?registry=zookeeper";
-
-        // preload
-        ReferenceConfig preloadReferenceConfig = new ReferenceConfig();
+        int zkServerPort1 = NetUtils.getAvailablePort(NetUtils.getRandomPort());
+        registryCenter1 = new ZookeeperSingleRegistryCenter(zkServerPort1);
+        registryCenter1.startup();
+        int zkServerPort2 = NetUtils.getAvailablePort(NetUtils.getRandomPort());
+        registryCenter2 = new ZookeeperSingleRegistryCenter(zkServerPort2);
+        registryCenter2.startup();
+        this.zkUrl1 = "zookeeper://localhost:" + zkServerPort1;
+        this.zkUrl2 = "zookeeper://localhost:" + zkServerPort2;
+        this.registryUrl1 = "registry://localhost:" + zkServerPort1 + "?registry=zookeeper";
+
         ApplicationModel.defaultModel().getApplicationConfigManager();
         DubboBootstrap.getInstance();
     }
@@ -139,7 +145,8 @@ public class ReferenceConfigTest {
     @AfterEach
     public void tearDown() throws IOException {
         DubboBootstrap.reset();
-        registryCenter.shutdown();
+        registryCenter1.shutdown();
+        registryCenter2.shutdown();
         Mockito.framework().clearInlineMocks();
 
     }
@@ -238,7 +245,7 @@ public class ReferenceConfigTest {
         referenceConfig.getInterfaceClass();
         referenceConfig.setCheck(false);
         RegistryConfig registry = new RegistryConfig();
-        registry.setAddress(zkUrl);
+        registry.setAddress(zkUrl1);
         applicationConfig.setRegistries(Collections.singletonList(registry));
         applicationConfig.setRegistryIds(registry.getId());
         moduleConfig.setRegistries(Collections.singletonList(registry));
@@ -523,7 +530,7 @@ public class ReferenceConfigTest {
         referenceConfig.getInterfaceClass();
         referenceConfig.setCheck(false);
         RegistryConfig registry = new RegistryConfig();
-        registry.setAddress(zkUrl);
+        registry.setAddress(zkUrl1);
         applicationConfig.setRegistries(Collections.singletonList(registry));
         applicationConfig.setRegistryIds(registry.getId());
 
@@ -567,7 +574,7 @@ public class ReferenceConfigTest {
         referenceConfig.getInterfaceClass();
         referenceConfig.setCheck(false);
 
-        referenceConfig.setUrl(registryUrl);
+        referenceConfig.setUrl(registryUrl1);
 
         dubboBootstrap
             .application(applicationConfig)
@@ -580,6 +587,57 @@ public class ReferenceConfigTest {
 
     }
 
+    /**
+     * Verify the service reference of multiple registries
+     */
+    @Test
+    public void testMultipleRegistryForRemoteRefer() {
+        ReferenceConfig<DemoService> referenceConfig = new ReferenceConfig<>();
+        referenceConfig.setGeneric(Boolean.FALSE.toString());
+        referenceConfig.setProtocol("dubbo");
+        referenceConfig.setInit(true);
+        referenceConfig.setLazy(false);
+        referenceConfig.setInjvm(false);
+
+        DubboBootstrap dubboBootstrap = DubboBootstrap.newInstance(FrameworkModel.defaultModel());
+
+        ApplicationConfig applicationConfig = new ApplicationConfig();
+        applicationConfig.setName("application1");
+        Map<String, String> parameters = new HashMap<>();
+        parameters.put("key1", "value1");
+        parameters.put("key2", "value2");
+        applicationConfig.setParameters(parameters);
+
+        referenceConfig.refreshed.set(true);
+        referenceConfig.setInterface(DemoService.class);
+        referenceConfig.getInterfaceClass();
+        referenceConfig.setCheck(false);
+        RegistryConfig registry1 = new RegistryConfig();
+        registry1.setAddress(zkUrl1);
+        registry1.setId("zk1");
+
+        RegistryConfig registry2 = new RegistryConfig();
+        registry2.setAddress(zkUrl2);
+        registry2.setId("zk2");
+
+        List<RegistryConfig> registryConfigs = new ArrayList<>();
+        registryConfigs.add(registry1);
+        registryConfigs.add(registry2);
+        applicationConfig.setRegistries(registryConfigs);
+        applicationConfig.setRegistryIds("zk1,zk2");
+
+        referenceConfig.setRegistries(registryConfigs);
+
+        dubboBootstrap
+            .application(applicationConfig)
+            .reference(referenceConfig)
+            .initialize();
+
+        referenceConfig.init();
+        Assertions.assertTrue(referenceConfig.getInvoker() instanceof ZoneAwareClusterInvoker);
+
+        dubboBootstrap.destroy();
+    }
 
     @Test
     @Disabled("Disabled due to Github Actions environment")
@@ -590,7 +648,7 @@ public class ReferenceConfigTest {
         ApplicationModel.defaultModel().getApplicationConfigManager().setApplication(application);
 
         RegistryConfig registry = new RegistryConfig();
-        registry.setAddress(zkUrl);
+        registry.setAddress(zkUrl1);
 
         ProtocolConfig protocol = new ProtocolConfig();
         protocol.setName("dubbo");
@@ -634,7 +692,7 @@ public class ReferenceConfigTest {
         ApplicationModel.defaultModel().getApplicationConfigManager().setApplication(application);
 
         RegistryConfig registry = new RegistryConfig();
-        registry.setAddress(zkUrl);
+        registry.setAddress(zkUrl1);
         ProtocolConfig protocol = new ProtocolConfig();
         protocol.setName("injvm");
 
@@ -819,7 +877,7 @@ public class ReferenceConfigTest {
         DemoService demoService = new DemoServiceImpl();
         ServiceConfig<DemoService> serviceConfig = new ServiceConfig<>();
         serviceConfig.setInterface(DemoService.class);
-        serviceConfig.setRegistry(new RegistryConfig(zkUrl));
+        serviceConfig.setRegistry(new RegistryConfig(zkUrl1));
         serviceConfig.setScopeModel(moduleModel);
         serviceConfig.setRef(demoService);
         serviceConfig.export();
@@ -836,7 +894,7 @@ public class ReferenceConfigTest {
 
         ReferenceConfig<DemoService> referenceConfig1 = new ReferenceConfig<>();
         referenceConfig1.setInterface(class1);
-        referenceConfig1.setRegistry(new RegistryConfig(zkUrl));
+        referenceConfig1.setRegistry(new RegistryConfig(zkUrl1));
         referenceConfig1.setScopeModel(moduleModel);
         referenceConfig1.setScope("remote");
         Object demoService1 = referenceConfig1.get();
@@ -855,7 +913,7 @@ public class ReferenceConfigTest {
 
         ReferenceConfig<DemoService> referenceConfig2 = new ReferenceConfig<>();
         referenceConfig2.setInterface(class2);
-        referenceConfig2.setRegistry(new RegistryConfig(zkUrl));
+        referenceConfig2.setRegistry(new RegistryConfig(zkUrl1));
         referenceConfig2.setScopeModel(moduleModel);
         referenceConfig2.setScope("remote");
         Object demoService2 = referenceConfig2.get();
@@ -904,7 +962,7 @@ public class ReferenceConfigTest {
         ServiceConfig serviceConfig = new ServiceConfig<>();
         serviceConfig.setInterfaceClassLoader(classLoader1);
         serviceConfig.setInterface(clazz1);
-        serviceConfig.setRegistry(new RegistryConfig(zkUrl));
+        serviceConfig.setRegistry(new RegistryConfig(zkUrl1));
         serviceConfig.setScopeModel(moduleModel);
         serviceConfig.setRef(declaredConstructor.newInstance(innerRequestReference, innerResultReference));
         serviceConfig.export();
@@ -919,7 +977,7 @@ public class ReferenceConfigTest {
         ReferenceConfig<DemoService> referenceConfig1 = new ReferenceConfig<>();
         referenceConfig1.setInterface(clazz2);
         referenceConfig1.setInterfaceClassLoader(classLoader3);
-        referenceConfig1.setRegistry(new RegistryConfig(zkUrl));
+        referenceConfig1.setRegistry(new RegistryConfig(zkUrl1));
         referenceConfig1.setScopeModel(moduleModel);
         referenceConfig1.setScope("remote");
         Object object1 = referenceConfig1.get();