56 lines
1.7 KiB
C#
56 lines
1.7 KiB
C#
using Omika.Core.Configuration;
|
|
using Omika.Core.Observability;
|
|
|
|
namespace Omika.Tests.Observability;
|
|
|
|
/// <summary>
|
|
/// Fabrique de test partagée pour le pipeline d'observabilité.
|
|
/// </summary>
|
|
internal static class ObservabilityTestHarness
|
|
{
|
|
public static (SafeTelemetrySink Sink, PriorityTelemetryQueue Queue, TelemetryCounters Counters)
|
|
CreatePipeline(ObservabilityOptions? options = null)
|
|
{
|
|
ObservabilityOptions opts = options ?? new ObservabilityOptions();
|
|
var counters = new TelemetryCounters();
|
|
var queue = new PriorityTelemetryQueue(opts, counters);
|
|
var sink = new SafeTelemetrySink(opts, queue, counters);
|
|
return (sink, queue, counters);
|
|
}
|
|
|
|
public static TelemetryEvent NewEvent(
|
|
EventCode code,
|
|
TelemetryLevel level = TelemetryLevel.Info,
|
|
TelemetryPriority? priority = null,
|
|
TelemetryMetadata? metadata = null) =>
|
|
new()
|
|
{
|
|
EventCode = code,
|
|
Level = level,
|
|
Priority = priority,
|
|
Metadata = metadata
|
|
};
|
|
|
|
public static DiagnosticEvent NewDiagnostic(
|
|
EventCode code,
|
|
TelemetryLevel level = TelemetryLevel.Info,
|
|
TelemetryPriority? priority = null) =>
|
|
new()
|
|
{
|
|
EventCode = code,
|
|
Level = level,
|
|
Priority = priority
|
|
};
|
|
|
|
public static async Task WaitUntilAsync(Func<bool> condition, int timeoutMs = 3000)
|
|
{
|
|
DateTimeOffset deadline = DateTimeOffset.UtcNow.AddMilliseconds(timeoutMs);
|
|
while (!condition() && DateTimeOffset.UtcNow < deadline)
|
|
{
|
|
await Task.Delay(10);
|
|
}
|
|
|
|
Assert.True(condition(), "La condition n'a pas été atteinte dans le délai imparti.");
|
|
}
|
|
}
|