From f362966ee8e1e9cf8d1eaacfd38d98e59931b6c7 Mon Sep 17 00:00:00 2001 From: Roland Date: Sun, 8 Jul 2012 17:59:59 +0200 Subject: [PATCH] add test for scrapping of behaviorStack during restart --- .../scala/akka/actor/ActorLifeCycleSpec.scala | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/akka-actor-tests/src/test/scala/akka/actor/ActorLifeCycleSpec.scala b/akka-actor-tests/src/test/scala/akka/actor/ActorLifeCycleSpec.scala index d87aaaaee6..9536755d0a 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/ActorLifeCycleSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/ActorLifeCycleSpec.scala @@ -116,6 +116,30 @@ class ActorLifeCycleSpec extends AkkaSpec with BeforeAndAfterEach with ImplicitS expectNoMsg(1 seconds) system.stop(supervisor) } + + "clear the behavior stack upon restart" in { + case class Become(recv: ActorContext ⇒ Receive) + val a = system.actorOf(Props(new Actor { + def receive = { + case Become(beh) ⇒ context.become(beh(context), discardOld = false); sender ! "ok" + case x ⇒ sender ! 42 + } + })) + a ! "hello" + expectMsg(42) + a ! Become(ctx ⇒ { + case "fail" ⇒ throw new RuntimeException("buh") + case x ⇒ ctx.sender ! 43 + }) + expectMsg("ok") + a ! "hello" + expectMsg(43) + EventFilter[RuntimeException]("buh", occurrences = 1) intercept { + a ! "fail" + } + a ! "hello" + expectMsg(42) + } } }