fix(site-runtime,dcl): low-severity cleanups — observed adapter dispose (S9), alarm-filter overwrite warning (S10), bounded-channel comment (C2), invariant-culture condition fallback (C6)

This commit is contained in:
Joseph Doherty
2026-07-09 02:09:06 -04:00
parent 30886c9426
commit c9ac075e39
5 changed files with 84 additions and 8 deletions
@@ -81,6 +81,29 @@ public class DataConnectionActorAlarmTests : TestKit
ExpectMsg<SubscribeAlarmsResponse>(m => !m.Success && m.ErrorMessage != null);
}
[Fact]
public void SecondAlarmSubscriber_WithDifferentFilter_LogsOverwriteWarning()
{
// The adapter alarm feed carries a single shared condition filter per source;
// a second subscriber with a different filter overwrites it (last-writer-wins).
// That silent overwrite must be surfaced as a warning so a co-subscriber
// mismatch is diagnosable (S10).
var (adapter, _) = BuildAlarmAdapter();
var actor = Sys.ActorOf(Props.Create(() => new DataConnectionActor(
"conn", adapter, _options, _health, _factory, "OpcUa")));
actor.Tell(new SubscribeAlarmsRequest(
"c1", "instA", "conn", "Tank01", "AnalogLimit.Hi", DateTimeOffset.UtcNow));
ExpectMsg<SubscribeAlarmsResponse>(m => m.Success);
EventFilter.Warning(contains: "condition filter").ExpectOne(() =>
{
actor.Tell(new SubscribeAlarmsRequest(
"c2", "instB", "conn", "Tank01", "AnalogLimit.Lo", DateTimeOffset.UtcNow));
ExpectMsg<SubscribeAlarmsResponse>(m => m.Success);
});
}
// ── M2.4 (#8): conditionFilter is now applied client-side in the actor ──
[Fact]