Java tutorial
/** * 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.Constants; 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 com.alibaba.dubbo.rpc.gen.dubbo.Demo; import com.alibaba.dubbo.rpc.protocol.thrift.ext.MultiServiceProcessor; import org.apache.thrift.protocol.TBinaryProtocol; import org.apache.thrift.server.TThreadPoolServer; import org.apache.thrift.transport.TServerSocket; import org.apache.thrift.transport.TServerTransport; import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import java.lang.reflect.Field; import java.util.Map; /** * @author <a href="mailto:gang.lvg@alibaba-inc.com">kimi</a> */ public class DubboServiceMethodNotFoundTest extends AbstractTest { private URL url; protected void init() throws Exception { TServerTransport serverTransport = new TServerSocket(PORT); DubboDemoImpl impl = new DubboDemoImpl(); $__DemoStub.Processor processor = new $__DemoStub.Processor(impl); // for test Field field = processor.getClass().getSuperclass().getDeclaredField("processMap"); field.setAccessible(true); Object obj = field.get(processor); if (obj instanceof Map) { ((Map) obj).remove("echoString"); } // ~ TBinaryProtocol.Factory bFactory = new TBinaryProtocol.Factory(); MultiServiceProcessor wrapper = new MultiServiceProcessor(); wrapper.addProcessor(Demo.class, processor); server = new TThreadPoolServer(new TThreadPoolServer.Args(serverTransport).inputProtocolFactory(bFactory) .outputProtocolFactory(bFactory).inputTransportFactory(getTransportFactory()) .outputTransportFactory(getTransportFactory()).processor(wrapper)); Thread startTread = new Thread() { @Override public void run() { server.serve(); } }; startTread.start(); while (!server.isServing()) { Thread.sleep(100); } } @Before public void setUp() throws Exception { init(); protocol = new ThriftProtocol(); url = URL.valueOf(ThriftProtocol.NAME + "://127.0.0.1:" + PORT + "/" + Demo.class.getName()); } @After public void tearDown() throws Exception { destroy(); if (protocol != null) { protocol.destroy(); protocol = null; } if (invoker != null) { invoker.destroy(); invoker = null; } } @Test public void testServiceMethodNotFound() throws Exception { // FIXME /*url = url.addParameter( "echoString." + Constants.TIMEOUT_KEY, Integer.MAX_VALUE ); invoker = protocol.refer( Demo.class, url ); org.junit.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 } ); invocation.setAttachment(Constants.INTERFACE_KEY, DemoImpl.class.getName()); Result result = invoker.invoke( invocation ); Assert.assertNull( result.getResult() ); Assert.assertTrue( result.getException() instanceof RpcException );*/ } }