Netty-使用IdleStateHandler

时间:2019-03-04 19:43:59

标签: java netty

我正在尝试测试自己的处理程序,该处理程序从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();
}

我在unit tests for IdleStateHandler中注意到,已经创建了一个可测试的处理程序,该处理程序使用package-scoped methods来测试处理程序。

有什么方法可以从程序包外部测试空闲事件?我需要确保涵盖这些事件。任何提示表示赞赏。谢谢!

1 个答案:

答案 0 :(得分:1)

您应该在睡觉后致电channel.runPendingTasks()。这应该执行已准备好的计划任务。