我有一个Unfiltered Netty服务器,我需要在每次测试后关闭并重启。
val mockService = unfiltered.netty.Server.http(mockServicePort).handler(mockServicePlan)
before {
proxyServer.start()
}
after {
proxyServer.stop()
}
目前,这不起作用,我很确定这是因为stop()
函数是非阻塞的,所以下面的start()
函数会被提前调用。
我找了一种方法来阻止或获得有关服务器关闭的通知,但它似乎没有通过当前的API浮出水面。
有没有更好的方法来实现我想要实现的目标?
答案 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
在服务器关闭之前就会阻塞。但由于shutdown
是Task
,因此在完成后很容易收到通知。只是flatMap
那个狗屎。