using System.Text.Json; using Omika.Core.Observability.External; using Omika.Core.Observability.Outbox; using Omika.Diagnostics.Models; namespace Omika.Diagnostics.Tests.Fakes; /// Fabriques d'événements et d'enregistrements JSONL pour les tests. public static class DiagnosticTestData { private static readonly JsonSerializerOptions JsonOptions = new(JsonSerializerDefaults.Web); public static RemoteDiagnosticRecord Record( Guid eventId, string eventCode = "TEST", DateTimeOffset? timestamp = null, Guid? traceId = null, Guid? sessionId = null, Guid? operationId = null, string? component = null, string level = "Info", string priority = "P2", string? errorCode = null, long? durationMs = null, Dictionary? metadata = null, string? actorKey = null, int? actorKeyVersion = null, string? clientCode = null, string? serverInstance = null, string? environment = null) { DateTimeOffset ts = timestamp ?? DateTimeOffset.UtcNow; return new RemoteDiagnosticRecord { ReceivedAtUtc = ts, BatchId = Guid.NewGuid(), IngestionTraceId = Guid.NewGuid().ToString("D"), ActorKey = actorKey, ActorKeyVersion = actorKeyVersion, ClientCode = clientCode, ServerInstance = serverInstance, Environment = environment, Event = new DiagnosticEventDto { EventId = eventId, EventCode = eventCode, TimestampUtc = ts, Level = level, Priority = priority, Component = component, TraceId = traceId, SessionId = sessionId, OperationId = operationId, ErrorCode = errorCode, DurationMs = durationMs, Metadata = metadata } }; } public static DiagnosticEventRecord Event( Guid eventId, string eventCode = "TEST", DateTimeOffset? timestamp = null, Guid? traceId = null, Guid? operationId = null, string? component = null, string level = "Info", string? errorCode = null, long? durationMs = null, string? actorKey = null, int? actorKeyVersion = null) { return new DiagnosticEventRecord { EventId = eventId, EventCode = eventCode, TimestampUtc = timestamp ?? DateTimeOffset.UtcNow, TraceId = traceId, OperationId = operationId, Component = component, Level = level, Priority = "P2", ErrorCode = errorCode, DurationMs = durationMs, ActorKey = actorKey, ActorKeyVersion = actorKeyVersion, Source = DiagnosticSources.Mobile, IngestedAtUtc = DateTimeOffset.UtcNow }; } public static string SerializeLine(RemoteDiagnosticRecord record) => JsonSerializer.Serialize(record, JsonOptions); }