Skip to content

Commit 3416402

Browse files
author
kimi
committed
DUBBO-627 添加单元测试,覆盖 export 时是否能把 generic 的配置发布到 registry 上
1 parent b90c3b3 commit 3416402

File tree

4 files changed

+109
-2
lines changed

4 files changed

+109
-2
lines changed

dubbo-config/dubbo-config-spring/src/test/java/com/alibaba/dubbo/config/spring/ConfigTest.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import static org.junit.Assert.fail;
2424
import static org.junit.matchers.JUnitMatchers.containsString;
2525

26+
import java.util.Collection;
2627
import java.util.List;
2728

2829
import org.junit.Test;
@@ -50,6 +51,10 @@
5051
import com.alibaba.dubbo.config.spring.filter.MockFilter;
5152
import com.alibaba.dubbo.config.spring.impl.DemoServiceImpl;
5253
import com.alibaba.dubbo.config.spring.impl.HelloServiceImpl;
54+
import com.alibaba.dubbo.config.spring.registry.MockRegistry;
55+
import com.alibaba.dubbo.config.spring.registry.MockRegistryFactory;
56+
import com.alibaba.dubbo.registry.Registry;
57+
import com.alibaba.dubbo.registry.RegistryFactory;
5358
import com.alibaba.dubbo.registry.RegistryService;
5459
import com.alibaba.dubbo.rpc.Exporter;
5560
import com.alibaba.dubbo.rpc.Filter;
@@ -943,7 +948,7 @@ public void testReferGenericExport() throws Exception {
943948
public void testGenericServiceConfig() throws Exception {
944949
ServiceConfig<GenericService> service = new ServiceConfig<GenericService>();
945950
service.setApplication(new ApplicationConfig("test"));
946-
service.setRegistry(new RegistryConfig("N/A"));
951+
service.setRegistry(new RegistryConfig("mock://localhost"));
947952
service.setInterface(DemoService.class.getName());
948953
service.setGeneric(Constants.GENERIC_SERIALIZATION_BEAN);
949954
service.setRef(new GenericService(){
@@ -954,9 +959,12 @@ public void testGenericServiceConfig() throws Exception {
954959
});
955960
try {
956961
service.export();
957-
URL url = service.getExportedUrls().get(0);
962+
Collection<Registry> collection = MockRegistryFactory.getCachedRegistry();
963+
MockRegistry registry = (MockRegistry)collection.iterator().next();
964+
URL url = registry.getRegistered().get(0);
958965
Assert.assertEquals(Constants.GENERIC_SERIALIZATION_BEAN, url.getParameter(Constants.GENERIC_KEY));
959966
} finally {
967+
MockRegistryFactory.cleanCachedRegistry();
960968
service.unexport();
961969
}
962970
}
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
package com.alibaba.dubbo.config.spring.registry;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
import com.alibaba.dubbo.common.URL;
7+
import com.alibaba.dubbo.registry.NotifyListener;
8+
import com.alibaba.dubbo.registry.Registry;
9+
10+
/**
11+
* @author <a href="mailto:gang.lvg@taobao.com">kimi</a>
12+
*/
13+
public class MockRegistry implements Registry {
14+
15+
private URL url;
16+
17+
private List<URL> registered = new ArrayList<URL>();
18+
19+
private List<URL> subscribered = new ArrayList<URL>();
20+
21+
public List<URL> getRegistered() {
22+
return registered;
23+
}
24+
25+
public List<URL> getSubscribered() {
26+
return subscribered;
27+
}
28+
29+
public MockRegistry(URL url) {
30+
if (url == null) {
31+
throw new NullPointerException();
32+
}
33+
this.url = url;
34+
}
35+
36+
public URL getUrl() {
37+
return url;
38+
}
39+
40+
public boolean isAvailable() {
41+
return true;
42+
}
43+
44+
public void destroy() {
45+
46+
}
47+
48+
public void register(URL url) {
49+
registered.add(url);
50+
}
51+
52+
public void unregister(URL url) {
53+
registered.remove(url);
54+
}
55+
56+
public void subscribe(URL url, NotifyListener listener) {
57+
subscribered.add(url);
58+
}
59+
60+
public void unsubscribe(URL url, NotifyListener listener) {
61+
subscribered.remove(url);
62+
}
63+
64+
public List<URL> lookup(URL url) {
65+
return null;
66+
}
67+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.alibaba.dubbo.config.spring.registry;
2+
3+
import java.util.Collection;
4+
import java.util.HashMap;
5+
import java.util.Map;
6+
7+
import com.alibaba.dubbo.common.URL;
8+
import com.alibaba.dubbo.registry.Registry;
9+
import com.alibaba.dubbo.registry.RegistryFactory;
10+
11+
/**
12+
* @author <a href="mailto:gang.lvg@taobao.com">kimi</a>
13+
*/
14+
public class MockRegistryFactory implements RegistryFactory {
15+
16+
private static final Map<URL, Registry> registries = new HashMap<URL, Registry>();
17+
18+
public Registry getRegistry(URL url) {
19+
MockRegistry registry = new MockRegistry(url);
20+
registries.put(url, registry);
21+
return registry;
22+
}
23+
24+
public static Collection<Registry> getCachedRegistry() {
25+
return registries.values();
26+
}
27+
28+
public static void cleanCachedRegistry() {
29+
registries.clear();
30+
}
31+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
mock=com.alibaba.dubbo.config.spring.registry.MockRegistryFactory

0 commit comments

Comments
 (0)