何をしているのかわかっていない。ちょいちょいEither型にしているのはわかる。あと、RPCをなんかしてるとも。
PR Spray#1086
SetRequestTimeoutを使うプロダクトコードのテストコードが失敗する問題があるそうで。 自分も試したけど、とりあえず再現できた(Mac OSX Yosemite)
プロダクトコード
package com.example import akka.actor.Actor import spray.routing._ import spray.http._ import MediaTypes._ import scala.concurrent.duration._ trait LongTimeService extends HttpService { val longTimeRoute = path("longTime") { extract(_.responder) { responder => responder ! SetRequestTimeout(30 seconds) complete(slowQuery()) } } def slowQuery(): String = { Thread.sleep(50000) "complete" } }
テストコード
package com.example import org.specs2.mutable.Specification import spray.testkit.Specs2RouteTest import spray.http._ import spray.http.StatusCodes._ import StatusCodes._ class LongTimeServiceSpec extends Specification with Specs2RouteTest with LongTimeService { def actorRefFactory = system "LongTimeService" should { "return complete" in { Get("/longTime") ~> longTimeRoute ~> check { status.intValue should be equalTo 200 } } } }
java.lang.RuntimeException: Received invalid route response: SetRequestTimeout(30 seconds)
一応書いてみた。 github.com