@@ -2,6 +2,7 @@ package lerna.akka.entityreplication.raft.snapshot
22
33import java .util .concurrent .atomic .AtomicInteger
44import akka .actor .{ ActorRef , ActorSystem , PoisonPill }
5+ import akka .persistence .testkit .scaladsl .SnapshotTestKit
56import akka .testkit .TestKit
67import com .typesafe .config .{ Config , ConfigFactory }
78import lerna .akka .entityreplication .model .{ NormalizedEntityId , TypeName }
@@ -14,31 +15,48 @@ object ShardSnapshotStoreSuccessSpec {
1415 final case object DummyState extends KryoSerializable
1516}
1617
17- class ShardSnapshotStoreSuccessSpec extends TestKit (ActorSystem ()) with ActorSpec {
18+ class ShardSnapshotStoreSuccessSpec
19+ extends TestKit (
20+ ActorSystem (" ShardSnapshotStoreSuccessSpec" , ShardSnapshotStoreSpecBase .configWithPersistenceTestKits),
21+ )
22+ with ActorSpec {
1823 import ShardSnapshotStoreSuccessSpec ._
1924 import lerna .akka .entityreplication .raft .snapshot .SnapshotProtocol ._
2025
26+ private val snapshotTestKit = SnapshotTestKit (system)
27+ private val typeName = TypeName .from(" test" )
28+ private val memberIndex = MemberIndex (" test-role" )
2129 private [this ] val dummyEntityState = EntityState (DummyState )
2230
31+ override def beforeEach (): Unit = {
32+ super .beforeEach()
33+ snapshotTestKit.clearAll()
34+ snapshotTestKit.resetPolicy()
35+ }
36+
2337 " ShardSnapshotStore(正常系)" should {
2438
2539 " SaveSnapshot に成功した場合は SaveSnapshotSuccess が返信される" in {
26- val entityId = generateUniqueEntityId()
27- val shardSnapshotStore = createShardSnapshotStore()
28- val metadata = EntitySnapshotMetadata (entityId, LogEntryIndex .initial())
29- val snapshot = EntitySnapshot (metadata, dummyEntityState)
40+ val entityId = generateUniqueEntityId()
41+ val shardSnapshotStore = createShardSnapshotStore()
42+ val snapshotStorePersistenceId = SnapshotStore .persistenceId(typeName, entityId, memberIndex)
43+ val metadata = EntitySnapshotMetadata (entityId, LogEntryIndex .initial())
44+ val snapshot = EntitySnapshot (metadata, dummyEntityState)
3045
3146 shardSnapshotStore ! SaveSnapshot (snapshot, replyTo = testActor)
47+ snapshotTestKit.expectNextPersisted(snapshotStorePersistenceId, snapshot)
3248 expectMsg(SaveSnapshotSuccess (metadata))
3349 }
3450
3551 " FetchSnapshot に成功した場合は一度停止しても SnapshotFound でスナップショットが返信される" in {
36- val entityId = generateUniqueEntityId()
37- val shardSnapshotStore = createShardSnapshotStore()
38- val metadata = EntitySnapshotMetadata (entityId, LogEntryIndex .initial())
39- val snapshot = EntitySnapshot (metadata, dummyEntityState)
52+ val entityId = generateUniqueEntityId()
53+ val shardSnapshotStore = createShardSnapshotStore()
54+ val snapshotStorePersistenceId = SnapshotStore .persistenceId(typeName, entityId, memberIndex)
55+ val metadata = EntitySnapshotMetadata (entityId, LogEntryIndex .initial())
56+ val snapshot = EntitySnapshot (metadata, dummyEntityState)
4057
4158 shardSnapshotStore ! SaveSnapshot (snapshot, replyTo = testActor)
59+ snapshotTestKit.expectNextPersisted(snapshotStorePersistenceId, snapshot)
4260 expectMsg(SaveSnapshotSuccess (metadata))
4361
4462 // terminate SnapshotStore
@@ -84,9 +102,9 @@ class ShardSnapshotStoreSuccessSpec extends TestKit(ActorSystem()) with ActorSpe
84102 planAutoKill {
85103 childActorOf(
86104 ShardSnapshotStore .props(
87- TypeName .from( " test " ) ,
105+ typeName ,
88106 RaftSettings (additionalConfig.withFallback(system.settings.config)),
89- MemberIndex ( " test-role " ) ,
107+ memberIndex ,
90108 ),
91109 )
92110 }
0 commit comments