fix(health-monitoring): resolve HealthMonitoring-013,014,016 — shorter-timeout cadence, options validation, injected TimeProvider; HealthMonitoring-015 left open (cross-module design decision)
This commit is contained in:
@@ -23,6 +23,18 @@ public class SiteHealthCollector : ISiteHealthCollector
|
||||
private volatile string _nodeHostname = "";
|
||||
private volatile IReadOnlyList<Commons.Messages.Health.NodeStatus>? _clusterNodes;
|
||||
private volatile bool _isActiveNode;
|
||||
private readonly TimeProvider _timeProvider;
|
||||
|
||||
/// <summary>
|
||||
/// Creates a collector. The <paramref name="timeProvider"/> stamps each
|
||||
/// report's timestamp; it defaults to <see cref="TimeProvider.System"/> and
|
||||
/// is injectable so the report timestamp is deterministically testable —
|
||||
/// consistent with the rest of the module's time-dependent classes.
|
||||
/// </summary>
|
||||
public SiteHealthCollector(TimeProvider? timeProvider = null)
|
||||
{
|
||||
_timeProvider = timeProvider ?? TimeProvider.System;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Increment the script error counter. Covers unhandled exceptions,
|
||||
@@ -148,7 +160,7 @@ public class SiteHealthCollector : ISiteHealthCollector
|
||||
return new SiteHealthReport(
|
||||
SiteId: siteId,
|
||||
SequenceNumber: 0, // Caller (HealthReportSender) assigns the sequence number
|
||||
ReportTimestamp: DateTimeOffset.UtcNow,
|
||||
ReportTimestamp: _timeProvider.GetUtcNow(),
|
||||
DataConnectionStatuses: connectionStatuses,
|
||||
TagResolutionCounts: tagResolution,
|
||||
ScriptErrorCount: scriptErrors,
|
||||
|
||||
Reference in New Issue
Block a user