在Netty的Junit测试中生成SocketTimeoutException
问题在Netty的Junit测试中生成SocketTimeoutException,netty,socket-timeout-exception,Netty,Socket Timeout Exception,问题 ServerBootstrap bootstrap = new ServerBootstrap() .group(NativeTransportUtil.newEventLoopGroup(), NativeTransportUtil.newEventLoopGroup()) .channel(NativeTransportUtil.serverSocketChannelClass()) .opt
ServerBootstrap bootstrap = new ServerBootstrap()
.group(NativeTransportUtil.newEventLoopGroup(), NativeTransportUtil.newEventLoopGroup())
.channel(NativeTransportUtil.serverSocketChannelClass())
.option(ChannelOption.SO_BACKLOG, 0)
.childOption(ChannelOption.SO_KEEPALIVE, false)
.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 0)
.childOption(ChannelOption.CONNECT_TIMEOUT_MILLIS, 0)
.option(ChannelOption.SO_BACKLOG, 0)
.childOption(ChannelOption.SO_BACKLOG, 0)
.option(ChannelOption.SO_TIMEOUT, 0)
.childOption(ChannelOption.SO_TIMEOUT, 0)
.childHandler(new NewConnectionInitializer());
bootstrap.bind(port).syncUninterruptibly();
client.sendSync(request);
我需要测试一个场景,在这个场景中,我的Netty服务器将抛出SocketTimeoutException,导致客户端重试这些失败并最终失败
我尝试过的事情
我尝试利用选项和子选项的SO_TIMEOUT=0,同时保持SO_KEEPALIVE=false和SO_BACKLOG=0。此外,我还将连接超时减少到0。但一切都没有奏效。客户端仍然能够连接到服务器**
下面的示例代码
ServerBootstrap bootstrap = new ServerBootstrap()
.group(NativeTransportUtil.newEventLoopGroup(), NativeTransportUtil.newEventLoopGroup())
.channel(NativeTransportUtil.serverSocketChannelClass())
.option(ChannelOption.SO_BACKLOG, 0)
.childOption(ChannelOption.SO_KEEPALIVE, false)
.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 0)
.childOption(ChannelOption.CONNECT_TIMEOUT_MILLIS, 0)
.option(ChannelOption.SO_BACKLOG, 0)
.childOption(ChannelOption.SO_BACKLOG, 0)
.option(ChannelOption.SO_TIMEOUT, 0)
.childOption(ChannelOption.SO_TIMEOUT, 0)
.childHandler(new NewConnectionInitializer());
bootstrap.bind(port).syncUninterruptibly();
client.sendSync(request);
结果
ServerBootstrap bootstrap = new ServerBootstrap()
.group(NativeTransportUtil.newEventLoopGroup(), NativeTransportUtil.newEventLoopGroup())
.channel(NativeTransportUtil.serverSocketChannelClass())
.option(ChannelOption.SO_BACKLOG, 0)
.childOption(ChannelOption.SO_KEEPALIVE, false)
.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 0)
.childOption(ChannelOption.CONNECT_TIMEOUT_MILLIS, 0)
.option(ChannelOption.SO_BACKLOG, 0)
.childOption(ChannelOption.SO_BACKLOG, 0)
.option(ChannelOption.SO_TIMEOUT, 0)
.childOption(ChannelOption.SO_TIMEOUT, 0)
.childHandler(new NewConnectionInitializer());
bootstrap.bind(port).syncUninterruptibly();
client.sendSync(request);
实际结果:上述代码导致从客户端到服务器的成功连接
ExpectedResult:我希望服务器抛出SocketTimeoutException