List of usage examples for org.apache.thrift.protocol TBinaryProtocol readI64
@Override
public long readI64() throws TException
From source file:com.alibaba.dubbo.rpc.protocol.thrift.ThriftCodecTest.java
License:Open Source License
@Test public void testEncodeRequest() throws Exception { Request request = createRequest(); ByteArrayOutputStream output = new ByteArrayOutputStream(1024); codec.encode(channel, output, request); byte[] bytes = output.toByteArray(); ByteArrayInputStream bis = new ByteArrayInputStream(bytes); TTransport transport = new TIOStreamTransport(bis); TBinaryProtocol protocol = new TBinaryProtocol(transport); // frame//from w ww . java 2s. c om byte[] length = new byte[4]; transport.read(length, 0, 4); if (bis.markSupported()) { bis.mark(0); } // magic Assert.assertEquals(ThriftCodec.MAGIC, protocol.readI16()); // message length int messageLength = protocol.readI32(); Assert.assertEquals(messageLength + 4, bytes.length); // header length short headerLength = protocol.readI16(); // version Assert.assertEquals(ThriftCodec.VERSION, protocol.readByte()); // service name Assert.assertEquals(Demo.Iface.class.getName(), protocol.readString()); // dubbo request id Assert.assertEquals(request.getId(), protocol.readI64()); // test message header length if (bis.markSupported()) { bis.reset(); bis.skip(headerLength); } TMessage message = protocol.readMessageBegin(); Demo.echoString_args args = new Demo.echoString_args(); args.read(protocol); protocol.readMessageEnd(); Assert.assertEquals("echoString", message.name); Assert.assertEquals(TMessageType.CALL, message.type); Assert.assertEquals("Hello, World!", args.getArg()); }
From source file:com.alibaba.dubbo.rpc.protocol.thrift.ThriftCodecTest.java
License:Open Source License
@Test public void testEncodeReplyResponse() throws Exception { URL url = URL.valueOf(ThriftProtocol.NAME + "://127.0.0.1:40880/" + Demo.Iface.class.getName()); Channel channel = new MockedChannel(url); Request request = createRequest(); RpcResult rpcResult = new RpcResult(); rpcResult.setResult("Hello, World!"); Response response = new Response(); response.setResult(rpcResult);// w ww .ja v a 2 s . co m response.setId(request.getId()); RandomAccessByteArrayOutputStream bos = new RandomAccessByteArrayOutputStream(1024); ThriftCodec.RequestData rd = ThriftCodec.RequestData.create(ThriftCodec.getSeqId(), Demo.Iface.class.getName(), "echoString"); ThriftCodec.cachedRequest.putIfAbsent(request.getId(), rd); codec.encode(channel, bos, response); byte[] buf = new byte[bos.size() - 4]; System.arraycopy(bos.toByteArray(), 4, buf, 0, bos.size() - 4); ByteArrayInputStream bis = new ByteArrayInputStream(buf); if (bis.markSupported()) { bis.mark(0); } TIOStreamTransport transport = new TIOStreamTransport(bis); TBinaryProtocol protocol = new TBinaryProtocol(transport); Assert.assertEquals(ThriftCodec.MAGIC, protocol.readI16()); Assert.assertEquals(protocol.readI32() + 4, bos.toByteArray().length); int headerLength = protocol.readI16(); Assert.assertEquals(ThriftCodec.VERSION, protocol.readByte()); Assert.assertEquals(Demo.Iface.class.getName(), protocol.readString()); Assert.assertEquals(request.getId(), protocol.readI64()); if (bis.markSupported()) { bis.reset(); bis.skip(headerLength); } TMessage message = protocol.readMessageBegin(); Assert.assertEquals("echoString", message.name); Assert.assertEquals(TMessageType.REPLY, message.type); Assert.assertEquals(ThriftCodec.getSeqId(), message.seqid); Demo.echoString_result result = new Demo.echoString_result(); result.read(protocol); protocol.readMessageEnd(); Assert.assertEquals(rpcResult.getResult(), result.getSuccess()); }
From source file:com.alibaba.dubbo.rpc.protocol.thrift.ThriftCodecTest.java
License:Open Source License
@Test public void testEncodeExceptionResponse() throws Exception { URL url = URL.valueOf(ThriftProtocol.NAME + "://127.0.0.1:40880/" + Demo.Iface.class.getName()); Channel channel = new MockedChannel(url); Request request = createRequest(); RpcResult rpcResult = new RpcResult(); String exceptionMessage = "failed"; rpcResult.setException(new RuntimeException(exceptionMessage)); Response response = new Response(); response.setResult(rpcResult);// ww w .j a v a2s . c o m response.setId(request.getId()); RandomAccessByteArrayOutputStream bos = new RandomAccessByteArrayOutputStream(1024); ThriftCodec.RequestData rd = ThriftCodec.RequestData.create(ThriftCodec.getSeqId(), Demo.Iface.class.getName(), "echoString"); ThriftCodec.cachedRequest.put(request.getId(), rd); codec.encode(channel, bos, response); byte[] buf = new byte[bos.size() - 4]; System.arraycopy(bos.toByteArray(), 4, buf, 0, bos.size() - 4); ByteArrayInputStream bis = new ByteArrayInputStream(buf); if (bis.markSupported()) { bis.mark(0); } TIOStreamTransport transport = new TIOStreamTransport(bis); TBinaryProtocol protocol = new TBinaryProtocol(transport); Assert.assertEquals(ThriftCodec.MAGIC, protocol.readI16()); Assert.assertEquals(protocol.readI32() + 4, bos.toByteArray().length); int headerLength = protocol.readI16(); Assert.assertEquals(ThriftCodec.VERSION, protocol.readByte()); Assert.assertEquals(Demo.Iface.class.getName(), protocol.readString()); Assert.assertEquals(request.getId(), protocol.readI64()); if (bis.markSupported()) { bis.reset(); bis.skip(headerLength); } TMessage message = protocol.readMessageBegin(); Assert.assertEquals("echoString", message.name); Assert.assertEquals(TMessageType.EXCEPTION, message.type); Assert.assertEquals(ThriftCodec.getSeqId(), message.seqid); TApplicationException exception = TApplicationException.read(protocol); protocol.readMessageEnd(); Assert.assertEquals(exceptionMessage, exception.getMessage()); }
From source file:org.apache.dubbo.rpc.protocol.thrift.ThriftCodecTest.java
License:Apache License
@Test public void testEncodeRequest() throws Exception { Request request = createRequest(); ChannelBuffer output = ChannelBuffers.dynamicBuffer(1024); codec.encode(channel, output, request); byte[] bytes = new byte[output.readableBytes()]; output.readBytes(bytes);/*ww w . j a v a2s .co m*/ ByteArrayInputStream bis = new ByteArrayInputStream(bytes); TTransport transport = new TIOStreamTransport(bis); TBinaryProtocol protocol = new TBinaryProtocol(transport); // frame byte[] length = new byte[4]; transport.read(length, 0, 4); if (bis.markSupported()) { bis.mark(0); } // magic Assert.assertEquals(ThriftCodec.MAGIC, protocol.readI16()); // message length int messageLength = protocol.readI32(); Assert.assertEquals(messageLength + 4, bytes.length); // header length short headerLength = protocol.readI16(); // version Assert.assertEquals(ThriftCodec.VERSION, protocol.readByte()); // service name Assert.assertEquals(Demo.Iface.class.getName(), protocol.readString()); // dubbo request id Assert.assertEquals(request.getId(), protocol.readI64()); // test message header length if (bis.markSupported()) { bis.reset(); bis.skip(headerLength); } TMessage message = protocol.readMessageBegin(); Demo.echoString_args args = new Demo.echoString_args(); args.read(protocol); protocol.readMessageEnd(); Assert.assertEquals("echoString", message.name); Assert.assertEquals(TMessageType.CALL, message.type); Assert.assertEquals("Hello, World!", args.getArg()); }
From source file:org.apache.dubbo.rpc.protocol.thrift.ThriftCodecTest.java
License:Apache License
@Test public void testEncodeReplyResponse() throws Exception { URL url = URL.valueOf(ThriftProtocol.NAME + "://127.0.0.1:40880/" + Demo.Iface.class.getName()); Channel channel = new MockedChannel(url); Request request = createRequest(); RpcResult rpcResult = new RpcResult(); rpcResult.setResult("Hello, World!"); Response response = new Response(); response.setResult(rpcResult);/* ww w . j ava 2 s. co m*/ response.setId(request.getId()); ChannelBuffer bos = ChannelBuffers.dynamicBuffer(1024); ThriftCodec.RequestData rd = ThriftCodec.RequestData.create(ThriftCodec.getSeqId(), Demo.Iface.class.getName(), "echoString"); ThriftCodec.cachedRequest.putIfAbsent(request.getId(), rd); codec.encode(channel, bos, response); byte[] buf = new byte[bos.writerIndex() - 4]; System.arraycopy(bos.array(), 4, buf, 0, bos.writerIndex() - 4); ByteArrayInputStream bis = new ByteArrayInputStream(buf); if (bis.markSupported()) { bis.mark(0); } TIOStreamTransport transport = new TIOStreamTransport(bis); TBinaryProtocol protocol = new TBinaryProtocol(transport); Assert.assertEquals(ThriftCodec.MAGIC, protocol.readI16()); Assert.assertEquals(protocol.readI32() + 4, bos.writerIndex()); int headerLength = protocol.readI16(); Assert.assertEquals(ThriftCodec.VERSION, protocol.readByte()); Assert.assertEquals(Demo.Iface.class.getName(), protocol.readString()); Assert.assertEquals(request.getId(), protocol.readI64()); if (bis.markSupported()) { bis.reset(); bis.skip(headerLength); } TMessage message = protocol.readMessageBegin(); Assert.assertEquals("echoString", message.name); Assert.assertEquals(TMessageType.REPLY, message.type); Assert.assertEquals(ThriftCodec.getSeqId(), message.seqid); Demo.echoString_result result = new Demo.echoString_result(); result.read(protocol); protocol.readMessageEnd(); Assert.assertEquals(rpcResult.getValue(), result.getSuccess()); }
From source file:org.apache.dubbo.rpc.protocol.thrift.ThriftCodecTest.java
License:Apache License
@Test public void testEncodeExceptionResponse() throws Exception { URL url = URL.valueOf(ThriftProtocol.NAME + "://127.0.0.1:40880/" + Demo.Iface.class.getName()); Channel channel = new MockedChannel(url); Request request = createRequest(); RpcResult rpcResult = new RpcResult(); String exceptionMessage = "failed"; rpcResult.setException(new RuntimeException(exceptionMessage)); Response response = new Response(); response.setResult(rpcResult);/*from w w w. j a va2s. c om*/ response.setId(request.getId()); ChannelBuffer bos = ChannelBuffers.dynamicBuffer(1024); ThriftCodec.RequestData rd = ThriftCodec.RequestData.create(ThriftCodec.getSeqId(), Demo.Iface.class.getName(), "echoString"); ThriftCodec.cachedRequest.put(request.getId(), rd); codec.encode(channel, bos, response); byte[] buf = new byte[bos.writerIndex() - 4]; System.arraycopy(bos.array(), 4, buf, 0, bos.writerIndex() - 4); ByteArrayInputStream bis = new ByteArrayInputStream(buf); if (bis.markSupported()) { bis.mark(0); } TIOStreamTransport transport = new TIOStreamTransport(bis); TBinaryProtocol protocol = new TBinaryProtocol(transport); Assert.assertEquals(ThriftCodec.MAGIC, protocol.readI16()); Assert.assertEquals(protocol.readI32() + 4, bos.writerIndex()); int headerLength = protocol.readI16(); Assert.assertEquals(ThriftCodec.VERSION, protocol.readByte()); Assert.assertEquals(Demo.Iface.class.getName(), protocol.readString()); Assert.assertEquals(request.getId(), protocol.readI64()); if (bis.markSupported()) { bis.reset(); bis.skip(headerLength); } TMessage message = protocol.readMessageBegin(); Assert.assertEquals("echoString", message.name); Assert.assertEquals(TMessageType.EXCEPTION, message.type); Assert.assertEquals(ThriftCodec.getSeqId(), message.seqid); TApplicationException exception = TApplicationException.read(protocol); protocol.readMessageEnd(); Assert.assertEquals(exceptionMessage, exception.getMessage()); }