@Test
public void testRouteHostFilter() {

    List<Invoker<String>> invokers = new ArrayList<Invoker<String>>();
    MockInvoker<String> invoker1 = new MockInvoker<String>(URL.valueOf("dubbo://10.134.108.1:20880/com.dubbo.HelloService"));
    MockInvoker<String> invoker2 = new MockInvoker<String>(URL.valueOf("dubbo://10.134.108.2:20880/com.dubbo.HelloService"));
    MockInvoker<String> invoker3 = new MockInvoker<String>(URL.valueOf("dubbo://10.134.108.3:20880/com.dubbo.HelloService"));
    invokers.add(invoker1);
    invokers.add(invoker2);
    invokers.add(invoker3);
    String script = "function route(invokers, invocation, context){ " +
            "	var result = new java.util.ArrayList(invokers.size()); " +
            "	var targetHost = new java.util.ArrayList(); " +
            "	targetHost.add(\"10.134.108.2\"); " +
            "	for (var i = 0; i < invokers.length; i++) { " +
            "		if(targetHost.contains(invokers[i].getUrl().getHost())){ " +
            "			result.add(invokers[i]); " +
            "		} " +
            "	} " +
            "	return result; " +
            "} " +
            "route(invokers, invocation, context) ";
    Router router = new ScriptRouterFactory().getRouter(getRouteUrl(script));
    List<Invoker<String>> routeResult = router.route(invokers, invokers.get(0).getUrl(), new RpcInvocation());
    Assertions.assertEquals(1, routeResult.size());
    Assertions.assertEquals(invoker2, routeResult.get(0));
}