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:
+23
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user