elsa-core/test/unit/Elsa.Diagnostics.ConsoleLogs.UnitTests/Sources/ConsoleLogSourceRegistryTests.cs
Sipke Schoorstra 43108c2e48
Add diagnostics console logs (#7462)
* feat: add diagnostics console logs

* test: avoid secret-like redaction fixtures

* fix: address console logs review feedback

* fix: harden console log capture lifecycle

* fix: report console log drop summaries

* fix: address diagnostics review cleanups
2026-05-18 02:16:46 +02:00

45 lines
1.8 KiB
C#

using Elsa.Diagnostics.ConsoleLogs.Services;
namespace Elsa.Diagnostics.ConsoleLogs.UnitTests.Sources;
public class ConsoleLogSourceRegistryTests
{
[Fact]
public void MarkSeen_AddsUnknownSourceAndRaisesChange()
{
var registry = new ConsoleLogSourceRegistry(Microsoft.Extensions.Options.Options.Create(new ConsoleLogsOptions()));
ConsoleLogSource? changed = null;
registry.SourceChanged += source => changed = source;
registry.MarkSeen("remote", DateTimeOffset.UtcNow);
Assert.NotNull(changed);
Assert.Contains(registry.List(), x => x.Id == "remote" && x.MachineName == "" && x.Health == ConsoleLogSourceHealth.Connected);
}
[Fact]
public void List_MarksOldSourcesStale()
{
var registry = new ConsoleLogSourceRegistry(Microsoft.Extensions.Options.Options.Create(new ConsoleLogsOptions { SourceHeartbeatTimeout = TimeSpan.FromSeconds(1) }));
registry.MarkSeen("remote", DateTimeOffset.UtcNow.AddMinutes(-1));
Assert.Contains(registry.List(), x => x.Id == "remote" && x.Health == ConsoleLogSourceHealth.Stale);
}
[Fact]
public void MarkSeen_AfterSourceBecameStale_RaisesConnectedChange()
{
var registry = new ConsoleLogSourceRegistry(Microsoft.Extensions.Options.Options.Create(new ConsoleLogsOptions { SourceHeartbeatTimeout = TimeSpan.FromSeconds(1) }));
var changes = new List<ConsoleLogSource>();
registry.SourceChanged += changes.Add;
registry.MarkSeen("remote", DateTimeOffset.UtcNow.AddMinutes(-1));
registry.List();
registry.MarkSeen("remote", DateTimeOffset.UtcNow);
Assert.Contains(changes, x => x.Id == "remote" && x.Health == ConsoleLogSourceHealth.Stale);
Assert.Contains(changes, x => x.Id == "remote" && x.Health == ConsoleLogSourceHealth.Connected);
}
}