在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