From f9932f2d8ec6d08dafc2e313b3e6dddb5ff71568 Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Thu, 11 Jun 2026 09:27:24 -0400 Subject: [PATCH] refactor(admin): use CorrelationId wrapper for alarm ack/shelve commands --- .../Messages/Admin/AcknowledgeAlarmCommand.cs | 6 ++++-- .../Messages/Admin/ShelveAlarmCommand.cs | 6 ++++-- .../Clients/AdminOperationsClient.cs | 4 ++-- .../AdminOperationsActorTests.cs | 10 +++++----- 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/Core/ZB.MOM.WW.OtOpcUa.Commons/Messages/Admin/AcknowledgeAlarmCommand.cs b/src/Core/ZB.MOM.WW.OtOpcUa.Commons/Messages/Admin/AcknowledgeAlarmCommand.cs index aad6289d..afdc0e1e 100644 --- a/src/Core/ZB.MOM.WW.OtOpcUa.Commons/Messages/Admin/AcknowledgeAlarmCommand.cs +++ b/src/Core/ZB.MOM.WW.OtOpcUa.Commons/Messages/Admin/AcknowledgeAlarmCommand.cs @@ -1,3 +1,5 @@ +using ZB.MOM.WW.OtOpcUa.Commons.Types; + namespace ZB.MOM.WW.OtOpcUa.Commons.Messages.Admin; /// @@ -16,7 +18,7 @@ public sealed record AcknowledgeAlarmCommand( string AlarmId, string User, string? Comment, - Guid CorrelationId); + CorrelationId CorrelationId); /// Reply for . /// True iff the command was published without error. @@ -25,4 +27,4 @@ public sealed record AcknowledgeAlarmCommand( public sealed record AcknowledgeAlarmResult( bool Ok, string? Message, - Guid CorrelationId); + CorrelationId CorrelationId); diff --git a/src/Core/ZB.MOM.WW.OtOpcUa.Commons/Messages/Admin/ShelveAlarmCommand.cs b/src/Core/ZB.MOM.WW.OtOpcUa.Commons/Messages/Admin/ShelveAlarmCommand.cs index f188ae2a..a5fe0012 100644 --- a/src/Core/ZB.MOM.WW.OtOpcUa.Commons/Messages/Admin/ShelveAlarmCommand.cs +++ b/src/Core/ZB.MOM.WW.OtOpcUa.Commons/Messages/Admin/ShelveAlarmCommand.cs @@ -1,3 +1,5 @@ +using ZB.MOM.WW.OtOpcUa.Commons.Types; + namespace ZB.MOM.WW.OtOpcUa.Commons.Messages.Admin; /// @@ -40,7 +42,7 @@ public sealed record ShelveAlarmCommand( ShelveKind Kind, DateTime? UnshelveAtUtc, string? Comment, - Guid CorrelationId); + CorrelationId CorrelationId); /// Reply for . /// True iff the command was published without error. @@ -49,4 +51,4 @@ public sealed record ShelveAlarmCommand( public sealed record ShelveAlarmResult( bool Ok, string? Message, - Guid CorrelationId); + CorrelationId CorrelationId); diff --git a/src/Server/ZB.MOM.WW.OtOpcUa.AdminUI/Clients/AdminOperationsClient.cs b/src/Server/ZB.MOM.WW.OtOpcUa.AdminUI/Clients/AdminOperationsClient.cs index 96036056..c2a29096 100644 --- a/src/Server/ZB.MOM.WW.OtOpcUa.AdminUI/Clients/AdminOperationsClient.cs +++ b/src/Server/ZB.MOM.WW.OtOpcUa.AdminUI/Clients/AdminOperationsClient.cs @@ -46,7 +46,7 @@ public sealed class AdminOperationsClient : IAdminOperationsClient public async Task AcknowledgeAlarmAsync( string alarmId, string user, string? comment, CancellationToken ct) { - var msg = new AcknowledgeAlarmCommand(alarmId, user, comment, Guid.NewGuid()); + var msg = new AcknowledgeAlarmCommand(alarmId, user, comment, CorrelationId.NewId()); using var linked = CancellationTokenSource.CreateLinkedTokenSource(ct); linked.CancelAfter(AskTimeout); return await _proxy.Ask(msg, AskTimeout, linked.Token); @@ -63,7 +63,7 @@ public sealed class AdminOperationsClient : IAdminOperationsClient public async Task ShelveAlarmAsync( string alarmId, string user, ShelveKind kind, DateTime? unshelveAtUtc, string? comment, CancellationToken ct) { - var msg = new ShelveAlarmCommand(alarmId, user, kind, unshelveAtUtc, comment, Guid.NewGuid()); + var msg = new ShelveAlarmCommand(alarmId, user, kind, unshelveAtUtc, comment, CorrelationId.NewId()); using var linked = CancellationTokenSource.CreateLinkedTokenSource(ct); linked.CancelAfter(AskTimeout); return await _proxy.Ask(msg, AskTimeout, linked.Token); diff --git a/tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests/AdminOperationsActorTests.cs b/tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests/AdminOperationsActorTests.cs index 32b82e25..df7b28a9 100644 --- a/tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests/AdminOperationsActorTests.cs +++ b/tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests/AdminOperationsActorTests.cs @@ -43,7 +43,7 @@ public sealed class AdminOperationsActorTests : ControlPlaneActorTestBase var actor = Sys.ActorOf(AdminOperationsActor.Props(dbFactory, coordinator.Ref, Enumerable.Empty())); var topicProbe = SubscribeAlarmCommandsProbe(); - var correlationId = Guid.NewGuid(); + var correlationId = CorrelationId.NewId(); actor.Tell(new AcknowledgeAlarmCommand("alarm-42", "operator-jo", "looking into it", correlationId)); var published = topicProbe.ExpectMsg(TimeSpan.FromSeconds(3)); @@ -69,7 +69,7 @@ public sealed class AdminOperationsActorTests : ControlPlaneActorTestBase var actor = Sys.ActorOf(AdminOperationsActor.Props(dbFactory, coordinator.Ref, Enumerable.Empty())); var topicProbe = SubscribeAlarmCommandsProbe(); - var correlationId = Guid.NewGuid(); + var correlationId = CorrelationId.NewId(); actor.Tell(new ShelveAlarmCommand("alarm-7", "op-kim", ShelveKind.OneShot, UnshelveAtUtc: null, Comment: null, correlationId)); var published = topicProbe.ExpectMsg(TimeSpan.FromSeconds(3)); @@ -94,7 +94,7 @@ public sealed class AdminOperationsActorTests : ControlPlaneActorTestBase var topicProbe = SubscribeAlarmCommandsProbe(); var unshelveAt = DateTime.UtcNow.AddMinutes(15); - actor.Tell(new ShelveAlarmCommand("alarm-9", "op-lee", ShelveKind.Timed, unshelveAt, Comment: "maint window", Guid.NewGuid())); + actor.Tell(new ShelveAlarmCommand("alarm-9", "op-lee", ShelveKind.Timed, unshelveAt, Comment: "maint window", CorrelationId.NewId())); var published = topicProbe.ExpectMsg(TimeSpan.FromSeconds(3)); published.AlarmId.ShouldBe("alarm-9"); @@ -116,7 +116,7 @@ public sealed class AdminOperationsActorTests : ControlPlaneActorTestBase var actor = Sys.ActorOf(AdminOperationsActor.Props(dbFactory, coordinator.Ref, Enumerable.Empty())); var topicProbe = SubscribeAlarmCommandsProbe(); - actor.Tell(new ShelveAlarmCommand("alarm-3", "op-sam", ShelveKind.Unshelve, UnshelveAtUtc: null, Comment: null, Guid.NewGuid())); + actor.Tell(new ShelveAlarmCommand("alarm-3", "op-sam", ShelveKind.Unshelve, UnshelveAtUtc: null, Comment: null, CorrelationId.NewId())); var published = topicProbe.ExpectMsg(TimeSpan.FromSeconds(3)); published.Operation.ShouldBe("Unshelve"); @@ -135,7 +135,7 @@ public sealed class AdminOperationsActorTests : ControlPlaneActorTestBase var actor = Sys.ActorOf(AdminOperationsActor.Props(dbFactory, coordinator.Ref, Enumerable.Empty())); var topicProbe = SubscribeAlarmCommandsProbe(); - actor.Tell(new ShelveAlarmCommand("alarm-1", "op-zoe", ShelveKind.Timed, UnshelveAtUtc: null, Comment: null, Guid.NewGuid())); + actor.Tell(new ShelveAlarmCommand("alarm-1", "op-zoe", ShelveKind.Timed, UnshelveAtUtc: null, Comment: null, CorrelationId.NewId())); var reply = ExpectMsg(TimeSpan.FromSeconds(3)); reply.Ok.ShouldBeFalse();