Premiere commit - Omika

This commit is contained in:
2026-10-23 18:46:50 +02:00
commit 8ea76c1b24
2155 changed files with 984301 additions and 0 deletions
@@ -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.");
}
}