You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by li...@apache.org on 2018/11/29 06:05:36 UTC
[incubator-dubbo] branch dev-metadata updated: fix ut
This is an automated email from the ASF dual-hosted git repository.
liujun pushed a commit to branch dev-metadata
in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git
The following commit(s) were added to refs/heads/dev-metadata by this push:
new a1b9e0a fix ut
a1b9e0a is described below
commit a1b9e0ab4deae4b966b952c812fb6456355d9a2a
Author: ken.lj <ke...@gmail.com>
AuthorDate: Thu Nov 29 14:05:25 2018 +0800
fix ut
---
.../cluster/router/file/FileRouterEngineTest.java | 24 ++++++++++------
.../support/AbstractClusterInvokerTest.java | 15 ++++++++--
.../support/wrapper/MockClusterInvokerTest.java | 32 ++++++++++++++++------
.../META-INF/spring/dubbo-demo-consumer.xml | 2 +-
.../META-INF/spring/dubbo-demo-provider.xml | 2 ++
5 files changed, 53 insertions(+), 22 deletions(-)
diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/file/FileRouterEngineTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/file/FileRouterEngineTest.java
index 663bfc5..71f28bf 100644
--- a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/file/FileRouterEngineTest.java
+++ b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/file/FileRouterEngineTest.java
@@ -19,6 +19,7 @@ package org.apache.dubbo.rpc.cluster.router.file;
import org.apache.dubbo.common.Constants;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.extension.ExtensionLoader;
+import org.apache.dubbo.configcenter.DynamicConfiguration;
import org.apache.dubbo.rpc.Invocation;
import org.apache.dubbo.rpc.Invoker;
import org.apache.dubbo.rpc.Result;
@@ -27,7 +28,6 @@ import org.apache.dubbo.rpc.RpcInvocation;
import org.apache.dubbo.rpc.RpcResult;
import org.apache.dubbo.rpc.cluster.Directory;
import org.apache.dubbo.rpc.cluster.LoadBalance;
-import org.apache.dubbo.rpc.cluster.RouterChain;
import org.apache.dubbo.rpc.cluster.RouterFactory;
import org.apache.dubbo.rpc.cluster.directory.StaticDirectory;
import org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker;
@@ -38,7 +38,10 @@ import org.junit.Test;
import javax.script.ScriptEngineManager;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.mock;
@@ -50,7 +53,7 @@ public class FileRouterEngineTest {
Invoker<FileRouterEngineTest> invoker1 = mock(Invoker.class);
Invoker<FileRouterEngineTest> invoker2 = mock(Invoker.class);
Invocation invocation;
- Directory<FileRouterEngineTest> dic;
+ StaticDirectory<FileRouterEngineTest> dic;
Result result = new RpcResult();
private RouterFactory routerFactory = ExtensionLoader.getExtensionLoader(RouterFactory.class).getAdaptiveExtension();
@@ -69,8 +72,8 @@ public class FileRouterEngineTest {
if (isScriptUnsupported) return;
URL url = initUrl("notAvailablerule.javascript");
initInvocation("method1");
- initDic(url);
initInvokers(url, true, false);
+ initDic(url);
MockClusterInvoker<FileRouterEngineTest> sinvoker = new MockClusterInvoker<FileRouterEngineTest>(
dic, url);
@@ -86,8 +89,8 @@ public class FileRouterEngineTest {
if (isScriptUnsupported) return;
URL url = initUrl("availablerule.javascript");
initInvocation("method1");
- initDic(url);
initInvokers(url);
+ initDic(url);
MockClusterInvoker<FileRouterEngineTest> sinvoker = new MockClusterInvoker<FileRouterEngineTest>(
dic, url);
@@ -104,8 +107,8 @@ public class FileRouterEngineTest {
URL url = initUrl("methodrule.javascript");
{
initInvocation("method1");
- initDic(url);
initInvokers(url, true, true);
+ initDic(url);
MockClusterInvoker<FileRouterEngineTest> sinvoker = new MockClusterInvoker<FileRouterEngineTest>(
dic, url);
@@ -117,8 +120,8 @@ public class FileRouterEngineTest {
}
{
initInvocation("method2");
- initDic(url);
initInvokers(url, true, true);
+ initDic(url);
MockClusterInvoker<FileRouterEngineTest> sinvoker = new MockClusterInvoker<FileRouterEngineTest>(
dic, url);
for (int i = 0; i < 100; i++) {
@@ -158,9 +161,12 @@ public class FileRouterEngineTest {
}
private void initDic(URL url) {
- // FIXME dynamicConfiguration should not be null
- RouterChain chain = RouterChain.buildChain(null, null);
- dic = new StaticDirectory<FileRouterEngineTest>(url, invokers, chain);
+ dic = new StaticDirectory<FileRouterEngineTest>(url, invokers);
+ Map<String, List<Invoker<FileRouterEngineTest>>> methodInvokers = new HashMap<>();
+ methodInvokers.put("method1", invokers);
+ methodInvokers.put("method2", invokers);
+ dic.buildRouterChain(methodInvokers, ExtensionLoader.getExtensionLoader(DynamicConfiguration.class).getDefaultExtension());
+ dic.getRouterChain().setResidentRouters(Arrays.asList(routerFactory.getRouter(url)));
}
static class MockClusterInvoker<T> extends AbstractClusterInvoker<T> {
diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/AbstractClusterInvokerTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/AbstractClusterInvokerTest.java
index 2039b0a..b16062a 100644
--- a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/AbstractClusterInvokerTest.java
+++ b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/AbstractClusterInvokerTest.java
@@ -20,6 +20,7 @@ import org.apache.dubbo.common.Constants;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.extension.ExtensionLoader;
import org.apache.dubbo.common.utils.NetUtils;
+import org.apache.dubbo.configcenter.DynamicConfiguration;
import org.apache.dubbo.rpc.Invocation;
import org.apache.dubbo.rpc.Invoker;
import org.apache.dubbo.rpc.Result;
@@ -33,7 +34,6 @@ import org.apache.dubbo.rpc.cluster.filter.DemoService;
import org.apache.dubbo.rpc.cluster.loadbalance.LeastActiveLoadBalance;
import org.apache.dubbo.rpc.cluster.loadbalance.RandomLoadBalance;
import org.apache.dubbo.rpc.cluster.loadbalance.RoundRobinLoadBalance;
-
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
@@ -42,6 +42,7 @@ import org.junit.Test;
import org.mockito.Mockito;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -59,9 +60,9 @@ public class AbstractClusterInvokerTest {
List<Invoker<IHelloService>> selectedInvokers = new ArrayList<Invoker<IHelloService>>();
AbstractClusterInvoker<IHelloService> cluster;
AbstractClusterInvoker<IHelloService> cluster_nocheck;
- Directory<IHelloService> dic;
+ StaticDirectory<IHelloService> dic;
RpcInvocation invocation = new RpcInvocation();
- URL url = URL.valueOf("registry://localhost:9090");
+ URL url = URL.valueOf("registry://localhost:9090/org.apache.dubbo.rpc.cluster.support.AbstractClusterInvokerTest.IHelloService");
Invoker<IHelloService> invoker1;
Invoker<IHelloService> invoker2;
@@ -454,6 +455,12 @@ public class AbstractClusterInvokerTest {
invokers.add(invoker5);
}
+ private void initDic() {
+ Map<String, List<Invoker<IHelloService>>> map = new HashMap<>();
+ map.put("sayHello", invokers);
+ dic.buildRouterChain(map, ExtensionLoader.getExtensionLoader(DynamicConfiguration.class).getDefaultExtension());
+ }
+
@Test()
public void testTimeoutExceptionCode() {
List<Invoker<DemoService>> invokers = new ArrayList<Invoker<DemoService>>();
@@ -513,6 +520,8 @@ public class AbstractClusterInvokerTest {
initlistsize5();
invokers.add(mockedInvoker1);
+ initDic();
+
RpcInvocation mockedInvocation = new RpcInvocation();
mockedInvocation.setMethodName("sayHello");
mockedInvocation.setAttachment(Constants.INVOCATION_NEED_MOCK, "true");
diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockClusterInvokerTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockClusterInvokerTest.java
index 4893dc7..6a2eaae 100644
--- a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockClusterInvokerTest.java
+++ b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockClusterInvokerTest.java
@@ -19,6 +19,7 @@ package org.apache.dubbo.rpc.cluster.support.wrapper;
import org.apache.dubbo.common.Constants;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.extension.ExtensionLoader;
+import org.apache.dubbo.configcenter.DynamicConfiguration;
import org.apache.dubbo.rpc.Invocation;
import org.apache.dubbo.rpc.Invoker;
import org.apache.dubbo.rpc.Protocol;
@@ -26,19 +27,20 @@ import org.apache.dubbo.rpc.ProxyFactory;
import org.apache.dubbo.rpc.Result;
import org.apache.dubbo.rpc.RpcException;
import org.apache.dubbo.rpc.RpcInvocation;
-import org.apache.dubbo.rpc.cluster.Directory;
import org.apache.dubbo.rpc.cluster.LoadBalance;
import org.apache.dubbo.rpc.cluster.directory.StaticDirectory;
import org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker;
import org.apache.dubbo.rpc.support.MockProtocol;
-
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
+import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
public class MockClusterInvokerTest {
@@ -85,13 +87,12 @@ public class MockClusterInvokerTest {
URL url = URL.valueOf("remote://1.2.3.4/" + IHelloService.class.getName())
.addParameter(Constants.MOCK_KEY, "fail:return null")
.addParameter("invoke_return_error", "true");
- Invoker<IHelloService> cluster = getClusterInvoker(url);
URL mockUrl = URL.valueOf("mock://localhost/" + IHelloService.class.getName()
+ "?getSomething.mock=return aa").addParameters(url.getParameters());
Protocol protocol = new MockProtocol();
Invoker<IHelloService> mInvoker1 = protocol.refer(IHelloService.class, mockUrl);
- invokers.add(mInvoker1);
+ Invoker<IHelloService> cluster = getClusterInvokerMock(url, mInvoker1);
//Configured with mock
RpcInvocation invocation = new RpcInvocation();
@@ -120,14 +121,14 @@ public class MockClusterInvokerTest {
public void testMockInvokerInvoke_forcemock() {
URL url = URL.valueOf("remote://1.2.3.4/" + IHelloService.class.getName());
url = url.addParameter(Constants.MOCK_KEY, "force:return null");
- Invoker<IHelloService> cluster = getClusterInvoker(url);
+
URL mockUrl = URL.valueOf("mock://localhost/" + IHelloService.class.getName()
+ "?getSomething.mock=return aa&getSomething3xx.mock=return xx")
.addParameters(url.getParameters());
Protocol protocol = new MockProtocol();
Invoker<IHelloService> mInvoker1 = protocol.refer(IHelloService.class, mockUrl);
- invokers.add(mInvoker1);
+ Invoker<IHelloService> cluster = getClusterInvokerMock(url, mInvoker1);
//Configured with mock
RpcInvocation invocation = new RpcInvocation();
@@ -642,16 +643,24 @@ public class MockClusterInvokerTest {
}
}
- @SuppressWarnings({"unchecked", "rawtypes"})
- private Invoker<IHelloService> getClusterInvoker(URL url) {
+ private Invoker<IHelloService> getClusterInvokerMock(URL url, Invoker<IHelloService> mockInvoker) {
// As `javassist` have a strict restriction of argument types, request will fail if Invocation do not contains complete parameter type information
final URL durl = url.addParameter("proxy", "jdk");
invokers.clear();
ProxyFactory proxy = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getExtension("jdk");
Invoker<IHelloService> invoker1 = proxy.getInvoker(new HelloService(), IHelloService.class, durl);
invokers.add(invoker1);
+ if (mockInvoker != null) {
+ invokers.add(mockInvoker);
+ }
- Directory<IHelloService> dic = new StaticDirectory<IHelloService>(durl, invokers, null);
+ StaticDirectory<IHelloService> dic = new StaticDirectory<IHelloService>(durl, invokers, null);
+ Map<String, List<Invoker<IHelloService>>> methodInvokers = new HashMap<>();
+ Method[] methods = IHelloService.class.getMethods();
+ Arrays.stream(methods).forEach(m -> {
+ methodInvokers.put(m.getName(), invokers);
+ });
+ dic.buildRouterChain(methodInvokers, ExtensionLoader.getExtensionLoader(DynamicConfiguration.class).getDefaultExtension());
AbstractClusterInvoker<IHelloService> cluster = new AbstractClusterInvoker(dic) {
@Override
protected Result doInvoke(Invocation invocation, List invokers, LoadBalance loadbalance)
@@ -666,6 +675,11 @@ public class MockClusterInvokerTest {
return new MockClusterInvoker<IHelloService>(dic, cluster);
}
+ @SuppressWarnings({"unchecked", "rawtypes"})
+ private Invoker<IHelloService> getClusterInvoker(URL url) {
+ return getClusterInvokerMock(url, null);
+ }
+
public static interface IHelloService {
String getSomething();
diff --git a/dubbo-demo/dubbo-demo-consumer/src/main/resources/META-INF/spring/dubbo-demo-consumer.xml b/dubbo-demo/dubbo-demo-consumer/src/main/resources/META-INF/spring/dubbo-demo-consumer.xml
index 14b2718..3475d19 100644
--- a/dubbo-demo/dubbo-demo-consumer/src/main/resources/META-INF/spring/dubbo-demo-consumer.xml
+++ b/dubbo-demo/dubbo-demo-consumer/src/main/resources/META-INF/spring/dubbo-demo-consumer.xml
@@ -33,6 +33,6 @@
<!-- generate proxy for the remote service, then demoService can be used in the same way as the
local regular interface -->
<dubbo:reference id="demoService" check="false"
- interface="org.apache.dubbo.demo.DemoService" version="1.0.4" group="dd-test"/>
+ interface="org.apache.dubbo.demo.DemoService" version="1.0.4" group="dd-test,dd-test1"/>
</beans>
diff --git a/dubbo-demo/dubbo-demo-provider/src/main/resources/META-INF/spring/dubbo-demo-provider.xml b/dubbo-demo/dubbo-demo-provider/src/main/resources/META-INF/spring/dubbo-demo-provider.xml
index 73878b0..02bd06e 100644
--- a/dubbo-demo/dubbo-demo-provider/src/main/resources/META-INF/spring/dubbo-demo-provider.xml
+++ b/dubbo-demo/dubbo-demo-provider/src/main/resources/META-INF/spring/dubbo-demo-provider.xml
@@ -39,5 +39,7 @@
<!-- declare the service interface to be exported -->
<dubbo:service interface="org.apache.dubbo.demo.DemoService" ref="demoService" version="1.0.4" group="dd-test"/>
+ <!-- declare the service interface to be exported -->
+ <dubbo:service interface="org.apache.dubbo.demo.DemoService" ref="demoService" version="1.0.4" group="dd-test1"/>
</beans>