fix(health-monitoring): resolve HealthMonitoring-003..009 — central offline grace, register unknown-site heartbeats, test coverage
This commit is contained in:
@@ -138,6 +138,111 @@ public class SiteHealthCollectorTests
|
||||
Assert.Equal(0, report.SequenceNumber);
|
||||
}
|
||||
|
||||
// HealthMonitoring-009 regression: the remaining collector setters had no
|
||||
// "reflected in report" coverage. The following tests verify each setter's
|
||||
// value reaches CollectReport output.
|
||||
|
||||
[Fact]
|
||||
public void SetClusterNodes_ReflectedInReport()
|
||||
{
|
||||
var nodes = new List<ScadaLink.Commons.Messages.Health.NodeStatus>
|
||||
{
|
||||
new("node-a", true, "Active"),
|
||||
new("node-b", true, "Standby")
|
||||
};
|
||||
_collector.SetClusterNodes(nodes);
|
||||
|
||||
var report = _collector.CollectReport("site-1");
|
||||
|
||||
Assert.NotNull(report.ClusterNodes);
|
||||
Assert.Equal(2, report.ClusterNodes!.Count);
|
||||
Assert.Equal("node-a", report.ClusterNodes[0].Hostname);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SetInstanceCounts_ReflectedInReport()
|
||||
{
|
||||
_collector.SetInstanceCounts(deployed: 10, enabled: 7, disabled: 3);
|
||||
|
||||
var report = _collector.CollectReport("site-1");
|
||||
|
||||
Assert.Equal(10, report.DeployedInstanceCount);
|
||||
Assert.Equal(7, report.EnabledInstanceCount);
|
||||
Assert.Equal(3, report.DisabledInstanceCount);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SetParkedMessageCount_ReflectedInReport()
|
||||
{
|
||||
_collector.SetParkedMessageCount(42);
|
||||
|
||||
var report = _collector.CollectReport("site-1");
|
||||
|
||||
Assert.Equal(42, report.ParkedMessageCount);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SetNodeHostname_ReflectedInReport()
|
||||
{
|
||||
_collector.SetNodeHostname("site-host-1");
|
||||
|
||||
var report = _collector.CollectReport("site-1");
|
||||
|
||||
Assert.Equal("site-host-1", report.NodeHostname);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SetActiveNode_ReflectedInNodeRole()
|
||||
{
|
||||
_collector.SetActiveNode(true);
|
||||
Assert.Equal("Active", _collector.CollectReport("site-1").NodeRole);
|
||||
Assert.True(_collector.IsActiveNode);
|
||||
|
||||
_collector.SetActiveNode(false);
|
||||
Assert.Equal("Standby", _collector.CollectReport("site-1").NodeRole);
|
||||
Assert.False(_collector.IsActiveNode);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void UpdateTagQuality_ReflectedInReport()
|
||||
{
|
||||
_collector.UpdateTagQuality("opc-1", good: 80, bad: 15, uncertain: 5);
|
||||
|
||||
var report = _collector.CollectReport("site-1");
|
||||
|
||||
Assert.NotNull(report.DataConnectionTagQuality);
|
||||
var quality = report.DataConnectionTagQuality!["opc-1"];
|
||||
Assert.Equal(80, quality.Good);
|
||||
Assert.Equal(15, quality.Bad);
|
||||
Assert.Equal(5, quality.Uncertain);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void UpdateConnectionEndpoint_ReflectedInReport()
|
||||
{
|
||||
_collector.UpdateConnectionEndpoint("opc-1", "opc.tcp://plc-1:4840");
|
||||
|
||||
var report = _collector.CollectReport("site-1");
|
||||
|
||||
Assert.NotNull(report.DataConnectionEndpoints);
|
||||
Assert.Equal("opc.tcp://plc-1:4840", report.DataConnectionEndpoints!["opc-1"]);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SetStoreAndForwardDepths_ReflectedInReport()
|
||||
{
|
||||
_collector.SetStoreAndForwardDepths(new Dictionary<string, int>
|
||||
{
|
||||
["ExternalSystem"] = 5,
|
||||
["Notification"] = 2
|
||||
});
|
||||
|
||||
var report = _collector.CollectReport("site-1");
|
||||
|
||||
Assert.Equal(5, report.StoreAndForwardBufferDepths["ExternalSystem"]);
|
||||
Assert.Equal(2, report.StoreAndForwardBufferDepths["Notification"]);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task ThreadSafety_ConcurrentIncrements()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user