From b0b912f1e38986b8563067dd7ce7ad9084282bfe Mon Sep 17 00:00:00 2001 From: Gregorius Soedharmo Date: Tue, 1 Oct 2024 21:12:11 +0700 Subject: [PATCH] Fix unit tests related to the Persistence DateTime bug --- .../SnapshotStoreSerializationSpec.cs | 15 ++++++++++----- .../Snapshot/SnapshotStoreSaveSnapshotSpec.cs | 6 ++++-- .../Snapshot/SnapshotStoreSpec.cs | 9 ++++++--- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/core/Akka.Persistence.TCK/Serialization/SnapshotStoreSerializationSpec.cs b/src/core/Akka.Persistence.TCK/Serialization/SnapshotStoreSerializationSpec.cs index 4d8c8fad5fa..b9575c77e3d 100644 --- a/src/core/Akka.Persistence.TCK/Serialization/SnapshotStoreSerializationSpec.cs +++ b/src/core/Akka.Persistence.TCK/Serialization/SnapshotStoreSerializationSpec.cs @@ -69,7 +69,8 @@ public virtual void SnapshotStore_should_serialize_Payload() var snapshot = new Test.MySnapshot("a"); - var metadata = new SnapshotMetadata(Pid, 1, Sys.Scheduler.Now.DateTime); + var metadata = new SnapshotMetadata(Pid, 1, Sys.Scheduler.DateTimeNow); + metadata.Timestamp.Kind.Should().Be(DateTimeKind.Utc); SnapshotStore.Tell(new SaveSnapshot(metadata, snapshot), probe.Ref); probe.ExpectMsg(); @@ -85,7 +86,8 @@ public virtual void SnapshotStore_should_serialize_Payload_with_string_manifest( var snapshot = new Test.MySnapshot2("a"); - var metadata = new SnapshotMetadata(Pid, 1, Sys.Scheduler.Now.DateTime); + var metadata = new SnapshotMetadata(Pid, 1, Sys.Scheduler.DateTimeNow); + metadata.Timestamp.Kind.Should().Be(DateTimeKind.Utc); SnapshotStore.Tell(new SaveSnapshot(metadata, snapshot), probe.Ref); probe.ExpectMsg(); @@ -107,7 +109,8 @@ public virtual void SnapshotStore_should_serialize_AtLeastOnceDeliverySnapshot() }; var atLeastOnceDeliverySnapshot = new AtLeastOnceDeliverySnapshot(17, unconfirmed); - var metadata = new SnapshotMetadata(Pid, 2, Sys.Scheduler.Now.DateTime); + var metadata = new SnapshotMetadata(Pid, 2, Sys.Scheduler.DateTimeNow); + metadata.Timestamp.Kind.Should().Be(DateTimeKind.Utc); SnapshotStore.Tell(new SaveSnapshot(metadata, atLeastOnceDeliverySnapshot), probe.Ref); probe.ExpectMsg(); @@ -123,7 +126,8 @@ public virtual void SnapshotStore_should_serialize_AtLeastOnceDeliverySnapshot_w var unconfirmed = Array.Empty(); var atLeastOnceDeliverySnapshot = new AtLeastOnceDeliverySnapshot(13, unconfirmed); - var metadata = new SnapshotMetadata(Pid, 2, Sys.Scheduler.Now.DateTime); + var metadata = new SnapshotMetadata(Pid, 2, Sys.Scheduler.DateTimeNow); + metadata.Timestamp.Kind.Should().Be(DateTimeKind.Utc); SnapshotStore.Tell(new SaveSnapshot(metadata, atLeastOnceDeliverySnapshot), probe.Ref); probe.ExpectMsg(); @@ -138,7 +142,8 @@ public virtual void SnapshotStore_should_serialize_PersistentFSMSnapshot() var persistentFSMSnapshot = new PersistentFSM.PersistentFSMSnapshot("mystate", "mydata", TimeSpan.FromDays(4)); - var metadata = new SnapshotMetadata(Pid, 2, Sys.Scheduler.Now.DateTime); + var metadata = new SnapshotMetadata(Pid, 2, Sys.Scheduler.DateTimeNow); + metadata.Timestamp.Kind.Should().Be(DateTimeKind.Utc); SnapshotStore.Tell(new SaveSnapshot(metadata, persistentFSMSnapshot), probe.Ref); probe.ExpectMsg(); diff --git a/src/core/Akka.Persistence.TCK/Snapshot/SnapshotStoreSaveSnapshotSpec.cs b/src/core/Akka.Persistence.TCK/Snapshot/SnapshotStoreSaveSnapshotSpec.cs index 035ae4a1ec4..4b5f20599d7 100644 --- a/src/core/Akka.Persistence.TCK/Snapshot/SnapshotStoreSaveSnapshotSpec.cs +++ b/src/core/Akka.Persistence.TCK/Snapshot/SnapshotStoreSaveSnapshotSpec.cs @@ -138,14 +138,16 @@ public async Task MultipleSnapshotsWithSameSeqNo() var snapshotStore = persistence.SnapshotStoreFor(null); var snap = new TestPayload(SenderProbe.Ref); - var metadata = new SnapshotMetadata(PersistenceId, 3, DateTime.Now); + var metadata = new SnapshotMetadata(PersistenceId, 3, DateTime.UtcNow); + metadata.Timestamp.Kind.Should().Be(DateTimeKind.Utc); snapshotStore.Tell(new SaveSnapshot(metadata, snap), SenderProbe); var success = await SenderProbe.ExpectMsgAsync(10.Minutes()); success.Metadata.PersistenceId.Should().Be(metadata.PersistenceId); success.Metadata.Timestamp.Should().Be(metadata.Timestamp); success.Metadata.SequenceNr.Should().Be(metadata.SequenceNr); - metadata = new SnapshotMetadata(PersistenceId, 3, DateTime.Now); + metadata = new SnapshotMetadata(PersistenceId, 3, DateTime.UtcNow); + metadata.Timestamp.Kind.Should().Be(DateTimeKind.Utc); snapshotStore.Tell(new SaveSnapshot(metadata, 3), SenderProbe); success = await SenderProbe.ExpectMsgAsync(); success.Metadata.PersistenceId.Should().Be(metadata.PersistenceId); diff --git a/src/core/Akka.Persistence.TCK/Snapshot/SnapshotStoreSpec.cs b/src/core/Akka.Persistence.TCK/Snapshot/SnapshotStoreSpec.cs index 68879cf8643..1efd1ab2514 100644 --- a/src/core/Akka.Persistence.TCK/Snapshot/SnapshotStoreSpec.cs +++ b/src/core/Akka.Persistence.TCK/Snapshot/SnapshotStoreSpec.cs @@ -102,7 +102,8 @@ private IEnumerable WriteSnapshots() { for (int i = 1; i <= 5; i++) { - var metadata = new SnapshotMetadata(Pid, i + 10, Sys.Scheduler.Now.DateTime); + var metadata = new SnapshotMetadata(Pid, i + 10, Sys.Scheduler.DateTimeNow); + metadata.Timestamp.Kind.Should().Be(DateTimeKind.Utc); SnapshotStore.Tell(new SaveSnapshot(metadata, $"s-{i}"), _senderProbe.Ref); yield return _senderProbe.ExpectMsg().Metadata; } @@ -312,7 +313,8 @@ public virtual void SnapshotStore_should_save_and_overwrite_snapshot_with_same_s [Fact] public virtual void SnapshotStore_should_save_bigger_size_snapshot() { - var metadata = new SnapshotMetadata(Pid, 100, Sys.Scheduler.Now.DateTime); + var metadata = new SnapshotMetadata(Pid, 100, Sys.Scheduler.DateTimeNow); + metadata.Timestamp.Kind.Should().Be(DateTimeKind.Utc); var bigSnapshot = new byte[SnapshotByteSizeLimit]; new Random().NextBytes(bigSnapshot); SnapshotStore.Tell(new SaveSnapshot(metadata, bigSnapshot), _senderProbe.Ref); @@ -326,7 +328,8 @@ public virtual void ShouldSerializeSnapshots() if (!SupportsSerialization) return; var probe = CreateTestProbe(); - var metadata = new SnapshotMetadata(Pid, 100L, Sys.Scheduler.Now.DateTime); + var metadata = new SnapshotMetadata(Pid, 100L, Sys.Scheduler.DateTimeNow); + metadata.Timestamp.Kind.Should().Be(DateTimeKind.Utc); var snap = new TestPayload(probe.Ref); SnapshotStore.Tell(new SaveSnapshot(metadata, snap), _senderProbe.Ref);