diff options
Diffstat (limited to 'Software/Visual_Studio/Utilities/Tango.TelemetryTester.CLI/MockDestinationWithFailure.cs')
| -rw-r--r-- | Software/Visual_Studio/Utilities/Tango.TelemetryTester.CLI/MockDestinationWithFailure.cs | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/Software/Visual_Studio/Utilities/Tango.TelemetryTester.CLI/MockDestinationWithFailure.cs b/Software/Visual_Studio/Utilities/Tango.TelemetryTester.CLI/MockDestinationWithFailure.cs new file mode 100644 index 000000000..400dbf3ef --- /dev/null +++ b/Software/Visual_Studio/Utilities/Tango.TelemetryTester.CLI/MockDestinationWithFailure.cs @@ -0,0 +1,46 @@ +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<string> ReceivedPayloads { get; } = new List<string>(); + 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<TelemetrySourceTypes> SupportedSourceTypes => new[] + { + TelemetrySourceTypes.Streaming, + TelemetrySourceTypes.ExternalStorage, + TelemetrySourceTypes.PendingStorage + }; + + public Task<bool> IsAvailable() => Task.FromResult(true); + + public Task Publish(TelemetryPublishPackage package, List<KeyValuePair<string, string>> 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() { } + } +} |
