aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Utilities/Tango.TelemetryTester.CLI/MockDestinationWithFailure.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/Utilities/Tango.TelemetryTester.CLI/MockDestinationWithFailure.cs')
-rw-r--r--Software/Visual_Studio/Utilities/Tango.TelemetryTester.CLI/MockDestinationWithFailure.cs46
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() { }
+ }
+}