如果自己要测试 pipeline
,需要自己写服务端和客户端。
非常麻烦,但是,EmbeddedChannel
可以简化上面的代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| package com.redisc;
import io.netty.bootstrap.ServerBootstrap; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufAllocator; import io.netty.channel.*; import io.netty.channel.embedded.EmbeddedChannel; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.nio.NioServerSocketChannel; import io.netty.channel.socket.nio.NioSocketChannel; import lombok.extern.slf4j.Slf4j;
import java.io.IOException;
@Slf4j public class Run {
public static void main(String[] args) throws IOException { ChannelInboundHandlerAdapter ch1 = new ChannelInboundHandlerAdapter() { @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { log.debug("1"); super.channelRead(ctx, msg); } };
ChannelInboundHandlerAdapter ch2 = new ChannelInboundHandlerAdapter() { @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { log.debug("2"); super.channelRead(ctx, msg); } };
EmbeddedChannel embeddedChannel = new EmbeddedChannel(ch1, ch2); embeddedChannel.writeInbound(ByteBufAllocator.DEFAULT.buffer().writeBytes("hello".getBytes())); embeddedChannel.writeOutbound(ByteBufAllocator.DEFAULT.buffer().writeBytes("hello".getBytes())); }
}
|