namespace ZB.MOM.WW.ScadaBridge.HealthMonitoring.Tests; /// /// M2.16 (#30) regression coverage. /// is a cumulative (point-in-time) counter. A periodic /// SiteEventLogFailureCountReporter hosted service polls the count and /// pushes it into the collector via /// so the next /// includes it in the report /// payload as SiteEventLogWriteFailures. Unlike the per-interval /// SiteAuditWriteFailures counter, this value is NOT reset on collect — it /// carries forward whatever the most recent poller push delivered. /// public class SiteEventLogWriteFailuresMetricTests { private readonly SiteHealthCollector _collector = new(); [Fact] public void Set_Then_CollectReport_IncludesCount() { _collector.SetSiteEventLogWriteFailures(17L); var report = _collector.CollectReport("site-1"); Assert.Equal(17L, report.SiteEventLogWriteFailures); } [Fact] public void Report_Payload_Includes_SiteEventLogWriteFailures_AsZeroByDefault() { var report = _collector.CollectReport("site-1"); Assert.Equal(0L, report.SiteEventLogWriteFailures); } [Fact] public void CollectReport_DoesNotReset_SiteEventLogWriteFailures() { // This is a point-in-time cumulative count — successive CollectReport // calls before the next poller tick MUST carry forward the same value // rather than resetting to zero (which would falsely indicate no failures // between the two reports). _collector.SetSiteEventLogWriteFailures(42L); var first = _collector.CollectReport("site-1"); var second = _collector.CollectReport("site-1"); Assert.Equal(42L, first.SiteEventLogWriteFailures); Assert.Equal(42L, second.SiteEventLogWriteFailures); } [Fact] public void Set_Overwrites_Previous_Value() { _collector.SetSiteEventLogWriteFailures(5L); _collector.SetSiteEventLogWriteFailures(9L); var report = _collector.CollectReport("site-1"); Assert.Equal(9L, report.SiteEventLogWriteFailures); } }