more test case

git-svn-id: http://code.alibabatech.com/svn/dubbo/trunk@163 1a56cb94-b969-4eaa-88fa-be21384802f2
This commit is contained in:
chao.liuc 2011-11-01 09:54:44 +00:00
parent a0de8e050e
commit a0a9df849e
2 changed files with 35 additions and 5 deletions

View File

@ -478,7 +478,8 @@ public class RegistryDirectoryTest {
List<URL> serviceUrls = new ArrayList<URL> ();
// without ROUTER_KEY, the first router should not be created.
serviceUrls.add(routerurl.addParameter(RpcConstants.TYPE_KEY, "javascript")
serviceUrls.add(routerurl.addParameter(RpcConstants.TYPE_KEY, "javascript")
.addParameter(RpcConstants.ROUTER_KEY, "notsupported")
.addParameter(RpcConstants.RULE_KEY, "function test1(){}"));
serviceUrls.add(routerurl2.addParameter(RpcConstants.TYPE_KEY, "javascript")
.addParameter(RpcConstants.ROUTER_KEY, ScriptRouterFactory.NAME)
@ -499,6 +500,29 @@ public class RegistryDirectoryTest {
registryDirectory.notify(serviceUrls);
routers = registryDirectory.getRouters();
Assert.assertEquals(0, routers.size());
}
@Test
public void testNotifyRouterUrls_Clean(){
if (isScriptUnsupported) return;
RegistryDirectory registryDirectory = getRegistryDirectory();
URL routerurl= URL.valueOf(RpcConstants.ROUTE_PROTOCOL + "://127.0.0.1:9096/")
.addParameter(RpcConstants.ROUTER_KEY, "javascript")
.addParameter(RpcConstants.RULE_KEY, "function test1(){}")
.addParameter(RpcConstants.ROUTER_KEY, "script"); //FIX BAD
List<URL> serviceUrls = new ArrayList<URL> ();
// without ROUTER_KEY, the first router should not be created.
serviceUrls.add(routerurl);
registryDirectory.notify(serviceUrls);
List routers = registryDirectory.getRouters();
Assert.assertEquals(1, routers.size());
serviceUrls.clear();
serviceUrls.add(routerurl.addParameter(RpcConstants.ROUTER_KEY, RpcConstants.ROUTER_TYPE_CLEAR));
registryDirectory.notify(serviceUrls);
routers = registryDirectory.getRouters();
Assert.assertEquals(0, routers.size());
}

View File

@ -44,6 +44,7 @@ import com.alibaba.dubbo.rpc.RpcConstants;
import com.alibaba.dubbo.rpc.RpcException;
import com.alibaba.dubbo.rpc.cluster.Router;
import com.alibaba.dubbo.rpc.cluster.RouterFactory;
import com.alibaba.dubbo.rpc.cluster.router.ScriptRouterFactory;
import com.alibaba.dubbo.rpc.cluster.support.AbstractDirectory;
import com.alibaba.dubbo.rpc.cluster.support.ClusterUtils;
@ -108,7 +109,7 @@ public class RegistryDirectory<T> extends AbstractDirectory<T> implements Notify
registry.unsubscribe(directoryUrl, this);
}
} catch (Throwable t) {
logger.warn("unexpeced error when unsubscribe service " + serviceKey + "from registry" + registry.getUrl().getAddress(), t);
logger.warn("unexpeced error when unsubscribe service " + serviceKey + "from registry" + registry.getUrl(), t);
}
try {
destroyAllInvokers();
@ -193,13 +194,18 @@ public class RegistryDirectory<T> extends AbstractDirectory<T> implements Notify
if (urls != null && urls.size() > 0) {
for (URL url : urls) {
String router_type = url.getParameter(RpcConstants.ROUTER_KEY);
String router_type = url.getParameter(RpcConstants.ROUTER_KEY, ScriptRouterFactory.NAME);
if (router_type == null || router_type.length() == 0){
logger.warn("Router url:\"" + url.toString() + "\" does not contain " + RpcConstants.ROUTER_KEY + ", router creation ignored!");
continue;
}
routers.add(ExtensionLoader.getExtensionLoader(RouterFactory.class).getExtension(router_type).getRouter(url));
// routers.add(routerFactory.getRouter(url.setProtocol(router_type)));
try{
Router router = ExtensionLoader.getExtensionLoader(RouterFactory.class).getExtension(router_type).getRouter(url);
if (!routers.contains(router))
routers.add(router);
}catch (Throwable t) {
logger.error("convert router url to router error, url: "+ url, t);
}
}
}
return routers;