- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 Actor
看起来像
import akka.actor.Status.Failure
import akka.actor.{Actor, ActorLogging, Props}
import akka.event.LoggingReceive
object Runner {
def props(race: Race) = Props(classOf[Runner], race)
}
class Runner(race: Race) extends Actor with ActorLogging {
override def receive: Receive = LoggingReceive {
case Start =>
sender ! "OK"
log.debug("running...")
Thread.sleep(10)
throw new RuntimeException("MarathonRunner is tired")
case Failure(throwable) => throw throwable
case Stop =>
log.debug("stopping runner")
context.stop(self)
}
}
我的测试看起来像
import akka.actor.{Terminated, ActorSystem}
import akka.testkit.{ImplicitSender, TestActorRef, TestKit}
import org.scalatest._
import scala.concurrent.duration._
class RunnerSpec extends TestKit(ActorSystem("testSystem"))
with WordSpecLike
with MustMatchers
with ImplicitSender {
"must fail with exception" in {
val runnerRef = TestActorRef(new Runner(new Marathon), "testRunnerException")
runnerRef ! Start
expectMsg("OK")
watch(runnerRef)
expectMsg(20 millis, Terminated)
}
}
RuntimeException
发生,Actor
就会重新启动。 Actor
没有定义任何 supervisorStrategy
,它的父级定义为 class Coach() extends Actor with ActorLogging {
val runner = context.actorOf(Runner.props(new Marathon).withDispatcher("my-pinned-dispatcher"), "runner")
override def supervisorStrategy: SupervisorStrategy = OneForOneStrategy(maxNrOfRetries = 2, withinTimeRange = 5 seconds) {
case _: RuntimeException =>
sender ! Start
Restart
}
但我没有在这里测试 supervisor
,事实上 Supervisor 甚至不是测试的一部分。
这里出了什么问题?
日志
Testing started at 11:48 AM ...
[DEBUG] [06/02/2015 11:48:08.068] [ScalaTest-run] [EventStream(akka://testSystem)] logger log1-Logging$DefaultLogger started
[DEBUG] [06/02/2015 11:48:08.069] [ScalaTest-run] [EventStream(akka://testSystem)] Default Loggers started
[DEBUG] [06/02/2015 11:48:08.072] [testSystem-akka.actor.default-dispatcher-4] [akka://testSystem/system] now supervising Actor[akka://testSystem/system/deadLetterListener#58458639]
[DEBUG] [06/02/2015 11:48:08.075] [testSystem-akka.actor.default-dispatcher-4] [akka://testSystem/system/deadLetterListener] started (akka.event.DeadLetterListener@7b2fe415)
[DEBUG] [06/02/2015 11:48:08.089] [testSystem-akka.actor.default-dispatcher-5] [akka://testSystem/system/testActor1] started (akka.testkit.TestActor@6242009b)
[DEBUG] [06/02/2015 11:48:08.090] [testSystem-akka.actor.default-dispatcher-5] [akka://testSystem/system] now supervising Actor[akka://testSystem/system/testActor1#1776291392][DEBUG] [06/02/2015 11:48:08.249] [testSystem-akka.actor.default-dispatcher-4] [akka://testSystem/user] now supervising TestActor[akka://testSystem/user/testRunnerException]
[DEBUG] [06/02/2015 11:48:08.250] [ScalaTest-run-running-RunnerSpec] [akka://testSystem/user/testRunnerException] started (com.learner.ahka.ruforever.Runner@afdd280)
[DEBUG] [06/02/2015 11:48:08.251] [ScalaTest-run-running-RunnerSpec] [akka://testSystem/user/testRunnerException] received handled message Start
[DEBUG] [06/02/2015 11:48:08.254] [ScalaTest-run-running-RunnerSpec] [akka://testSystem/user/testRunnerException] running...
[DEBUG] [06/02/2015 11:48:08.267] [ScalaTest-run-running-RunnerSpec] [akka://testSystem/user/testRunnerException] now watched by Actor[akka://testSystem/system/testActor1#1776291392]
[ERROR] [06/02/2015 11:48:08.269] [testSystem-akka.actor.default-dispatcher-5] [akka://testSystem/user/testRunnerException] MarathonRunner is tired
java.lang.RuntimeException: MarathonRunner is tired
at com.learner.ahka.ruforever.Runner$$anonfun$receive$1.applyOrElse(Runner.scala:18)
at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:36)
at akka.event.LoggingReceive.apply(LoggingReceive.scala:62)
at akka.event.LoggingReceive.apply(LoggingReceive.scala:50)
at scala.PartialFunction$class.applyOrElse(PartialFunction.scala:123)
at akka.event.LoggingReceive.applyOrElse(LoggingReceive.scala:50)
at akka.actor.Actor$class.aroundReceive(Actor.scala:467)
at com.learner.ahka.ruforever.Runner.aroundReceive(Runner.scala:11)
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)
at akka.actor.ActorCell.invoke(ActorCell.scala:487)
at akka.testkit.CallingThreadDispatcher.process$1(CallingThreadDispatcher.scala:251)
at akka.testkit.CallingThreadDispatcher.runQueue(CallingThreadDispatcher.scala:284)
at akka.testkit.CallingThreadDispatcher.dispatch(CallingThreadDispatcher.scala:208)
at akka.actor.dungeon.Dispatch$class.sendMessage(Dispatch.scala:123)
at akka.actor.ActorCell.sendMessage(ActorCell.scala:369)
at akka.actor.Cell$class.sendMessage(ActorCell.scala:290)
at akka.actor.ActorCell.sendMessage(ActorCell.scala:369)
at akka.actor.LocalActorRef.$bang(ActorRef.scala:384)
at com.learner.ahka.ruforever.RunnerSpec$$anonfun$1.apply$mcV$sp(RunnerSpec.scala:15)
at com.learner.ahka.ruforever.RunnerSpec$$anonfun$1.apply(RunnerSpec.scala:13)
at com.learner.ahka.ruforever.RunnerSpec$$anonfun$1.apply(RunnerSpec.scala:13)
at org.scalatest.Transformer$$anonfun$apply$1.apply$mcV$sp(Transformer.scala:22)
at org.scalatest.OutcomeOf$class.outcomeOf(OutcomeOf.scala:85)
at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
at org.scalatest.Transformer.apply(Transformer.scala:22)
at org.scalatest.Transformer.apply(Transformer.scala:20)
at org.scalatest.WordSpecLike$$anon$1.apply(WordSpecLike.scala:953)
at org.scalatest.Suite$class.withFixture(Suite.scala:1122)
at com.learner.ahka.ruforever.RunnerSpec.withFixture(RunnerSpec.scala:9)
at org.scalatest.WordSpecLike$class.invokeWithFixture$1(WordSpecLike.scala:950)
at org.scalatest.WordSpecLike$$anonfun$runTest$1.apply(WordSpecLike.scala:962)
at org.scalatest.WordSpecLike$$anonfun$runTest$1.apply(WordSpecLike.scala:962)
at org.scalatest.SuperEngine.runTestImpl(Engine.scala:306)
at org.scalatest.WordSpecLike$class.runTest(WordSpecLike.scala:962)
at com.learner.ahka.ruforever.RunnerSpec.runTest(RunnerSpec.scala:9)
at org.scalatest.WordSpecLike$$anonfun$runTests$1.apply(WordSpecLike.scala:1021)
at org.scalatest.WordSpecLike$$anonfun$runTests$1.apply(WordSpecLike.scala:1021)
at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:413)
at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:401)
at scala.collection.immutable.List.foreach(List.scala:381)
at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:401)
at org.scalatest.SuperEngine.org$scalatest$SuperEngine$$runTestsInBranch(Engine.scala:396)
at org.scalatest.SuperEngine.runTestsImpl(Engine.scala:483)
at org.scalatest.WordSpecLike$class.runTests(WordSpecLike.scala:1021)
at com.learner.ahka.ruforever.RunnerSpec.runTests(RunnerSpec.scala:9)
at org.scalatest.Suite$class.run(Suite.scala:1424)
at com.learner.ahka.ruforever.RunnerSpec.org$scalatest$WordSpecLike$$super$run(RunnerSpec.scala:9)
at org.scalatest.WordSpecLike$$anonfun$run$1.apply(WordSpecLike.scala:1067)
at org.scalatest.WordSpecLike$$anonfun$run$1.apply(WordSpecLike.scala:1067)
at org.scalatest.SuperEngine.runImpl(Engine.scala:545)
at org.scalatest.WordSpecLike$class.run(WordSpecLike.scala:1067)
at com.learner.ahka.ruforever.RunnerSpec.run(RunnerSpec.scala:9)
at org.scalatest.tools.SuiteRunner.run(SuiteRunner.scala:55)
at org.scalatest.tools.Runner$$anonfun$doRunRunRunDaDoRunRun$3.apply(Runner.scala:2563)
at org.scalatest.tools.Runner$$anonfun$doRunRunRunDaDoRunRun$3.apply(Runner.scala:2557)
at scala.collection.immutable.List.foreach(List.scala:381)
at org.scalatest.tools.Runner$.doRunRunRunDaDoRunRun(Runner.scala:2557)
at org.scalatest.tools.Runner$$anonfun$runOptionallyWithPassFailReporter$2.apply(Runner.scala:1044)
at org.scalatest.tools.Runner$$anonfun$runOptionallyWithPassFailReporter$2.apply(Runner.scala:1043)
at org.scalatest.tools.Runner$.withClassLoaderAndDispatchReporter(Runner.scala:2722)
at org.scalatest.tools.Runner$.runOptionallyWithPassFailReporter(Runner.scala:1043)
at org.scalatest.tools.Runner$.run(Runner.scala:883)
at org.scalatest.tools.Runner.run(Runner.scala)
at org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.runScalaTest2(ScalaTestRunner.java:138)
at org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.main(ScalaTestRunner.java:28)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
[DEBUG] [06/02/2015 11:48:08.269] [testSystem-akka.actor.default-dispatcher-5] [akka://testSystem/user/testRunnerException] restarting
[DEBUG] [06/02/2015 11:48:08.272] [testSystem-akka.actor.default-dispatcher-5] [akka://testSystem/user/testRunnerException] restarted
assertion failed: timeout (20 milliseconds) during expectMsg while waiting for Terminated
java.lang.AssertionError: assertion failed: timeout (20 milliseconds) during expectMsg while waiting for Terminated
at scala.Predef$.assert(Predef.scala:165)
at akka.testkit.TestKitBase$class.expectMsg_internal(TestKit.scala:338)
at akka.testkit.TestKitBase$class.expectMsg(TestKit.scala:324)
at akka.testkit.TestKit.expectMsg(TestKit.scala:718)
at com.learner.ahka.ruforever.RunnerSpec$$anonfun$1.apply$mcV$sp(RunnerSpec.scala:18)
at com.learner.ahka.ruforever.RunnerSpec$$anonfun$1.apply(RunnerSpec.scala:13)
at com.learner.ahka.ruforever.RunnerSpec$$anonfun$1.apply(RunnerSpec.scala:13)
at org.scalatest.Transformer$$anonfun$apply$1.apply$mcV$sp(Transformer.scala:22)
at org.scalatest.OutcomeOf$class.outcomeOf(OutcomeOf.scala:85)
at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
at org.scalatest.Transformer.apply(Transformer.scala:22)
at org.scalatest.Transformer.apply(Transformer.scala:20)
at org.scalatest.WordSpecLike$$anon$1.apply(WordSpecLike.scala:953)
at org.scalatest.Suite$class.withFixture(Suite.scala:1122)
at com.learner.ahka.ruforever.RunnerSpec.withFixture(RunnerSpec.scala:9)
at org.scalatest.WordSpecLike$class.invokeWithFixture$1(WordSpecLike.scala:950)
at org.scalatest.WordSpecLike$$anonfun$runTest$1.apply(WordSpecLike.scala:962)
at org.scalatest.WordSpecLike$$anonfun$runTest$1.apply(WordSpecLike.scala:962)
at org.scalatest.SuperEngine.runTestImpl(Engine.scala:306)
at org.scalatest.WordSpecLike$class.runTest(WordSpecLike.scala:962)
at com.learner.ahka.ruforever.RunnerSpec.runTest(RunnerSpec.scala:9)
at org.scalatest.WordSpecLike$$anonfun$runTests$1.apply(WordSpecLike.scala:1021)
at org.scalatest.WordSpecLike$$anonfun$runTests$1.apply(WordSpecLike.scala:1021)
at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:413)
at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:401)
at scala.collection.immutable.List.foreach(List.scala:381)
at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:401)
at org.scalatest.SuperEngine.org$scalatest$SuperEngine$$runTestsInBranch(Engine.scala:396)
at org.scalatest.SuperEngine.runTestsImpl(Engine.scala:483)
at org.scalatest.WordSpecLike$class.runTests(WordSpecLike.scala:1021)
at com.learner.ahka.ruforever.RunnerSpec.runTests(RunnerSpec.scala:9)
at org.scalatest.Suite$class.run(Suite.scala:1424)
at com.learner.ahka.ruforever.RunnerSpec.org$scalatest$WordSpecLike$$super$run(RunnerSpec.scala:9)
at org.scalatest.WordSpecLike$$anonfun$run$1.apply(WordSpecLike.scala:1067)
at org.scalatest.WordSpecLike$$anonfun$run$1.apply(WordSpecLike.scala:1067)
at org.scalatest.SuperEngine.runImpl(Engine.scala:545)
at org.scalatest.WordSpecLike$class.run(WordSpecLike.scala:1067)
at com.learner.ahka.ruforever.RunnerSpec.run(RunnerSpec.scala:9)
at org.scalatest.tools.SuiteRunner.run(SuiteRunner.scala:55)
at org.scalatest.tools.Runner$$anonfun$doRunRunRunDaDoRunRun$3.apply(Runner.scala:2563)
at org.scalatest.tools.Runner$$anonfun$doRunRunRunDaDoRunRun$3.apply(Runner.scala:2557)
at scala.collection.immutable.List.foreach(List.scala:381)
at org.scalatest.tools.Runner$.doRunRunRunDaDoRunRun(Runner.scala:2557)
at org.scalatest.tools.Runner$$anonfun$runOptionallyWithPassFailReporter$2.apply(Runner.scala:1044)
at org.scalatest.tools.Runner$$anonfun$runOptionallyWithPassFailReporter$2.apply(Runner.scala:1043)
at org.scalatest.tools.Runner$.withClassLoaderAndDispatchReporter(Runner.scala:2722)
at org.scalatest.tools.Runner$.runOptionallyWithPassFailReporter(Runner.scala:1043)
at org.scalatest.tools.Runner$.run(Runner.scala:883)
at org.scalatest.tools.Runner.run(Runner.scala)
at org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.runScalaTest2(ScalaTestRunner.java:138)
at org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.main(ScalaTestRunner.java:28)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
最佳答案
根据@cmbaxter 的评论,我挖掘了一下并解决了这个问题。我不得不重写 supervisionStrategy
进行测试以不允许它重新启动。
这是我的测试结果
class RunnerSpec extends TestKit(ActorSystem("testSystem"))
with FlatSpecLike
with MustMatchers
with ImplicitSender {
behavior of "A Marathon runner"
it must "must fail with exception" in {
val supervisorRef = TestActorRef[DummySupervisor]
val runnerRef = TestActorRef(Runner.props(new Marathon), supervisorRef, "runnerFail")
runnerRef ! Start
expectMsg("OK")
watch(runnerRef)
expectTerminated(runnerRef, 10 millis)
}
}
class DummySupervisor extends Coach {
override def supervisorStrategy: SupervisorStrategy = OneForOneStrategy() {
case _: RuntimeException => stop
}
}
关于scala - Akka Actor在单元测试期间出现异常后重启,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30604305/
我的应用程序从一个有 5 个选项卡的选项卡栏 Controller 开始。一开始,第一个出现了它的名字,但其他四个没有名字,直到我点击它们。然后根据用户使用的语言显示名称。如何在选项卡栏出现之前设置选
我有嵌套数组 json 对象(第 1 层、第 2 层和第 3 层)。我的问题是数据表没有出现。任何相关的 CDN 均已导入。该表仅显示部分。我引用了很多网站,但都没有解决我的问题。 之前我使用标准表来
我正在尝试设置要显示的 Parse PFLoginViewController。这是我的一个 View Controller 的类。 import UIKit import Parse import
我遇到了这个问题,我绘制的对象没有出现在 GUI 中。我知道它正在被处理,因为数据被推送到日志文件。但是,图形没有出现。 这是我的一些代码: public static void main(Strin
我有一个树状图,其中包含出现这样的词...... TreeMap occurrence = new TreeMap (); 字符串 = 单词 整数 = 出现次数。 我如何获得最大出现次数 - 整数,
因此,我提示用户输入变量。如果变量小于 0 且大于 10。如果用户输入 10,我想要求用户再次输入数字。我问时间的时候输入4,它说你输入错误。但在第二次尝试时效果很好。例如:如果我输入 25,它会打印
我已经用 css overflow 属性做了一个例子。在这个例子中我遇到了一个溢出滚动的问题。滚动条出现了,但没有工作意味着每当将光标移动到滚动条时,在这个滚动条不活动的时间。我对此一无所知,所以请帮
我现在正在做一个元素。当您单击一个元素时,会出现以下信息,我想知道如何在您单击下一个元素而不重新单击同一元素时使其消失....例如,我的元素中有披萨,我想单击肉披萨看到浇头然后点击奶酪披萨看到浇头和肉
我有一个路由器模块,它将主题与正则表达式进行比较,并将出现的事件与一致的键掩码链接起来。 (它是一个简单的 url 路由过滤,如 symfony http://symfony.com/doc/curr
这个问题在这里已经有了答案: 9年前关闭。 Possible Duplicate: mysql_fetch_array() expects parameter 1 to be resource, bo
我在底部有一个带有工具栏的 View ,我正在使用 NavigationLink 导航到该 View 。但是当 View 出现时,工具栏显示得有点太低了。大约半秒钟后,它突然跳到位。它只会在应用程序启
我试图在我的应用程序上为背景音乐添加一个 AVAudioPlayer,我正在主屏幕上启动播放器,尝试在应用程序打开时开始播放但出现意外行为... 它播放并立即不断创建新玩家并播放这些玩家,因此同时播放
这是获取一个数字,获取其阶乘并将其加倍,但是由于基本情况,如果您输入 0,它会给出 2 作为答案,因此为了绕过它,我使用了 if 语句,但收到错误输入“if”时解析错误。如果你们能提供帮助,我真的很感
暂停期间抛出异常 android.os.DeadObjectException 在 android.os.BinderProxy.transactNative( native 方法) 在 androi
我已经为猜词游戏编写了一些代码。它从用户输入中读取字符并在单词中搜索该字符;根据字符是否在单词中,程序返回并控制一些变量。 代码如下: import java.util.Random; import
我是自动化领域的新手。这是我的简单 TestNG 登录代码,当我以 TestNG 身份运行该代码时,它会出现 java.lang.NullPointerException,双击它会突出显示我导航到 U
我是c#程序员,我习惯了c#的封装语法和其他东西。但是现在,由于某些原因,我应该用java写一些东西,我现在正在练习java一天!我要创建一个为我自己创建一个虚拟项目,以便让自己更熟悉 Java 的
我正在使用 Intellij,我的源类是 main.com.coding,我的资源文件是 main.com.testing。我将 spring.xml 文件放入资源文件中。 我的测试类位于 test.
我想要我的tests folder separate到我的应用程序代码。我的项目结构是这样的 myproject/ myproject/ myproject.py moduleon
这个问题已经有答案了: What is a NullPointerException, and how do I fix it? (12 个回答) 已关闭 6 年前。 因此,我尝试比较 2 个值,一个
我是一名优秀的程序员,十分优秀!