pekko/akka-persistence/src/test/scala/akka/persistence/SnapshotDirectoryFailureSpec.scala
Johan Andrén d4fdf5639e
Deprecate LevelDB (#30213)
* Deprecate LevelDB

In preparation of moving into the testing infra (or deleting it completely) at some distant future point in time

* Remove leveldb tests where there also is an inmem one

* More details in deprecation text, recommend inmem + journal proxy for testing etc.
2021-06-02 13:37:52 +02:00

61 lines
1.9 KiB
Scala

/*
* Copyright (C) 2009-2021 Lightbend Inc. <https://www.lightbend.com>
*/
package akka.persistence
import java.io.{ File, IOException }
import akka.actor.{ ActorInitializationException, ActorRef, Props }
import akka.testkit.{ AkkaSpec, EventFilter, ImplicitSender }
object SnapshotDirectoryFailureSpec {
val inUseSnapshotPath = "target/inUseSnapshotPath"
class TestPersistentActor(name: String, probe: ActorRef) extends PersistentActor with TurnOffRecoverOnStart {
override def persistenceId: String = name
override def receiveRecover: Receive = {
case SnapshotOffer(md, s) => probe ! ((md, s))
}
override def receiveCommand = {
case s: String => saveSnapshot(s)
case SaveSnapshotSuccess(md) => probe ! md.sequenceNr
case other => probe ! other
}
}
}
class SnapshotDirectoryFailureSpec
extends AkkaSpec(
PersistenceSpec.config(
"inmem",
"SnapshotDirectoryFailureSpec",
extraConfig = Some(s"""
akka.persistence.snapshot-store.local.dir = "${SnapshotDirectoryFailureSpec.inUseSnapshotPath}"
""")))
with ImplicitSender {
import SnapshotDirectoryFailureSpec._
val file = new File(inUseSnapshotPath)
override protected def atStartup(): Unit = {
if (!file.createNewFile()) throw new IOException(s"Failed to create test file [${file.getCanonicalFile}]")
}
override protected def afterTermination(): Unit = {
if (!file.delete()) throw new IOException(s"Failed to delete test file [${file.getCanonicalFile}]")
}
"A local snapshot store configured with an failing directory name " must {
"throw an exception at startup" in {
EventFilter[ActorInitializationException](occurrences = 1).intercept {
val p = system.actorOf(Props(classOf[TestPersistentActor], "SnapshotDirectoryFailureSpec-1", testActor))
p ! "blahonga"
}
}
}
}