From b79a7a135478dcdb00f7eabff97578a293b9fb37 Mon Sep 17 00:00:00 2001 From: "tony.chenl" Date: Mon, 7 Nov 2011 09:37:43 +0000 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0hessian=E5=8D=8F=E8=AE=AE?= =?UTF-8?q?=E7=9A=84=E5=BC=82=E5=B8=B8ut?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://code.alibabatech.com/svn/dubbo/trunk@206 1a56cb94-b969-4eaa-88fa-be21384802f2 --- .../protocol/hessian/HessianProtocolTest.java | 48 +++++++++++++++++-- .../rpc/protocol/hessian/HessianService.java | 5 ++ .../protocol/hessian/HessianServiceImpl.java | 20 ++++++++ 3 files changed, 69 insertions(+), 4 deletions(-) diff --git a/dubbo-rpc-hessian/src/test/java/com/alibaba/dubbo/rpc/protocol/hessian/HessianProtocolTest.java b/dubbo-rpc-hessian/src/test/java/com/alibaba/dubbo/rpc/protocol/hessian/HessianProtocolTest.java index 4e299447b9..6828b473e3 100644 --- a/dubbo-rpc-hessian/src/test/java/com/alibaba/dubbo/rpc/protocol/hessian/HessianProtocolTest.java +++ b/dubbo-rpc-hessian/src/test/java/com/alibaba/dubbo/rpc/protocol/hessian/HessianProtocolTest.java @@ -15,10 +15,10 @@ */ package com.alibaba.dubbo.rpc.protocol.hessian; -import org.junit.Test; - +import static org.junit.Assert.fail; import junit.framework.Assert; -import junit.framework.TestCase; + +import org.junit.Test; import com.alibaba.dubbo.common.ExtensionLoader; import com.alibaba.dubbo.common.URL; @@ -26,13 +26,15 @@ 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.alibaba.dubbo.rpc.RpcException; +import com.alibaba.dubbo.rpc.protocol.hessian.HessianServiceImpl.MyException; /** * HessianProtocolTest * * @author william.liangf */ -public class HessianProtocolTest extends TestCase { +public class HessianProtocolTest { @Test public void testHessianProtocol() { @@ -67,5 +69,43 @@ public class HessianProtocolTest extends TestCase { invoker.destroy(); exporter.unexport(); } + + @Test + public void testTimeOut() { + HessianServiceImpl server = new HessianServiceImpl(); + ProxyFactory proxyFactory = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension(); + Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension(); + URL url = URL.valueOf("hessian://127.0.0.1:5342/" + HessianService.class.getName() + "?version=1.0.0&timeout=10"); + Exporter exporter = protocol.export(proxyFactory.getInvoker(server, HessianService.class, url)); + Invoker invoker = protocol.refer(HessianService.class, url); + HessianService client = proxyFactory.getProxy(invoker); + try { + client.timeOut(100000); + fail(); + } catch (RpcException expected) { + }finally{ + invoker.destroy(); + exporter.unexport(); + } + + } + + @Test + public void testCustomException() { + HessianServiceImpl server = new HessianServiceImpl(); + ProxyFactory proxyFactory = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension(); + Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension(); + URL url = URL.valueOf("hessian://127.0.0.1:5342/" + HessianService.class.getName() + "?version=1.0.0"); + Exporter exporter = protocol.export(proxyFactory.getInvoker(server, HessianService.class, url)); + Invoker invoker = protocol.refer(HessianService.class, url); + HessianService client = proxyFactory.getProxy(invoker); + try { + client.customException(); + fail(); + } catch (MyException expected) { + } + invoker.destroy(); + exporter.unexport(); + } } diff --git a/dubbo-rpc-hessian/src/test/java/com/alibaba/dubbo/rpc/protocol/hessian/HessianService.java b/dubbo-rpc-hessian/src/test/java/com/alibaba/dubbo/rpc/protocol/hessian/HessianService.java index d95e937d4d..c339b80a74 100644 --- a/dubbo-rpc-hessian/src/test/java/com/alibaba/dubbo/rpc/protocol/hessian/HessianService.java +++ b/dubbo-rpc-hessian/src/test/java/com/alibaba/dubbo/rpc/protocol/hessian/HessianService.java @@ -15,6 +15,7 @@ */ package com.alibaba.dubbo.rpc.protocol.hessian; + /** * HessianService * @@ -23,5 +24,9 @@ package com.alibaba.dubbo.rpc.protocol.hessian; public interface HessianService { String sayHello(String name); + + void timeOut(int millis); + + String customException(); } diff --git a/dubbo-rpc-hessian/src/test/java/com/alibaba/dubbo/rpc/protocol/hessian/HessianServiceImpl.java b/dubbo-rpc-hessian/src/test/java/com/alibaba/dubbo/rpc/protocol/hessian/HessianServiceImpl.java index b9df57ee9c..39768d5218 100644 --- a/dubbo-rpc-hessian/src/test/java/com/alibaba/dubbo/rpc/protocol/hessian/HessianServiceImpl.java +++ b/dubbo-rpc-hessian/src/test/java/com/alibaba/dubbo/rpc/protocol/hessian/HessianServiceImpl.java @@ -32,5 +32,25 @@ public class HessianServiceImpl implements HessianService { public boolean isCalled() { return called; } + + public void timeOut(int millis) { + try { + Thread.sleep(millis); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + public String customException() { + throw new MyException("custom exception"); + } + static class MyException extends RuntimeException{ + + private static final long serialVersionUID = -3051041116483629056L; + + public MyException(String message) { + super(message); + } + } }