Premiere commit - Omika
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
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.");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user