如何在未经过滤的Netty服务器实际关闭时收到通知?

时间:2015-06-16 00:19:58

标签: scala testing netty unfiltered

我有一个Unfiltered Netty服务器,我需要在每次测试后关闭并重启。

val mockService = unfiltered.netty.Server.http(mockServicePort).handler(mockServicePlan)

before {
  proxyServer.start()
}

after {
  proxyServer.stop()
}

目前,这不起作用,我很确定这是因为stop()函数是非阻塞的,所以下面的start()函数会被提前调用。

我找了一种方法来阻止或获得有关服务器关闭的通知,但它似乎没有通过当前的API浮出水面。

有没有更好的方法来实现我想要实现的目标?

1 个答案:

答案 0 :(得分:1)

简单回答:用HTTP4S Blaze服务器替换Unfiltered Netty服务器。

var server: org.http4s.server.Server = null

val go: Task[Server] = org.http4s.server.blaze.BlazeBuilder
  .bindHttp(mockServicePort)
  .mountService(mockService)
  .start

before {
  server = go.run
}

after {
  server.shutdown.run
}

还有一个awaitShutdown在服务器关闭之前就会阻塞。但由于shutdownTask,因此在完成后很容易收到通知。只是flatMap那个狗屎。