Skip to content

Commit

Permalink
UT:refer for multiple registry (apache#8760)
Browse files Browse the repository at this point in the history
* add ut: refer for multiple registry

* fix import

* fix
  • Loading branch information
CrazyHZM authored Sep 12, 2021
1 parent 8df4aa5 commit 0891a7e
Showing 1 changed file with 80 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
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;
Expand Down Expand Up @@ -68,6 +69,7 @@
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;
Expand Down Expand Up @@ -117,29 +119,34 @@
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();
}

@AfterEach
public void tearDown() throws IOException {
DubboBootstrap.reset();
registryCenter.shutdown();
registryCenter1.shutdown();
registryCenter2.shutdown();
Mockito.framework().clearInlineMocks();

}
Expand Down Expand Up @@ -238,7 +245,7 @@ public void testAppendConfig() {
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));
Expand Down Expand Up @@ -523,7 +530,7 @@ public void testCreateInvokerForRemoteRefer() {
referenceConfig.getInterfaceClass();
referenceConfig.setCheck(false);
RegistryConfig registry = new RegistryConfig();
registry.setAddress(zkUrl);
registry.setAddress(zkUrl1);
applicationConfig.setRegistries(Collections.singletonList(registry));
applicationConfig.setRegistryIds(registry.getId());

Expand Down Expand Up @@ -567,7 +574,7 @@ public void testCreateInvokerWithRegistryUrlForRemoteRefer() {
referenceConfig.getInterfaceClass();
referenceConfig.setCheck(false);

referenceConfig.setUrl(registryUrl);
referenceConfig.setUrl(registryUrl1);

dubboBootstrap
.application(applicationConfig)
Expand All @@ -580,6 +587,57 @@ public void testCreateInvokerWithRegistryUrlForRemoteRefer() {

}

/**
* 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")
Expand All @@ -590,7 +648,7 @@ public void testInjvm() throws Exception {
ApplicationModel.defaultModel().getApplicationConfigManager().setApplication(application);

RegistryConfig registry = new RegistryConfig();
registry.setAddress(zkUrl);
registry.setAddress(zkUrl1);

ProtocolConfig protocol = new ProtocolConfig();
protocol.setName("dubbo");
Expand Down Expand Up @@ -634,7 +692,7 @@ public void test1ReferenceRetry() {
ApplicationModel.defaultModel().getApplicationConfigManager().setApplication(application);

RegistryConfig registry = new RegistryConfig();
registry.setAddress(zkUrl);
registry.setAddress(zkUrl1);
ProtocolConfig protocol = new ProtocolConfig();
protocol.setName("injvm");

Expand Down Expand Up @@ -819,7 +877,7 @@ public void testDifferentClassLoader() throws Exception {
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();
Expand All @@ -836,7 +894,7 @@ public void testDifferentClassLoader() throws Exception {

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();
Expand All @@ -855,7 +913,7 @@ public void testDifferentClassLoader() throws Exception {

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();
Expand Down Expand Up @@ -904,7 +962,7 @@ public void testDifferentClassLoaderRequest() throws Exception {
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();
Expand All @@ -919,7 +977,7 @@ public void testDifferentClassLoaderRequest() throws Exception {
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();
Expand Down

0 comments on commit 0891a7e

Please sign in to comment.