Задача
Мне нужно протестировать сценарий, в котором мой Netty Server будет выдавать исключения SocketTimeoutException, в результате чего клиент будет повторять попытки при этих сбоях и, в конечном итоге, завершаться сбоем. Я хочу добиться этого с помощью интеграционного тестирования в Junit Java
То, что я пробовал
Я попытался использовать SO_TIMEOUT = 0 как для опции, так и для дочерней опции, и в то же время сохранил SO_KEEPALIVE = false и SO_BACKLOG = 0. Также я уменьшил CONNECT_TIMEOUT_MILLIS до 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);
Результаты
Фактический результат: приведенный выше код приводит к успешному подключению клиента к серверу.
Ожидаемый результат: я хочу, чтобы сервер выбросил исключение SocketTimeoutException.