public async Task Test_PersistentActor_Work()
{
// create
{
var eventLog = new List<string>();
var actor = ActorOfAsTestActorRef<TestNotepadActor>(Props.Create<TestNotepadActor>("notepad1", eventLog));
var a = actor.Cast<NotepadRef>();
await a.Clear();
await a.Write("Apple");
await a.Write("Banana");
await a.FlushSnapshot();
await a.Write("Cinamon");
var doc = await a.GetDocument();
await a.CastToIActorRef().GracefulStop(TimeSpan.FromSeconds(5), InterfacedPoisonPill.Instance);
Assert.Equal(new List<string> { "Apple", "Banana", "Cinamon" }, doc);
Assert.Equal(new List<string>(), eventLog);
}
// incarnation from snapshot & journal
{
var eventLog = new List<string>();
var actor = ActorOfAsTestActorRef<TestNotepadActor>(Props.Create<TestNotepadActor>("notepad1", eventLog));
var a = actor.Cast<NotepadRef>();
var doc = await a.GetDocument();
Assert.Equal(new List<string> { "Apple", "Banana", "Cinamon" }, doc);
Assert.Equal(new List<string>
{
"OnRecover(SnapshotOffer)",
"OnRecover(NotepadWriteEvent)"
}, eventLog);
}
}
}