Last active
August 29, 2015 13:57
-
-
Save RayRoestenburg/9580479 to your computer and use it in GitHub Desktop.
Failing persistence test when one probe is used.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package akka.persistence | |
import com.typesafe.config._ | |
import scala.concurrent.duration._ | |
import akka.actor._ | |
import akka.persistence._ | |
import akka.testkit._ | |
case class SetNumber(number: Int) | |
case class Add(number: Int) | |
case class Subtract(number: Int) | |
case object DecrementAndGet | |
case object GetNumber | |
class NumberProcessor(name: String) extends NamedProcessor(name) { | |
override def processorId = name | |
var num = 0 | |
def receive = { | |
case Persistent(SetNumber(number), _) ⇒ num = number | |
case Persistent(Add(number), _) ⇒ num = num + number | |
case Persistent(Subtract(number), _) ⇒ num = num - number | |
case GetNumber ⇒ sender ! num | |
case p @ Persistent(DecrementAndGet, _) ⇒ | |
num = num - 1 | |
sender ! num | |
case DecrementAndGet ⇒ | |
num = num - 1 | |
sender ! num | |
} | |
} | |
abstract class NumberProcessorSpec(config: Config) extends AkkaSpec(config) | |
with PersistenceSpec { | |
"A processor" must { | |
"this works" in { | |
val probe = TestProbe() | |
val processor = namedProcessor[NumberProcessor] | |
processor.tell(GetNumber, probe.testActor) | |
probe.expectMsg(0) | |
processor.tell(Persistent(DecrementAndGet), probe.testActor) | |
probe.expectMsg(-1) | |
watch(processor) | |
system.stop(processor) | |
expectMsgType[Terminated] | |
val processorResurrected = namedProcessor[NumberProcessor] | |
val anotherProbe = TestProbe() | |
processorResurrected.tell(Persistent(DecrementAndGet), anotherProbe.testActor) | |
anotherProbe.expectMsg(-2) | |
} | |
"this doesn't, why?" in { | |
val probe = TestProbe() | |
val processor = namedProcessor[NumberProcessor] | |
processor.tell(GetNumber, probe.testActor) | |
probe.expectMsg(0) | |
processor.tell(Persistent(DecrementAndGet), probe.testActor) | |
probe.expectMsg(-1) | |
watch(processor) | |
system.stop(processor) | |
expectMsgType[Terminated] | |
val processorResurrected = namedProcessor[NumberProcessor] | |
processorResurrected.tell(Persistent(DecrementAndGet), probe.testActor) | |
probe.expectMsg(-2) | |
} | |
} | |
} | |
class NumberSpec extends NumberProcessorSpec(PersistenceSpec.config("leveldb", "NumberSpec")) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment