Premiere commit - Omika
This commit is contained in:
@@ -0,0 +1,131 @@
|
||||
using Omika.Core.Configuration;
|
||||
using Omika.Core.Observability;
|
||||
|
||||
namespace Omika.Tests.Observability;
|
||||
|
||||
public class SafeTelemetrySinkTests
|
||||
{
|
||||
[Fact]
|
||||
public void ValidEvent_IsAccepted()
|
||||
{
|
||||
var (sink, _, counters) = ObservabilityTestHarness.CreatePipeline();
|
||||
|
||||
sink.Track(ObservabilityTestHarness.NewEvent(TelemetryEventCodes.MobileAppStarted));
|
||||
|
||||
Assert.Equal(1L, counters.Accepted);
|
||||
Assert.Equal(0L, counters.DroppedTotal);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void NullEvent_IsDropped_WithoutThrow()
|
||||
{
|
||||
var (sink, _, counters) = ObservabilityTestHarness.CreatePipeline();
|
||||
|
||||
sink.Track(null!);
|
||||
|
||||
Assert.Equal(1L, counters.DroppedNull);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Disabled_IsDropped()
|
||||
{
|
||||
var options = new ObservabilityOptions { Enabled = false };
|
||||
var (sink, _, counters) = ObservabilityTestHarness.CreatePipeline(options);
|
||||
|
||||
sink.Track(ObservabilityTestHarness.NewEvent(TelemetryEventCodes.MobileAppStarted));
|
||||
|
||||
Assert.Equal(1L, counters.DroppedDisabled);
|
||||
Assert.Equal(0L, counters.Accepted);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ModeOff_IsDropped()
|
||||
{
|
||||
var options = new ObservabilityOptions { Mode = TelemetryMode.Off };
|
||||
var (sink, _, counters) = ObservabilityTestHarness.CreatePipeline(options);
|
||||
|
||||
sink.Track(ObservabilityTestHarness.NewEvent(TelemetryEventCodes.MobileAppStarted));
|
||||
|
||||
Assert.Equal(1L, counters.DroppedDisabled);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void LevelFiltered_IsDropped()
|
||||
{
|
||||
var options = new ObservabilityOptions { Mode = TelemetryMode.ErrorsOnly };
|
||||
var (sink, _, counters) = ObservabilityTestHarness.CreatePipeline(options);
|
||||
|
||||
sink.Track(ObservabilityTestHarness.NewEvent(TelemetryEventCodes.MobileAppStarted, level: TelemetryLevel.Info));
|
||||
|
||||
Assert.Equal(1L, counters.DroppedLevel);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void InvalidCode_IsDropped()
|
||||
{
|
||||
var (sink, _, counters) = ObservabilityTestHarness.CreatePipeline();
|
||||
|
||||
sink.Track(new TelemetryEvent { EventCode = default });
|
||||
|
||||
Assert.Equal(1L, counters.DroppedInvalid);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void MetadataTooLarge_IsDropped()
|
||||
{
|
||||
var options = new ObservabilityOptions { MaxMetadataProperties = 2 };
|
||||
var (sink, _, counters) = ObservabilityTestHarness.CreatePipeline(options);
|
||||
var metadata = TelemetryMetadata.Create(("a", 1), ("b", 2), ("c", 3));
|
||||
|
||||
sink.Track(ObservabilityTestHarness.NewEvent(
|
||||
TelemetryEventCodes.MobileAppStarted, metadata: metadata));
|
||||
|
||||
Assert.Equal(1L, counters.DroppedInvalid);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void StringTooLong_IsDropped()
|
||||
{
|
||||
var options = new ObservabilityOptions { MaxStringLength = 4 };
|
||||
var (sink, _, counters) = ObservabilityTestHarness.CreatePipeline(options);
|
||||
var metadata = TelemetryMetadata.Create(("k", new string('x', 10)));
|
||||
|
||||
sink.Track(ObservabilityTestHarness.NewEvent(
|
||||
TelemetryEventCodes.MobileAppStarted, metadata: metadata));
|
||||
|
||||
Assert.Equal(1L, counters.DroppedInvalid);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void QueueFull_IsDropped_WithQueueFullCounter()
|
||||
{
|
||||
var options = new ObservabilityOptions
|
||||
{
|
||||
P0QueueCapacity = 1,
|
||||
P1QueueCapacity = 1,
|
||||
P2QueueCapacity = 1,
|
||||
P3QueueCapacity = 1,
|
||||
P4QueueCapacity = 1
|
||||
};
|
||||
var (sink, _, counters) = ObservabilityTestHarness.CreatePipeline(options);
|
||||
|
||||
sink.Track(ObservabilityTestHarness.NewEvent(TelemetryEventCodes.MobileAppStarted));
|
||||
sink.Track(ObservabilityTestHarness.NewEvent(TelemetryEventCodes.MobileAppStarted));
|
||||
|
||||
Assert.Equal(1L, counters.Accepted);
|
||||
Assert.Equal(1L, counters.DroppedQueueFull);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Accounting_Invariant_EveryEventIsCountedOnce()
|
||||
{
|
||||
var (sink, _, counters) = ObservabilityTestHarness.CreatePipeline();
|
||||
|
||||
for (int i = 0; i < 100; i++)
|
||||
{
|
||||
sink.Track(ObservabilityTestHarness.NewEvent(TelemetryEventCodes.MobileAppStarted));
|
||||
}
|
||||
|
||||
Assert.Equal(100L, counters.Accepted + counters.DroppedTotal);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user