Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 15 additions & 15 deletions docs/src/test/scala/docs/persistence/PersistencePluginDocSpec.scala
Original file line number Diff line number Diff line change
Expand Up @@ -14,17 +14,17 @@
package docs.persistence

import scala.collection.immutable
import org.apache.pekko.actor.ActorSystem
import org.apache.pekko.testkit.TestKit
import com.typesafe.config._
import org.scalatest.wordspec.AnyWordSpec

import scala.concurrent.Future
import scala.util.Try
import scala.concurrent.duration._
import scala.util.Try

//#plugin-imports
import com.typesafe.config._
import org.apache.pekko
import pekko.actor.ActorSystem
import pekko.testkit.TestKit
import org.scalatest.wordspec.AnyWordSpec

//#plugin-imports
import pekko.persistence._
import pekko.persistence.journal._
import pekko.persistence.snapshot._
Expand Down Expand Up @@ -116,8 +116,8 @@ class PersistencePluginDocSpec extends AnyWordSpec {
}

object SharedLeveldbPluginDocSpec {
import org.apache.pekko.actor._
import org.apache.pekko.persistence.journal.leveldb.SharedLeveldbJournal
import pekko.actor._
import pekko.persistence.journal.leveldb.SharedLeveldbJournal

val config =
"""
Expand Down Expand Up @@ -153,9 +153,9 @@ trait SharedLeveldbPluginDocSpec {
val system: ActorSystem

{
import org.apache.pekko.actor._
import pekko.actor._
// #shared-store-creation
import org.apache.pekko.persistence.journal.leveldb.SharedLeveldbStore
import pekko.persistence.journal.leveldb.SharedLeveldbStore

val store = system.actorOf(Props[SharedLeveldbStore](), "store")
// #shared-store-creation
Expand Down Expand Up @@ -192,7 +192,7 @@ class MySnapshotStore extends SnapshotStore {

object PersistenceTCKDoc {
object example1 {
import org.apache.pekko.persistence.journal.JournalSpec
import pekko.persistence.journal.JournalSpec

// #journal-tck-scala
class MyJournalSpec
Expand All @@ -208,7 +208,7 @@ object PersistenceTCKDoc {
// #journal-tck-scala
}
object example2 {
import org.apache.pekko.persistence.snapshot.SnapshotStoreSpec
import pekko.persistence.snapshot.SnapshotStoreSpec

// #snapshot-store-tck-scala
class MySnapshotStoreSpec
Expand All @@ -223,7 +223,7 @@ object PersistenceTCKDoc {
// #snapshot-store-tck-scala
}
object example2b {
import org.apache.pekko.persistence.state.DurableStateStoreSpec
import pekko.persistence.state.DurableStateStoreSpec

// #durable-state-tck-scala
class MyDurableStateStoreSpec
Expand All @@ -246,7 +246,7 @@ object PersistenceTCKDoc {
object example3 {
import java.io.File

import org.apache.pekko.persistence.journal.JournalSpec
import pekko.persistence.journal.JournalSpec
import org.iq80.leveldb.util.FileUtils

// #journal-tck-before-after-scala
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,16 @@ trait JournalCapabilityFlags extends CapabilityFlags {
*/
protected def supportsMetadata: CapabilityFlag

/**
* When `true` enables tests which check if the Journal supports a replay window that
* spans a deleted prefix.
* <p>
* Relates to https://github.com/apache/pekko-persistence-jdbc/pull/517.
* pekko-persistence-dynamodb doesn't yet fully support this.
* </p>
*/
protected def supportsReplayWindowSpanningDeletedPrefix: CapabilityFlag

}
//#journal-flags

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,4 +65,6 @@ class JavaJournalPerfSpec(config: Config) extends JournalPerfSpec(config) {
override protected def supportsRejectingNonSerializableObjects: CapabilityFlag = CapabilityFlag.on()

override protected def supportsSerialization: CapabilityFlag = CapabilityFlag.on()

override protected def supportsReplayWindowSpanningDeletedPrefix: CapabilityFlag = CapabilityFlag.on()
}
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@ abstract class JournalSpec(config: Config)

override protected def supportsMetadata: CapabilityFlag = false

override protected def supportsReplayWindowSpanningDeletedPrefix: CapabilityFlag = false

override protected def beforeEach(): Unit = {
super.beforeEach()
senderProbe = TestProbe()
Expand Down Expand Up @@ -259,16 +261,6 @@ abstract class JournalSpec(config: Config)
receiverProbe.expectMsg(RecoverySuccess(highestSequenceNr = 5L))
}

"replay surviving messages within bounds when the replay window spans a deleted prefix" in {
val deleteProbe = TestProbe()
journal ! DeleteMessagesTo(pid, 3L, deleteProbe.ref)
deleteProbe.expectMsg(DeleteMessagesSuccess(3L))

journal ! ReplayMessages(1, 4, Long.MaxValue, pid, receiverProbe.ref)
receiverProbe.expectMsg(replayedMessage(4))
receiverProbe.expectMsg(RecoverySuccess(highestSequenceNr = 5L))
}

"return only recovery success when the upper bound falls within a deleted prefix" in {
val deleteProbe = TestProbe()
journal ! DeleteMessagesTo(pid, 3L, deleteProbe.ref)
Expand Down Expand Up @@ -409,5 +401,17 @@ abstract class JournalSpec(config: Config)

}
}

optional(flag = supportsReplayWindowSpanningDeletedPrefix) {
"replay surviving messages within bounds when the replay window spans a deleted prefix" in {
val deleteProbe = TestProbe()
journal ! DeleteMessagesTo(pid, 3L, deleteProbe.ref)
deleteProbe.expectMsg(DeleteMessagesSuccess(3L))

journal ! ReplayMessages(1, 4, Long.MaxValue, pid, receiverProbe.ref)
receiverProbe.expectMsg(replayedMessage(4))
receiverProbe.expectMsg(RecoverySuccess(highestSequenceNr = 5L))
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,5 @@ import pekko.persistence.journal.JournalSpec

class InmemJournalSpec extends JournalSpec(config = PersistenceSpec.config("inmem", "InmemJournalSpec")) {
override protected def supportsRejectingNonSerializableObjects: CapabilityFlag = CapabilityFlag.off()
override protected def supportsReplayWindowSpanningDeletedPrefix: CapabilityFlag = CapabilityFlag.on()
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,7 @@ class LeveldbJournalJavaSpec
override def supportsRejectingNonSerializableObjects = true

override def supportsSerialization = true

override def supportsReplayWindowSpanningDeletedPrefix = true

}
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,6 @@ class LeveldbJournalNativeSpec

override def supportsSerialization = true

override def supportsReplayWindowSpanningDeletedPrefix = true

}
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,6 @@ class LeveldbJournalNoAtomicPersistMultipleEventsSpec

override def supportsSerialization = true

override def supportsReplayWindowSpanningDeletedPrefix = true

}
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ class PersistenceTestKitJournalCompatSpec extends JournalSpec(config = Persisten

override protected def supportsRejectingNonSerializableObjects: CapabilityFlag = true
override protected def supportsMetadata: CapabilityFlag = true
override protected def supportsReplayWindowSpanningDeletedPrefix: CapabilityFlag = true
}

class PersistenceTestKitSnapshotStoreCompatSpec
Expand Down