docs(alarms): note operator/IDE toggle drives the live subtag smoke test
C6a: the rig's TestAlarm attributes are object-driven; a flip script OR a manual operator/IDE toggle drives them (confirmed live 2026-06-14). Update the how-to-run comments and Skip reason accordingly.
This commit is contained in:
@@ -16,9 +16,12 @@
|
||||
// 1. On the dev rig with AVEVA System Platform installed and Galaxy running:
|
||||
// $env:MXGATEWAY_RUN_LIVE_MXACCESS_TESTS = "1"
|
||||
// 2. Remove (or set to null) the Skip parameter on the [Fact] below.
|
||||
// 3. Run with an alarm flip script (same one used by AlarmsLiveSmokeTests)
|
||||
// so that TestMachine_001.TestAlarm001 toggles its Active/Acked subtags
|
||||
// on a ~10 s cadence.
|
||||
// 3. Drive a TestMachine alarm so its Active/Acked subtags toggle — either an
|
||||
// alarm flip script (same one used by AlarmsLiveSmokeTests, ~10 s cadence)
|
||||
// or a manual operator/IDE toggle of the alarm attribute. The rig's
|
||||
// TestAlarm attributes are object-driven, so an external MXAccess Write
|
||||
// cannot toggle them (confirmed live 2026-06-14 by toggling TestAlarm002
|
||||
// from the IDE).
|
||||
//
|
||||
// net48/x86 constraints:
|
||||
// - No init-only properties, records, index/range operators, C# 8+ pattern
|
||||
@@ -49,8 +52,9 @@ namespace ZB.MOM.WW.MxGateway.Worker.Tests.Probes;
|
||||
/// <see cref="SubtagAlarmConsumer.AcknowledgeByName"/> writes the
|
||||
/// ack-comment subtag (AckMsg) successfully.
|
||||
///
|
||||
/// Skip-gated; flip <c>Skip=null</c> on the dev rig with the alarm flip
|
||||
/// script running. The remaining live-validation item is confirming that
|
||||
/// Skip-gated; flip <c>Skip=null</c> on the dev rig with an alarm being
|
||||
/// driven (flip script or a manual operator/IDE toggle of the alarm
|
||||
/// attribute). The remaining live-validation item is confirming that
|
||||
/// the runtime MXAccess item reference path requires no intermediate
|
||||
/// alarm-condition segment (i.e. <c><Object>.<AlarmAttr>.InAlarm</c>
|
||||
/// resolves as-is).
|
||||
@@ -117,7 +121,7 @@ public sealed class AlarmSubtagLiveSmokeTests
|
||||
/// the Degraded flag and synthetic GUID are stamped, then
|
||||
/// AcknowledgeByName and verifies the ack-comment write returns 0.
|
||||
/// </summary>
|
||||
[Fact(Skip = "Live dev-rig smoke test — flip Skip=null with AVEVA + an alarm flip script running. Subtag fallback path. Field names confirmed (InAlarm/Acked/AckMsg/Priority); live-validate runtime path resolves without intermediate alarm-condition segment.")]
|
||||
[Fact(Skip = "Live dev-rig smoke test — flip Skip=null with AVEVA + an alarm being driven (flip script or manual operator/IDE toggle of the alarm attribute). Subtag fallback path. Field names confirmed (InAlarm/Acked/AckMsg/Priority); live-validate runtime path resolves without intermediate alarm-condition segment.")]
|
||||
public void SubtagFallback_FullPipelineRoundTrip_SynthesizesRaiseAndAcknowledges()
|
||||
{
|
||||
Exception? threadException = null;
|
||||
@@ -342,9 +346,10 @@ public sealed class AlarmSubtagLiveSmokeTests
|
||||
consumer.Subscribe(subscriptionExpression);
|
||||
Log("Subscribe returned OK.");
|
||||
|
||||
// 1. Wait for a Raise transition. The alarm flip script (same one
|
||||
// used by AlarmsLiveSmokeTests) writes the active subtag on a
|
||||
// ~10 s cadence. LmxSubtagAlarmSource delivers OnDataChange via
|
||||
// 1. Wait for a Raise transition. Whatever is driving the alarm — a
|
||||
// flip script (same one used by AlarmsLiveSmokeTests, ~10 s cadence)
|
||||
// or a manual operator/IDE toggle — writes the active subtag.
|
||||
// LmxSubtagAlarmSource delivers OnDataChange via
|
||||
// the Windows message pump on the STA, so we must pump messages
|
||||
// here while we wait — mirroring how AlarmsLiveSmokeTests drives
|
||||
// its WnWrapAlarmConsumer.PollOnce() from the STA in a tight loop.
|
||||
|
||||
Reference in New Issue
Block a user