From 9debfbf84aedd691af6b91fc0a46236d3572bb8b Mon Sep 17 00:00:00 2001 From: Martin Tomka Date: Thu, 10 Aug 2023 09:39:36 +0200 Subject: [PATCH] Add new metering tests to cover uncovered lines --- .../ResilienceTelemetryDiagnosticSourceTests.cs | 16 +++++++++++++++- test/Polly.TestUtils/TestUtilities.cs | 7 ++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/test/Polly.Extensions.Tests/Telemetry/ResilienceTelemetryDiagnosticSourceTests.cs b/test/Polly.Extensions.Tests/Telemetry/ResilienceTelemetryDiagnosticSourceTests.cs index dcb3c4dd73..1268e5c392 100644 --- a/test/Polly.Extensions.Tests/Telemetry/ResilienceTelemetryDiagnosticSourceTests.cs +++ b/test/Polly.Extensions.Tests/Telemetry/ResilienceTelemetryDiagnosticSourceTests.cs @@ -12,8 +12,8 @@ public class ResilienceTelemetryDiagnosticSourceTests : IDisposable private readonly FakeLogger _logger; private readonly ILoggerFactory _loggerFactory; private readonly List _events = new(); - private readonly IDisposable _metering; private Action? _onEvent; + private IDisposable _metering; public ResilienceTelemetryDiagnosticSourceTests() { @@ -290,6 +290,20 @@ public void WriteExecutionAttemptEvent_Metering_Ok(bool noOutcome, bool exceptio _events.Single(v => v.Name == "execution-attempt-duration").Measurement.Should().Be(50000); } + [Fact] + public void WriteExecutionAttemptEvent_ShouldBeSkipped() + { + _metering.Dispose(); + _metering = TestUtilities.EnablePollyMetering(_events, _ => false); + + var telemetry = Create(); + var attemptArg = new ExecutionAttemptArguments(5, TimeSpan.FromSeconds(50), true); + ReportEvent(telemetry, Outcome.FromResult(true), context: ResilienceContextPool.Shared.Get("op-key").WithResultType(), arg: attemptArg); + + var events = GetEvents("execution-attempt-duration"); + events.Should().HaveCount(0); + } + [InlineData(1)] [InlineData(100)] [Theory] diff --git a/test/Polly.TestUtils/TestUtilities.cs b/test/Polly.TestUtils/TestUtilities.cs index 2e8d783958..1ea4cdd3ca 100644 --- a/test/Polly.TestUtils/TestUtilities.cs +++ b/test/Polly.TestUtils/TestUtilities.cs @@ -52,7 +52,7 @@ public static ILoggerFactory CreateLoggerFactory(out FakeLogger logger) return loggerFactory; } - public static IDisposable EnablePollyMetering(ICollection events) + public static IDisposable EnablePollyMetering(ICollection events, Predicate? shouldListen = null) { var stateStr = Guid.NewGuid().ToString(); var meterListener = new MeterListener @@ -61,6 +61,11 @@ public static IDisposable EnablePollyMetering(ICollection events) { if (instrument.Meter.Name == "Polly") { + if (shouldListen is not null && !shouldListen(instrument)) + { + return; + } + listener.EnableMeasurementEvents(instrument, stateStr); } }