Spring WebFlux Netty - тест простоя - PullRequest
0 голосов
/ 14 февраля 2020

Я установил тайм-аут для Netty на основе этого ответа , и он работает. Ниже я использую декларацию ChannelDuplexHandler, которая немного отличается от предыдущего ответа, так что она возвращает 504 вместо 500:

fun channelDuplexHandler() = object : ChannelDuplexHandler() {
    override fun userEventTriggered(ctx: ChannelHandlerContext, evt: Any) {
        if (evt is IdleStateEvent) {
            val connection = Connection.from(ctx.channel())
            val ops = connection as ChannelOperations<*, *>?
            if (ops != null) {
                val response = DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.GATEWAY_TIMEOUT)
                response.headers()
                    .setInt(HttpHeaderNames.CONTENT_LENGTH, 0)
                    .set(HttpHeaderNames.CONNECTION, HttpHeaderValues.CLOSE)
                ops.channel().writeAndFlush(response)
                    .addListener(ChannelFutureListener.CLOSE)
            } else {
                ctx.fireExceptionCaught(HttpServerErrorException(HttpStatus.GATEWAY_TIMEOUT))
                ctx.close()
            }
        }
    }
}

Теперь проблема, с которой я сталкиваюсь, заключается в написании интеграционный тест для проверки поведения. Действительно, когда я использую WebTestClient для совершения вызова, initChannel logi c никогда не достигается.

Почему поведение во время тестов отличается? Есть ли способ проверить этот лог c?

...