using System; using System.Collections.Generic; using System.Threading.Tasks; using Tango.Telemetry; namespace Tango.TelemetryTester.CLI { public class MockDestinationWithFailure : ITelemetryDestination { public string Name { get; set; } public List ReceivedPayloads { get; } = new List(); public int FailCountRemaining { get; private set; } public int TotalAttempts { get; private set; } = 0; public MockDestinationWithFailure(string name, int failCount) { Name = name; FailCountRemaining = failCount; } public IReadOnlyList SupportedSourceTypes => new[] { TelemetrySourceTypes.Streaming, TelemetrySourceTypes.ExternalStorage, TelemetrySourceTypes.PendingStorage }; public Task IsAvailable() => Task.FromResult(true); public Task Publish(TelemetryPublishPackage package, List> properties) { TotalAttempts++; if (FailCountRemaining-- > 0) { throw new Exception("Simulated publish failure"); } var payload = package.ToPayload(); ReceivedPayloads.Add(payload); Logger.LogInfo($"Destination '{Name}' received payload: {payload}"); return Task.CompletedTask; } public void Dispose() { } } }