| package com.ofpay.dubbo.rpc.protocol.jsonrpc; |
| |
| import com.alibaba.dubbo.common.URL; |
| import com.alibaba.dubbo.common.extension.ExtensionLoader; |
| import com.alibaba.dubbo.rpc.Exporter; |
| import com.alibaba.dubbo.rpc.Invoker; |
| import com.alibaba.dubbo.rpc.Protocol; |
| import com.alibaba.dubbo.rpc.ProxyFactory; |
| import com.ofpay.dubbo.rpc.protocol.jsonrpc.JsonRpcServiceImpl.MyException; |
| import org.junit.Assert; |
| import org.junit.Test; |
| |
| /** |
| * JsonRpcProtocolTest |
| * Created by wuwen on 15/4/1. |
| */ |
| public class JsonRpcProtocolTest { |
| |
| @Test |
| public void testJsonrpcProtocol() { |
| JsonRpcServiceImpl server = new JsonRpcServiceImpl(); |
| Assert.assertFalse(server.isCalled()); |
| ProxyFactory proxyFactory = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension(); |
| Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension(); |
| URL url = URL.valueOf("jsonrpc://127.0.0.1:5342/" + JsonRpcService.class.getName() + "?version=1.0.0"); |
| Exporter<JsonRpcService> exporter = protocol.export(proxyFactory.getInvoker(server, JsonRpcService.class, url)); |
| Invoker<JsonRpcService> invoker = protocol.refer(JsonRpcService.class, url); |
| JsonRpcService client = proxyFactory.getProxy(invoker); |
| String result = client.sayHello("haha"); |
| Assert.assertTrue(server.isCalled()); |
| Assert.assertEquals("Hello, haha", result); |
| invoker.destroy(); |
| exporter.unexport(); |
| } |
| |
| /** |
| *TODO 暂不支持自定义异常 |
| @Test |
| public void testCustomException() { |
| JsonRpcServiceImpl server = new JsonRpcServiceImpl(); |
| ProxyFactory proxyFactory = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension(); |
| Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension(); |
| URL url = URL.valueOf("jsonrpc://127.0.0.1:5342/" + JsonRpcService.class.getName() + "?version=1.0.0"); |
| Exporter<JsonRpcService> exporter = protocol.export(proxyFactory.getInvoker(server, JsonRpcService.class, url)); |
| Invoker<JsonRpcService> invoker = protocol.refer(JsonRpcService.class, url); |
| JsonRpcService client = proxyFactory.getProxy(invoker); |
| try { |
| client.customException(); |
| Assert.fail(); |
| } catch (MyException expected) { |
| } |
| invoker.destroy(); |
| exporter.unexport(); |
| }***/ |
| |
| } |