/** * File Created at 2011-12-09 * $Id$ * * Copyright 2008 Alibaba.com Croporation Limited. * All rights reserved. * * This software is the confidential and proprietary information of * Alibaba Company. ("Confidential Information"). You shall not * disclose such Confidential Information and shall use it only in * accordance with the terms of the license agreement you entered into * with Alibaba.com. */ package com.alibaba.dubbo.rpc.protocol.thrift; import com.alibaba.dubbo.common.URL; import com.alibaba.dubbo.rpc.Result; import com.alibaba.dubbo.rpc.RpcException; import com.alibaba.dubbo.rpc.RpcInvocation; import com.alibaba.dubbo.rpc.gen.dubbo.$__DemoStub; import org.junit.Assert; import org.junit.Test; /** * @author <a href="mailto:gang.lvg@alibaba-inc.com">kimi</a> */ public class ServerExceptionTest extends AbstractTest { @Override protected $__DemoStub.Iface getServiceImpl() { return new $__DemoStub.Iface () { public boolean echoBool( boolean arg ) { return false; } public byte echoByte( byte arg ) { return 0; } public short echoI16( short arg ) { return 0; } public int echoI32( int arg ) { return 0; } public long echoI64( long arg ) { return 0; } public double echoDouble( double arg ) { return 0; } public String echoString( String arg ) { // 在 server 端,thrift 无法处理 idl 中没有声明的异常 throw new RuntimeException( "just for test" ); } }; } @Test( expected = RpcException.class ) public void testServerException() throws Exception { Assert.assertNotNull( invoker ); RpcInvocation invocation = new RpcInvocation(); invocation.setMethodName( "echoString" ); invocation.setParameterTypes( new Class<?>[]{ String.class } ); String arg = "Hello, World!"; invocation.setArguments( new Object[] { arg } ); Result result = invoker.invoke( invocation ); System.out.println( result ); } @Override protected URL getUrl() { URL url = super.getUrl(); // url = url.addParameter( Constants.TIMEOUT_KEY, Integer.MAX_VALUE ); return url; } }