From 278ef5fb8cb26d8a599512d93bbbb2e6dacddea8 Mon Sep 17 00:00:00 2001 From: Pritam Kadam Date: Tue, 13 Mar 2018 21:45:05 +0530 Subject: [PATCH] Execute tasks from Actors constructor on creation of BehaviorTestKit #24703 --- .../typed/internal/BehaviorTestKitImpl.scala | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/akka-testkit-typed/src/main/scala/akka/testkit/typed/internal/BehaviorTestKitImpl.scala b/akka-testkit-typed/src/main/scala/akka/testkit/typed/internal/BehaviorTestKitImpl.scala index 478107e25a..341cdfa082 100644 --- a/akka-testkit-typed/src/main/scala/akka/testkit/typed/internal/BehaviorTestKitImpl.scala +++ b/akka-testkit-typed/src/main/scala/akka/testkit/typed/internal/BehaviorTestKitImpl.scala @@ -31,6 +31,9 @@ private[akka] final class BehaviorTestKitImpl[T](_name: String, _initialBehavior private var currentUncanonical = _initialBehavior private var current = Behavior.validateAsInitial(Behavior.start(_initialBehavior, ctx)) + // execute any future tasks scheduled in Actor's constructor + runAllTasks() + override def retrieveEffect(): Effect = ctx.effectQueue.poll() match { case null ⇒ NoEffects case x ⇒ x @@ -77,14 +80,18 @@ private[akka] final class BehaviorTestKitImpl[T](_name: String, _initialBehavior throw e } + private def runAllTasks(): Unit = { + ctx.executionContext match { + case controlled: ControlledExecutor ⇒ controlled.runAll() + case _ ⇒ + } + } + override def run(msg: T): Unit = { try { currentUncanonical = Behavior.interpretMessage(current, ctx, msg) current = Behavior.canonicalize(currentUncanonical, current, ctx) - ctx.executionContext match { - case controlled: ControlledExecutor ⇒ controlled.runAll() - case _ ⇒ - } + runAllTasks() } catch handleException }