Make sure actor started timer before we change time #25799
This commit is contained in:
parent
97d7eadb6f
commit
dffd5da3a4
1 changed files with 18 additions and 13 deletions
|
|
@ -48,7 +48,7 @@ class ManualTimerExampleSpec extends ScalaTestWithActorTestKit(ManualTime.config
|
|||
val probe = TestProbe[Tock.type]()
|
||||
val behavior = Behaviors.withTimers[Tick.type] { timer =>
|
||||
timer.startPeriodicTimer("T", Tick, 10.millis)
|
||||
Behaviors.receive { (context, Tick) =>
|
||||
Behaviors.receiveMessage { _ =>
|
||||
probe.ref ! Tock
|
||||
Behaviors.same
|
||||
}
|
||||
|
|
@ -56,7 +56,7 @@ class ManualTimerExampleSpec extends ScalaTestWithActorTestKit(ManualTime.config
|
|||
|
||||
spawn(behavior)
|
||||
|
||||
for (_ <- Range(0, 5)) {
|
||||
for (_ <- 0 until 5) {
|
||||
manualTime.expectNoMessageFor(9.millis, probe)
|
||||
|
||||
manualTime.timePasses(1.milli)
|
||||
|
|
@ -69,6 +69,7 @@ class ManualTimerExampleSpec extends ScalaTestWithActorTestKit(ManualTime.config
|
|||
case class Tick(n: Int) extends Command
|
||||
case class SlowThenBump(nextCount: Int) extends Command
|
||||
sealed trait Event
|
||||
case object Started extends Event
|
||||
case class Tock(n: Int) extends Event
|
||||
case object SlowThenBumpAck extends Event
|
||||
|
||||
|
|
@ -77,21 +78,25 @@ class ManualTimerExampleSpec extends ScalaTestWithActorTestKit(ManualTime.config
|
|||
|
||||
val behavior = Behaviors.withTimers[Command] { timer =>
|
||||
timer.startPeriodicTimer("T", Tick(1), interval)
|
||||
Behaviors.receive { (context, cmd) =>
|
||||
cmd match {
|
||||
case Tick(n) =>
|
||||
probe.ref ! Tock(n)
|
||||
Behaviors.same
|
||||
case SlowThenBump(nextCount) =>
|
||||
manualTime.timePasses(interval)
|
||||
timer.startPeriodicTimer("T", Tick(nextCount), interval)
|
||||
probe.ref ! SlowThenBumpAck
|
||||
Behaviors.same
|
||||
}
|
||||
|
||||
probe.ref ! Started
|
||||
Behaviors.receiveMessage {
|
||||
case Tick(n) =>
|
||||
probe.ref ! Tock(n)
|
||||
Behaviors.same
|
||||
case SlowThenBump(nextCount) =>
|
||||
manualTime.timePasses(interval)
|
||||
timer.startPeriodicTimer("T", Tick(nextCount), interval)
|
||||
probe.ref ! SlowThenBumpAck
|
||||
Behaviors.same
|
||||
}
|
||||
}
|
||||
|
||||
val ref = spawn(behavior)
|
||||
|
||||
// make sure we actually started the timer before we change the time
|
||||
probe.expectMessage(Started)
|
||||
|
||||
manualTime.timePasses(11.millis)
|
||||
probe.expectMessage(Tock(1))
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue