Premiere commit - Omika
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
using Omika.Core.Configuration;
|
||||
using Omika.Core.Observability;
|
||||
|
||||
namespace Omika.Tests.Observability;
|
||||
|
||||
public class SafeTelemetrySinkFailOpenTests
|
||||
{
|
||||
[Fact]
|
||||
public void ThrowingQueue_DoesNotPropagate_AndCountsInternalDrop()
|
||||
{
|
||||
var options = new ObservabilityOptions();
|
||||
var counters = new TelemetryCounters();
|
||||
var sink = new SafeTelemetrySink(options, new ThrowingQueue(), counters);
|
||||
|
||||
sink.Track(ObservabilityTestHarness.NewEvent(TelemetryEventCodes.MobileAppStarted));
|
||||
|
||||
Assert.Equal(1L, counters.DroppedInternal);
|
||||
Assert.Equal(0L, counters.Accepted);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ThrowingQueue_Log_DoesNotPropagate()
|
||||
{
|
||||
var sink = new SafeTelemetrySink(
|
||||
new ObservabilityOptions(), new ThrowingQueue(), new TelemetryCounters());
|
||||
|
||||
sink.Log(ObservabilityTestHarness.NewDiagnostic(TelemetryEventCodes.ApiRequestFailed));
|
||||
// Aucune exception : l'assertion porte sur l'absence de levée.
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void UnknownMode_IsTreatedAsOff_NoThrow()
|
||||
{
|
||||
var options = new ObservabilityOptions { Mode = (TelemetryMode)999 };
|
||||
var (sink, _, counters) = ObservabilityTestHarness.CreatePipeline(options);
|
||||
|
||||
sink.Track(ObservabilityTestHarness.NewEvent(TelemetryEventCodes.MobileAppStarted));
|
||||
|
||||
Assert.Equal(1L, counters.DroppedDisabled);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void OutOfRangePriority_IsDowngraded_NoThrow()
|
||||
{
|
||||
var (sink, queue, counters) = ObservabilityTestHarness.CreatePipeline();
|
||||
|
||||
sink.Track(ObservabilityTestHarness.NewEvent(
|
||||
TelemetryEventCodes.MobileAppStarted, priority: (TelemetryPriority)999));
|
||||
|
||||
// Rétrogradée vers la file P4 (la moins critique).
|
||||
Assert.Equal(1, queue.GetQueueCount(TelemetryPriorityQueues.P4));
|
||||
Assert.Equal(1L, counters.Accepted);
|
||||
}
|
||||
|
||||
private sealed class ThrowingQueue : ITelemetryQueue
|
||||
{
|
||||
public bool TryEnqueue(OmikaEvent @event) => throw new InvalidOperationException("queue défaillante (test)");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user