Netty - модульное тестирование состояния простоя обработчиков с использованием IdleStateHandler - PullRequest
0 голосов
/ 04 марта 2019

Я пытаюсь проверить свои собственные обработчики, которые прослушивают io.netty.handler.timeout.IdleStateEvent из io.netty.handler.timeout.IdleStateHandler.Я не вижу, чтобы кто-то еще имел эту проблему, но когда я сплю в своем коде, чтобы вызвать события простоя, события простоя не запускаются.Я полагаю, что это связано с тем, что встроенный канал работает в том же потоке?Ниже приведен пример теста.

@Test
public void userEventTriggered_IdleStateEvent() throws Exception {
    // given
    IdleStateHandler idleStateHandler = new IdleStateHandler(
            1L,0L,0L, TimeUnit.SECONDS);
    EmbeddedChannel channel = new EmbeddedChannel(idleStateHandler, myHandler);

    // when
    TimeUnit.SECONDS.sleep(2);

    // then
    assertFalse(channel.isActive());

    channel.finish();
}

Я заметил в модульных тестах для IdleStateHandler , что был создан тестируемый обработчик, который использует методы пакетной области для проверки обработчика.

Есть ли способ проверить события простоя снаружи пакета?Мне нужно обеспечить освещение этих событий.Любые советы приветствуются.Спасибо!

1 Ответ

0 голосов
/ 04 марта 2019

Вы должны позвонить channel.runPendingTasks() после сна.Это должно выполнить запланированные задачи, которые теперь готовы.

...