From 02a194471d2e98a2d61c79272b48a621ab70d23b Mon Sep 17 00:00:00 2001 From: martintmk <103487740+martintmk@users.noreply.github.com> Date: Fri, 21 Jul 2023 09:26:42 +0200 Subject: [PATCH] API Review Feedback (1) (#1420) --- .../Utils/EmptyResilienceOptions.cs | 1 - .../CircuitBreaker/CircuitBreakerConstants.cs | 2 - .../CircuitBreakerStrategyOptions.cs | 6 -- src/Polly.Core/Fallback/FallbackConstants.cs | 3 - .../FallbackStrategyOptions.TResult.cs | 6 -- src/Polly.Core/Hedging/HedgingConstants.cs | 2 - .../Hedging/HedgingStrategyOptions.TResult.cs | 6 -- src/Polly.Core/PublicAPI.Unshipped.txt | 17 +----- .../Registry/ResilienceStrategyRegistry.cs | 3 +- src/Polly.Core/ResilienceContext.cs | 6 +- src/Polly.Core/ResilienceProperties.cs | 55 +------------------ .../ResilienceStrategyBuilderBase.cs | 3 +- .../ResilienceStrategyBuilderContext.cs | 9 +-- .../ResilienceStrategyBuilderExtensions.cs | 2 - src/Polly.Core/ResilienceStrategyOptions.cs | 13 +---- src/Polly.Core/Retry/RetryConstants.cs | 6 +- .../Retry/RetryResilienceStrategy.cs | 10 +--- .../Retry/RetryStrategyOptions.TResult.cs | 10 +--- src/Polly.Core/Retry/RetryStrategyOptions.cs | 4 -- .../Telemetry/ResilienceTelemetrySource.cs | 4 +- src/Polly.Core/Telemetry/TelemetryUtil.cs | 5 +- src/Polly.Core/Timeout/TimeoutConstants.cs | 2 - .../Timeout/TimeoutStrategyOptions.cs | 6 -- .../Utils/ReloadableResilienceStrategy.cs | 4 -- src/Polly.Extensions/README.md | 2 - src/Polly.Extensions/Telemetry/Log.cs | 6 +- .../ResilienceTelemetryDiagnosticSource.cs | 3 - .../Telemetry/ResilienceTelemetryTags.cs | 2 - .../PublicAPI.Unshipped.txt | 1 - .../RateLimiterConstants.cs | 2 - .../RateLimiterStrategyOptions.cs | 6 -- .../AdvancedCircuitBreakerOptionsTests.cs | 6 +- .../SimpleCircuitBreakerOptionsTests.cs | 6 +- .../Fallback/FallbackStrategyOptionsTests.cs | 1 - .../HedgingExecutionContextTests.cs | 6 +- .../Hedging/Controller/TaskExecutionTests.cs | 6 +- .../Hedging/HedgingResilienceStrategyTests.cs | 2 +- .../Hedging/HedgingStrategyOptionsTests.cs | 1 - .../ResilienceContextTests.cs | 2 +- .../ResiliencePropertiesTests.cs | 36 +----------- .../ResilienceStrategyBuilderContextTests.cs | 4 +- .../ResilienceStrategyBuilderTests.cs | 12 ++-- .../ResilienceStrategyOptionsTests.cs | 3 +- .../Retry/RetryConstantsTests.cs | 4 +- .../Retry/RetryResilienceStrategyTests.cs | 25 --------- .../Retry/RetryStrategyOptionsTests.cs | 3 +- .../ResilienceStrategyTelemetryTests.cs | 7 +-- .../Telemetry/TelemetryEventArgumentsTests.cs | 2 +- .../Telemetry/TelemetryUtilTests.cs | 5 +- .../Timeout/TimeoutConstantsTests.cs | 1 - .../Timeout/TimeoutStrategyOptionsTests.cs | 1 - .../ReloadableResilienceStrategyTests.cs | 2 - .../IssuesTests.StrategiesPerEndpoint_1365.cs | 6 +- .../ReloadableResilienceStrategyTests.cs | 2 - ...esilienceTelemetryDiagnosticSourceTests.cs | 25 ++++----- .../RateLimiterConstantsTests.cs | 1 - .../RateLimiterResilienceStrategyTests.cs | 3 +- .../RateLimiterStrategyOptionsTests.cs | 1 - .../TestResilienceStrategyOptions.cs | 1 - test/Polly.TestUtils/TestUtilities.cs | 9 ++- 60 files changed, 69 insertions(+), 321 deletions(-) diff --git a/bench/Polly.Core.Benchmarks/Utils/EmptyResilienceOptions.cs b/bench/Polly.Core.Benchmarks/Utils/EmptyResilienceOptions.cs index c02fa3fc57d..7e563f8689c 100644 --- a/bench/Polly.Core.Benchmarks/Utils/EmptyResilienceOptions.cs +++ b/bench/Polly.Core.Benchmarks/Utils/EmptyResilienceOptions.cs @@ -2,5 +2,4 @@ internal sealed class EmptyResilienceOptions : ResilienceStrategyOptions { - public override string StrategyType => "Empty"; } diff --git a/src/Polly.Core/CircuitBreaker/CircuitBreakerConstants.cs b/src/Polly.Core/CircuitBreaker/CircuitBreakerConstants.cs index fd162b10447..ad9b6b2aab0 100644 --- a/src/Polly.Core/CircuitBreaker/CircuitBreakerConstants.cs +++ b/src/Polly.Core/CircuitBreaker/CircuitBreakerConstants.cs @@ -2,8 +2,6 @@ namespace Polly.CircuitBreaker; internal static class CircuitBreakerConstants { - public const string StrategyType = "CircuitBreaker"; - public const string OnCircuitClosed = "OnCircuitClosed"; public const string OnHalfOpenEvent = "OnCircuitHalfOpened"; diff --git a/src/Polly.Core/CircuitBreaker/CircuitBreakerStrategyOptions.cs b/src/Polly.Core/CircuitBreaker/CircuitBreakerStrategyOptions.cs index da30948b6a2..c55cc6aa596 100644 --- a/src/Polly.Core/CircuitBreaker/CircuitBreakerStrategyOptions.cs +++ b/src/Polly.Core/CircuitBreaker/CircuitBreakerStrategyOptions.cs @@ -17,12 +17,6 @@ namespace Polly.CircuitBreaker; /// public abstract class CircuitBreakerStrategyOptions : ResilienceStrategyOptions { - /// - /// Gets the strategy type. - /// - /// Returns CircuitBreaker value. - public sealed override string StrategyType => CircuitBreakerConstants.StrategyType; - #pragma warning disable IL2026 // Addressed with DynamicDependency on ValidationHelper.Validate method /// /// Gets or sets the duration of break the circuit will stay open before resetting. diff --git a/src/Polly.Core/Fallback/FallbackConstants.cs b/src/Polly.Core/Fallback/FallbackConstants.cs index 832055d3230..bc5913cf7a9 100644 --- a/src/Polly.Core/Fallback/FallbackConstants.cs +++ b/src/Polly.Core/Fallback/FallbackConstants.cs @@ -3,8 +3,5 @@ namespace Polly.Fallback; internal static class FallbackConstants { public const string OnFallback = "OnFallback"; - - public const string StrategyType = "Fallback"; - } diff --git a/src/Polly.Core/Fallback/FallbackStrategyOptions.TResult.cs b/src/Polly.Core/Fallback/FallbackStrategyOptions.TResult.cs index 6487a0ed480..1f4e55420d4 100644 --- a/src/Polly.Core/Fallback/FallbackStrategyOptions.TResult.cs +++ b/src/Polly.Core/Fallback/FallbackStrategyOptions.TResult.cs @@ -8,12 +8,6 @@ namespace Polly.Fallback; /// The result type. public class FallbackStrategyOptions : ResilienceStrategyOptions { - /// - /// Gets the strategy type. - /// - /// Returns Fallback value. - public sealed override string StrategyType => FallbackConstants.StrategyType; - /// /// Gets or sets the outcome predicate for determining whether a fallback should be executed. /// diff --git a/src/Polly.Core/Hedging/HedgingConstants.cs b/src/Polly.Core/Hedging/HedgingConstants.cs index 7f2365b55cf..adcd2134831 100644 --- a/src/Polly.Core/Hedging/HedgingConstants.cs +++ b/src/Polly.Core/Hedging/HedgingConstants.cs @@ -2,8 +2,6 @@ namespace Polly.Hedging; internal static class HedgingConstants { - public const string StrategyType = "Hedging"; - public const string OnHedgingEventName = "OnHedging"; public const int DefaultMaxHedgedAttempts = 2; diff --git a/src/Polly.Core/Hedging/HedgingStrategyOptions.TResult.cs b/src/Polly.Core/Hedging/HedgingStrategyOptions.TResult.cs index 1627e6020bb..49a543a604e 100644 --- a/src/Polly.Core/Hedging/HedgingStrategyOptions.TResult.cs +++ b/src/Polly.Core/Hedging/HedgingStrategyOptions.TResult.cs @@ -8,12 +8,6 @@ namespace Polly.Hedging; /// The type of result these hedging options handle. public class HedgingStrategyOptions : ResilienceStrategyOptions { - /// - /// Gets the strategy type. - /// - /// Returns Hedging value. - public sealed override string StrategyType => HedgingConstants.StrategyType; - /// /// Gets or sets the minimal time of waiting before spawning a new hedged call. /// diff --git a/src/Polly.Core/PublicAPI.Unshipped.txt b/src/Polly.Core/PublicAPI.Unshipped.txt index 31833b0d5b3..fae340ce5c5 100644 --- a/src/Polly.Core/PublicAPI.Unshipped.txt +++ b/src/Polly.Core/PublicAPI.Unshipped.txt @@ -2,8 +2,6 @@ abstract Polly.Registry.ResilienceStrategyProvider.TryGetStrategy(TKey key, out Polly.ResilienceStrategy? strategy) -> bool abstract Polly.Registry.ResilienceStrategyProvider.TryGetStrategy(TKey key, out Polly.ResilienceStrategy? strategy) -> bool abstract Polly.ResilienceStrategy.ExecuteCoreAsync(System.Func>>! callback, Polly.ResilienceContext! context, TState state) -> System.Threading.Tasks.ValueTask> -abstract Polly.ResilienceStrategyOptions.StrategyType.get -> string! -const Polly.Retry.RetryStrategyOptions.InfiniteRetryCount = -1 -> int override Polly.Outcome.ToString() -> string! override Polly.Registry.ResilienceStrategyRegistry.TryGetStrategy(TKey key, out Polly.ResilienceStrategy? strategy) -> bool override Polly.Registry.ResilienceStrategyRegistry.TryGetStrategy(TKey key, out Polly.ResilienceStrategy? strategy) -> bool @@ -11,11 +9,6 @@ override Polly.ResiliencePropertyKey.Equals(object? obj) -> bool override Polly.ResiliencePropertyKey.GetHashCode() -> int override Polly.ResiliencePropertyKey.ToString() -> string! override Polly.Telemetry.ResilienceEvent.ToString() -> string! -override sealed Polly.CircuitBreaker.CircuitBreakerStrategyOptions.StrategyType.get -> string! -override sealed Polly.Fallback.FallbackStrategyOptions.StrategyType.get -> string! -override sealed Polly.Hedging.HedgingStrategyOptions.StrategyType.get -> string! -override sealed Polly.Retry.RetryStrategyOptions.StrategyType.get -> string! -override sealed Polly.Timeout.TimeoutStrategyOptions.StrategyType.get -> string! Polly.CircuitBreaker.AdvancedCircuitBreakerStrategyOptions Polly.CircuitBreaker.AdvancedCircuitBreakerStrategyOptions.AdvancedCircuitBreakerStrategyOptions() -> void Polly.CircuitBreaker.AdvancedCircuitBreakerStrategyOptions @@ -220,7 +213,6 @@ Polly.Registry.ResilienceStrategyRegistryOptions.StrategyComparer.get -> S Polly.Registry.ResilienceStrategyRegistryOptions.StrategyComparer.set -> void Polly.ResilienceContext Polly.ResilienceContext.CancellationToken.get -> System.Threading.CancellationToken -Polly.ResilienceContext.CancellationToken.set -> void Polly.ResilienceContext.ContinueOnCapturedContext.get -> bool Polly.ResilienceContext.ContinueOnCapturedContext.set -> void Polly.ResilienceContext.IsSynchronous.get -> bool @@ -298,13 +290,12 @@ Polly.ResilienceStrategyBuilderContext.BuilderInstanceName.get -> string? Polly.ResilienceStrategyBuilderContext.BuilderName.get -> string? Polly.ResilienceStrategyBuilderContext.BuilderProperties.get -> Polly.ResilienceProperties! Polly.ResilienceStrategyBuilderContext.StrategyName.get -> string? -Polly.ResilienceStrategyBuilderContext.StrategyType.get -> string! Polly.ResilienceStrategyBuilderContext.Telemetry.get -> Polly.Telemetry.ResilienceStrategyTelemetry! Polly.ResilienceStrategyBuilderExtensions Polly.ResilienceStrategyOptions Polly.ResilienceStrategyOptions.ResilienceStrategyOptions() -> void -Polly.ResilienceStrategyOptions.StrategyName.get -> string? -Polly.ResilienceStrategyOptions.StrategyName.set -> void +Polly.ResilienceStrategyOptions.Name.get -> string? +Polly.ResilienceStrategyOptions.Name.set -> void Polly.ResilienceValidationContext Polly.ResilienceValidationContext.Instance.get -> object! Polly.ResilienceValidationContext.PrimaryMessage.get -> string! @@ -381,11 +372,9 @@ Polly.Telemetry.ResilienceTelemetrySource.BuilderName.get -> string? Polly.Telemetry.ResilienceTelemetrySource.BuilderName.init -> void Polly.Telemetry.ResilienceTelemetrySource.BuilderProperties.get -> Polly.ResilienceProperties! Polly.Telemetry.ResilienceTelemetrySource.BuilderProperties.init -> void -Polly.Telemetry.ResilienceTelemetrySource.ResilienceTelemetrySource(string? BuilderName, string? BuilderInstanceName, Polly.ResilienceProperties! BuilderProperties, string? StrategyName, string! StrategyType) -> void +Polly.Telemetry.ResilienceTelemetrySource.ResilienceTelemetrySource(string? BuilderName, string? BuilderInstanceName, Polly.ResilienceProperties! BuilderProperties, string? StrategyName) -> void Polly.Telemetry.ResilienceTelemetrySource.StrategyName.get -> string? Polly.Telemetry.ResilienceTelemetrySource.StrategyName.init -> void -Polly.Telemetry.ResilienceTelemetrySource.StrategyType.get -> string! -Polly.Telemetry.ResilienceTelemetrySource.StrategyType.init -> void Polly.Telemetry.TelemetryEventArguments Polly.Telemetry.TelemetryEventArguments.Arguments.get -> object! Polly.Telemetry.TelemetryEventArguments.Context.get -> Polly.ResilienceContext! diff --git a/src/Polly.Core/Registry/ResilienceStrategyRegistry.cs b/src/Polly.Core/Registry/ResilienceStrategyRegistry.cs index f844d2ab436..87a3df1e288 100644 --- a/src/Polly.Core/Registry/ResilienceStrategyRegistry.cs +++ b/src/Polly.Core/Registry/ResilienceStrategyRegistry.cs @@ -298,8 +298,7 @@ private static ResilienceStrategy CreateStrategy( context.BuilderName, context.BuilderInstanceName, builder.Properties, - ReloadableResilienceStrategy.StrategyName, - ReloadableResilienceStrategy.StrategyType)); + null)); } private GenericRegistry GetGenericRegistry() diff --git a/src/Polly.Core/ResilienceContext.cs b/src/Polly.Core/ResilienceContext.cs index cc1885ee7b0..78f7d044ac6 100644 --- a/src/Polly.Core/ResilienceContext.cs +++ b/src/Polly.Core/ResilienceContext.cs @@ -37,9 +37,9 @@ private ResilienceContext() public string? OperationKey { get; private set; } /// - /// Gets or sets the associated with the execution. + /// Gets the associated with the execution. /// - public CancellationToken CancellationToken { get; set; } + public CancellationToken CancellationToken { get; internal set; } /// /// Gets a value indicating whether the execution is synchronous. @@ -164,7 +164,7 @@ internal bool Reset() ResultType = typeof(UnknownResult); ContinueOnCapturedContext = false; CancellationToken = default; - ((IDictionary)Properties).Clear(); + Properties.Options.Clear(); _resilienceEvents.Clear(); return true; } diff --git a/src/Polly.Core/ResilienceProperties.cs b/src/Polly.Core/ResilienceProperties.cs index 65b37607644..bb9fdbec3f0 100644 --- a/src/Polly.Core/ResilienceProperties.cs +++ b/src/Polly.Core/ResilienceProperties.cs @@ -7,7 +7,7 @@ namespace Polly; /// /// Represents a collection of custom resilience properties. /// -public sealed class ResilienceProperties : IDictionary +public sealed class ResilienceProperties { internal IDictionary Options { get; set; } = new Dictionary(); @@ -80,58 +80,5 @@ internal void Replace(ResilienceProperties other) } internal void Clear() => Options.Clear(); - - /// - object? IDictionary.this[string key] - { - get => Options[key]; - set => Options[key] = value; - } - - /// - ICollection IDictionary.Keys => Options.Keys; - - /// - ICollection IDictionary.Values => Options.Values; - - /// - int ICollection>.Count => Options.Count; - - /// - bool ICollection>.IsReadOnly => Options.IsReadOnly; - - /// - void IDictionary.Add(string key, object? value) => Options.Add(key, value); - - /// - void ICollection>.Add(KeyValuePair item) => Options.Add(item); - - /// - void ICollection>.Clear() => Options.Clear(); - - /// - bool ICollection>.Contains(KeyValuePair item) => Options.Contains(item); - - /// - bool IDictionary.ContainsKey(string key) => Options.ContainsKey(key); - - /// - void ICollection>.CopyTo(KeyValuePair[] array, int arrayIndex) => - Options.CopyTo(array, arrayIndex); - - /// - IEnumerator> IEnumerable>.GetEnumerator() => Options.GetEnumerator(); - - /// - IEnumerator IEnumerable.GetEnumerator() => ((IEnumerable)Options).GetEnumerator(); - - /// - bool IDictionary.Remove(string key) => Options.Remove(key); - - /// - bool ICollection>.Remove(KeyValuePair item) => Options.Remove(item); - - /// - bool IDictionary.TryGetValue(string key, out object? value) => Options.TryGetValue(key, out value); } diff --git a/src/Polly.Core/ResilienceStrategyBuilderBase.cs b/src/Polly.Core/ResilienceStrategyBuilderBase.cs index 92e4b273846..c4a4d297d15 100644 --- a/src/Polly.Core/ResilienceStrategyBuilderBase.cs +++ b/src/Polly.Core/ResilienceStrategyBuilderBase.cs @@ -166,8 +166,7 @@ private ResilienceStrategy CreateResilienceStrategy(Entry entry) builderName: BuilderName, builderInstanceName: InstanceName, builderProperties: Properties, - strategyName: entry.Options.StrategyName, - strategyType: entry.Options.StrategyType, + strategyName: entry.Options.Name, timeProvider: TimeProvider, isGenericBuilder: IsGenericBuilder, diagnosticSource: DiagnosticSource, diff --git a/src/Polly.Core/ResilienceStrategyBuilderContext.cs b/src/Polly.Core/ResilienceStrategyBuilderContext.cs index 27e97bbbc5b..ef597d6c046 100644 --- a/src/Polly.Core/ResilienceStrategyBuilderContext.cs +++ b/src/Polly.Core/ResilienceStrategyBuilderContext.cs @@ -14,7 +14,6 @@ internal ResilienceStrategyBuilderContext( string? builderInstanceName, ResilienceProperties builderProperties, string? strategyName, - string strategyType, TimeProvider timeProvider, bool isGenericBuilder, DiagnosticSource? diagnosticSource, @@ -24,10 +23,9 @@ internal ResilienceStrategyBuilderContext( BuilderInstanceName = builderInstanceName; BuilderProperties = builderProperties; StrategyName = strategyName; - StrategyType = strategyType; TimeProvider = timeProvider; IsGenericBuilder = isGenericBuilder; - Telemetry = TelemetryUtil.CreateTelemetry(diagnosticSource, builderName, builderInstanceName, builderProperties, strategyName, strategyType); + Telemetry = TelemetryUtil.CreateTelemetry(diagnosticSource, builderName, builderInstanceName, builderProperties, strategyName); Randomizer = randomizer; } @@ -51,11 +49,6 @@ internal ResilienceStrategyBuilderContext( /// public string? StrategyName { get; } - /// - /// Gets the type of the strategy. - /// - public string StrategyType { get; } - /// /// Gets the resilience telemetry used to report important events. /// diff --git a/src/Polly.Core/ResilienceStrategyBuilderExtensions.cs b/src/Polly.Core/ResilienceStrategyBuilderExtensions.cs index da92795899e..251c4badffc 100644 --- a/src/Polly.Core/ResilienceStrategyBuilderExtensions.cs +++ b/src/Polly.Core/ResilienceStrategyBuilderExtensions.cs @@ -73,7 +73,5 @@ public static TBuilder AddStrategy(this TBuilder builder, Func "Empty"; } } diff --git a/src/Polly.Core/ResilienceStrategyOptions.cs b/src/Polly.Core/ResilienceStrategyOptions.cs index 93638dfbc20..2ffb19f09df 100644 --- a/src/Polly.Core/ResilienceStrategyOptions.cs +++ b/src/Polly.Core/ResilienceStrategyOptions.cs @@ -9,16 +9,9 @@ public abstract class ResilienceStrategyOptions /// Gets or sets the name of the strategy. /// /// - /// This name uniquely identifies a particular instance of a specific strategy. - /// This property is also included in the telemetry that is produced by the individual resilience strategies. + /// This name uniquely identifies a particular instance of a specific strategy and is also included + /// in the telemetry that is produced by the individual resilience strategies. /// /// The default value is . - public string? StrategyName { get; set; } - - /// - /// Gets the strategy type. - /// - /// This property is also included in the telemetry that is produced by the individual resilience strategies. - /// The strategy type uniquely identifies the strategy in the telemetry. The name should be in PascalCase (i.e. Retry, CircuitBreaker, Timeout). - public abstract string StrategyType { get; } + public string? Name { get; set; } } diff --git a/src/Polly.Core/Retry/RetryConstants.cs b/src/Polly.Core/Retry/RetryConstants.cs index 794b7effdda..d45a3d12ed8 100644 --- a/src/Polly.Core/Retry/RetryConstants.cs +++ b/src/Polly.Core/Retry/RetryConstants.cs @@ -2,17 +2,13 @@ namespace Polly.Retry; internal static class RetryConstants { - public const string StrategyType = "Retry"; - public const string OnRetryEvent = "OnRetry"; public const RetryBackoffType DefaultBackoffType = RetryBackoffType.Constant; public const int DefaultRetryCount = 3; - public const int MaxRetryCount = 100; - - public const int InfiniteRetryCount = -1; + public const int MaxRetryCount = int.MaxValue; public static readonly TimeSpan DefaultBaseDelay = TimeSpan.FromSeconds(2); } diff --git a/src/Polly.Core/Retry/RetryResilienceStrategy.cs b/src/Polly.Core/Retry/RetryResilienceStrategy.cs index f4224aa1625..a28b6704ea2 100644 --- a/src/Polly.Core/Retry/RetryResilienceStrategy.cs +++ b/src/Polly.Core/Retry/RetryResilienceStrategy.cs @@ -103,13 +103,5 @@ protected override async ValueTask> ExecuteCallbackAsync(Func } } - private bool IsLastAttempt(int attempt) - { - if (RetryCount == RetryStrategyOptions.InfiniteRetryCount) - { - return false; - } - - return attempt >= RetryCount; - } + private bool IsLastAttempt(int attempt) => attempt >= RetryCount; } diff --git a/src/Polly.Core/Retry/RetryStrategyOptions.TResult.cs b/src/Polly.Core/Retry/RetryStrategyOptions.TResult.cs index d4ed56d267c..037309d7db4 100644 --- a/src/Polly.Core/Retry/RetryStrategyOptions.TResult.cs +++ b/src/Polly.Core/Retry/RetryStrategyOptions.TResult.cs @@ -8,19 +8,13 @@ namespace Polly.Retry; /// The type of result the retry strategy handles. public class RetryStrategyOptions : ResilienceStrategyOptions { - /// - /// Gets the strategy type. - /// - /// Returns Retry value. - public sealed override string StrategyType => RetryConstants.StrategyType; - /// /// Gets or sets the maximum number of retries to use, in addition to the original call. /// /// - /// The default value is 3 retries. For infinite retries use (-1). + /// The default value is 3 retries. /// - [Range(RetryStrategyOptions.InfiniteRetryCount, RetryConstants.MaxRetryCount)] + [Range(1, RetryConstants.MaxRetryCount)] public int RetryCount { get; set; } = RetryConstants.DefaultRetryCount; /// diff --git a/src/Polly.Core/Retry/RetryStrategyOptions.cs b/src/Polly.Core/Retry/RetryStrategyOptions.cs index 5838fba7055..41e3728391e 100644 --- a/src/Polly.Core/Retry/RetryStrategyOptions.cs +++ b/src/Polly.Core/Retry/RetryStrategyOptions.cs @@ -3,8 +3,4 @@ namespace Polly.Retry; /// public class RetryStrategyOptions : RetryStrategyOptions { - /// - /// Value that represents infinite retries. - /// - public const int InfiniteRetryCount = RetryConstants.InfiniteRetryCount; } diff --git a/src/Polly.Core/Telemetry/ResilienceTelemetrySource.cs b/src/Polly.Core/Telemetry/ResilienceTelemetrySource.cs index 18e680c8b7b..df58d5d47f3 100644 --- a/src/Polly.Core/Telemetry/ResilienceTelemetrySource.cs +++ b/src/Polly.Core/Telemetry/ResilienceTelemetrySource.cs @@ -7,7 +7,6 @@ namespace Polly.Telemetry; /// The builder instance name. /// The builder properties. /// The strategy name. -/// The strategy type. /// /// This class is used by the telemetry infrastructure and should not be used directly by user code. /// @@ -15,6 +14,5 @@ public sealed record class ResilienceTelemetrySource( string? BuilderName, string? BuilderInstanceName, ResilienceProperties BuilderProperties, - string? StrategyName, - string StrategyType); + string? StrategyName); diff --git a/src/Polly.Core/Telemetry/TelemetryUtil.cs b/src/Polly.Core/Telemetry/TelemetryUtil.cs index 92b75d2bf9e..07c7d02bd86 100644 --- a/src/Polly.Core/Telemetry/TelemetryUtil.cs +++ b/src/Polly.Core/Telemetry/TelemetryUtil.cs @@ -11,10 +11,9 @@ public static ResilienceStrategyTelemetry CreateTelemetry( string? builderName, string? builderInstanceName, ResilienceProperties builderProperties, - string? strategyName, - string strategyType) + string? strategyName) { - var telemetrySource = new ResilienceTelemetrySource(builderName, builderInstanceName, builderProperties, strategyName, strategyType); + var telemetrySource = new ResilienceTelemetrySource(builderName, builderInstanceName, builderProperties, strategyName); return new ResilienceStrategyTelemetry(telemetrySource, diagnosticSource); } diff --git a/src/Polly.Core/Timeout/TimeoutConstants.cs b/src/Polly.Core/Timeout/TimeoutConstants.cs index e536cf6ec61..097c654827d 100644 --- a/src/Polly.Core/Timeout/TimeoutConstants.cs +++ b/src/Polly.Core/Timeout/TimeoutConstants.cs @@ -2,7 +2,5 @@ namespace Polly.Timeout; internal static class TimeoutConstants { - public const string StrategyType = "Timeout"; - public const string OnTimeoutEvent = "OnTimeout"; } diff --git a/src/Polly.Core/Timeout/TimeoutStrategyOptions.cs b/src/Polly.Core/Timeout/TimeoutStrategyOptions.cs index 9b6fc8f650e..3b65b478efa 100644 --- a/src/Polly.Core/Timeout/TimeoutStrategyOptions.cs +++ b/src/Polly.Core/Timeout/TimeoutStrategyOptions.cs @@ -7,12 +7,6 @@ namespace Polly.Timeout; /// public class TimeoutStrategyOptions : ResilienceStrategyOptions { - /// - /// Gets the strategy type. - /// - /// Returns Timeout value. - public sealed override string StrategyType => TimeoutConstants.StrategyType; - #pragma warning disable IL2026 // Addressed with DynamicDependency on ValidationHelper.Validate method /// /// Gets or sets the default timeout. diff --git a/src/Polly.Core/Utils/ReloadableResilienceStrategy.cs b/src/Polly.Core/Utils/ReloadableResilienceStrategy.cs index 74ae6f8eba3..674ef935d68 100644 --- a/src/Polly.Core/Utils/ReloadableResilienceStrategy.cs +++ b/src/Polly.Core/Utils/ReloadableResilienceStrategy.cs @@ -4,10 +4,6 @@ namespace Polly.Utils; internal sealed class ReloadableResilienceStrategy : ResilienceStrategy { - public const string StrategyName = "ReloadableStrategy"; - - public const string StrategyType = "ReloadableStrategy"; - public const string ReloadFailedEvent = "ReloadFailed"; public const string OnReloadEvent = "OnReload"; diff --git a/src/Polly.Extensions/README.md b/src/Polly.Extensions/README.md index c080ec51675..49403c63ed0 100644 --- a/src/Polly.Extensions/README.md +++ b/src/Polly.Extensions/README.md @@ -93,7 +93,6 @@ Dimensions: |`builder-name`| The name of the builder corresponding to the resilience strategy.| |`builder-instance`| The instance name of the builder corresponding to the resilience strategy.| |`strategy-name`| The name of the strategy generating this event.| -|`strategy-type`| The type of the strategy generating this event.| |`operation-key`| The operation key associated with the call site. | |`result-type`| The result type (`string`, `HttpResponseMessage`). | |`exception-name`| The full name of the exception assigned to the execution result (`System.InvalidOperationException`). | @@ -113,7 +112,6 @@ Dimensions: |`builder-name`| The name of the builder corresponding to the resilience strategy.| |`builder-instance`| The instance name of the builder corresponding to the resilience strategy.| |`strategy-name`| The name of the strategy generating this event.| -|`strategy-type`| The type of the strategy generating this event.| |`operation-key`| The operation key associated with the call site. | |`result-type`| The result type (`string`, `HttpResponseMessage`). | |`exception-name`| The full name of the exception assigned to the execution result (`System.InvalidOperationException`). | diff --git a/src/Polly.Extensions/Telemetry/Log.cs b/src/Polly.Extensions/Telemetry/Log.cs index 0fa597f9850..3ca6726db82 100644 --- a/src/Polly.Extensions/Telemetry/Log.cs +++ b/src/Polly.Extensions/Telemetry/Log.cs @@ -12,7 +12,7 @@ internal static partial class Log EventId = 0, Message = "Resilience event occurred. " + "EventName: '{EventName}', " + - "Source: '{BuilderName}[{BuilderInstance}]/{StrategyType}[{StrategyName}]', " + + "Source: '{BuilderName}[{BuilderInstance}]/{StrategyName}', " + "Operation Key: '{OperationKey}', " + "Result: '{Result}'", EventName = "ResilienceEvent")] @@ -23,7 +23,6 @@ public static partial void ResilienceEvent( string? builderName, string? builderInstance, string? strategyName, - string strategyType, string? operationKey, object? result, Exception? exception); @@ -68,7 +67,7 @@ public static partial void StrategyExecuted( [LoggerMessage( EventId = 3, Message = "Execution attempt. " + - "Source: '{BuilderName}[{BuilderInstance}]/{StrategyType}[{StrategyName}]', " + + "Source: '{BuilderName}[{BuilderInstance}]/{StrategyName}', " + "Operation Key: '{OperationKey}', " + "Result: '{Result}', " + "Handled: '{Handled}', " + @@ -82,7 +81,6 @@ public static partial void ExecutionAttempt( string? builderName, string? builderInstance, string? strategyName, - string strategyType, string? operationKey, object? result, bool handled, diff --git a/src/Polly.Extensions/Telemetry/ResilienceTelemetryDiagnosticSource.cs b/src/Polly.Extensions/Telemetry/ResilienceTelemetryDiagnosticSource.cs index 030ea31753f..b33b45a1f01 100644 --- a/src/Polly.Extensions/Telemetry/ResilienceTelemetryDiagnosticSource.cs +++ b/src/Polly.Extensions/Telemetry/ResilienceTelemetryDiagnosticSource.cs @@ -60,7 +60,6 @@ private static void AddCommonTags(TelemetryEventArguments args, ResilienceTeleme enrichmentContext.Tags.Add(new(ResilienceTelemetryTags.BuilderName, source.BuilderName)); enrichmentContext.Tags.Add(new(ResilienceTelemetryTags.BuilderInstance, source.BuilderInstanceName)); enrichmentContext.Tags.Add(new(ResilienceTelemetryTags.StrategyName, source.StrategyName)); - enrichmentContext.Tags.Add(new(ResilienceTelemetryTags.StrategyType, source.StrategyType)); enrichmentContext.Tags.Add(new(ResilienceTelemetryTags.OperationKey, enrichmentContext.Context.OperationKey)); enrichmentContext.Tags.Add(new(ResilienceTelemetryTags.ResultType, args.Context.GetResultType())); enrichmentContext.Tags.Add(new(ResilienceTelemetryTags.ExceptionName, args.Outcome?.Exception?.GetType().FullName)); @@ -119,7 +118,6 @@ private void LogEvent(TelemetryEventArguments args) args.Source.BuilderName, args.Source.BuilderInstanceName, args.Source.StrategyName, - args.Source.StrategyType, args.Context.OperationKey, result, executionAttempt.Handled, @@ -137,7 +135,6 @@ private void LogEvent(TelemetryEventArguments args) args.Source.BuilderName, args.Source.BuilderInstanceName, args.Source.StrategyName, - args.Source.StrategyType, args.Context.OperationKey, result, args.Outcome?.Exception); diff --git a/src/Polly.Extensions/Telemetry/ResilienceTelemetryTags.cs b/src/Polly.Extensions/Telemetry/ResilienceTelemetryTags.cs index 63d955e888b..509c7b32d98 100644 --- a/src/Polly.Extensions/Telemetry/ResilienceTelemetryTags.cs +++ b/src/Polly.Extensions/Telemetry/ResilienceTelemetryTags.cs @@ -12,8 +12,6 @@ internal class ResilienceTelemetryTags public const string StrategyName = "strategy-name"; - public const string StrategyType = "strategy-type"; - public const string ResultType = "result-type"; public const string OperationKey = "operation-key"; diff --git a/src/Polly.RateLimiting/PublicAPI.Unshipped.txt b/src/Polly.RateLimiting/PublicAPI.Unshipped.txt index 8174ac0ce74..e6dfdee2b6a 100644 --- a/src/Polly.RateLimiting/PublicAPI.Unshipped.txt +++ b/src/Polly.RateLimiting/PublicAPI.Unshipped.txt @@ -1,5 +1,4 @@ #nullable enable -override sealed Polly.RateLimiting.RateLimiterStrategyOptions.StrategyType.get -> string! Polly.RateLimiterResilienceStrategyBuilderExtensions Polly.RateLimiting.OnRateLimiterRejectedArguments Polly.RateLimiting.OnRateLimiterRejectedArguments.Context.get -> Polly.ResilienceContext! diff --git a/src/Polly.RateLimiting/RateLimiterConstants.cs b/src/Polly.RateLimiting/RateLimiterConstants.cs index b36358ec72d..f56eb43f674 100644 --- a/src/Polly.RateLimiting/RateLimiterConstants.cs +++ b/src/Polly.RateLimiting/RateLimiterConstants.cs @@ -6,7 +6,5 @@ internal static class RateLimiterConstants public const int DefaultQueueLimit = 0; - public const string StrategyType = "RateLimiter"; - public const string OnRateLimiterRejectedEvent = "OnRateLimiterRejected"; } diff --git a/src/Polly.RateLimiting/RateLimiterStrategyOptions.cs b/src/Polly.RateLimiting/RateLimiterStrategyOptions.cs index be3c0231983..1eac041ee44 100644 --- a/src/Polly.RateLimiting/RateLimiterStrategyOptions.cs +++ b/src/Polly.RateLimiting/RateLimiterStrategyOptions.cs @@ -8,12 +8,6 @@ namespace Polly.RateLimiting; /// public class RateLimiterStrategyOptions : ResilienceStrategyOptions { - /// - /// Gets the strategy type. - /// - /// Returns RateLimiter value. - public sealed override string StrategyType => RateLimiterConstants.StrategyType; - /// /// Gets or sets the default rate limiter options. /// diff --git a/test/Polly.Core.Tests/CircuitBreaker/AdvancedCircuitBreakerOptionsTests.cs b/test/Polly.Core.Tests/CircuitBreaker/AdvancedCircuitBreakerOptionsTests.cs index baf58a9006e..cdd8f7233ad 100644 --- a/test/Polly.Core.Tests/CircuitBreaker/AdvancedCircuitBreakerOptionsTests.cs +++ b/test/Polly.Core.Tests/CircuitBreaker/AdvancedCircuitBreakerOptionsTests.cs @@ -18,8 +18,7 @@ public void Ctor_Defaults() options.OnClosed.Should().BeNull(); options.OnHalfOpened.Should().BeNull(); options.ShouldHandle.Should().NotBeNull(); - options.StrategyType.Should().Be("CircuitBreaker"); - options.StrategyName.Should().BeNull(); + options.Name.Should().BeNull(); // now set to min values options.FailureThreshold = 0.001; @@ -55,8 +54,7 @@ public void Ctor_Generic_Defaults() options.OnClosed.Should().BeNull(); options.OnHalfOpened.Should().BeNull(); options.ShouldHandle.Should().NotBeNull(); - options.StrategyType.Should().Be("CircuitBreaker"); - options.StrategyName.Should().BeNull(); + options.Name.Should().BeNull(); // now set to min values options.FailureThreshold = 0.001; diff --git a/test/Polly.Core.Tests/CircuitBreaker/SimpleCircuitBreakerOptionsTests.cs b/test/Polly.Core.Tests/CircuitBreaker/SimpleCircuitBreakerOptionsTests.cs index e5aeec6ae96..9a53eff2636 100644 --- a/test/Polly.Core.Tests/CircuitBreaker/SimpleCircuitBreakerOptionsTests.cs +++ b/test/Polly.Core.Tests/CircuitBreaker/SimpleCircuitBreakerOptionsTests.cs @@ -17,8 +17,7 @@ public void Ctor_Defaults() options.OnClosed.Should().BeNull(); options.OnHalfOpened.Should().BeNull(); options.ShouldHandle.Should().NotBeNull(); - options.StrategyType.Should().Be("CircuitBreaker"); - options.StrategyName.Should().BeNull(); + options.Name.Should().BeNull(); // now set to min values options.FailureThreshold = 1; @@ -50,8 +49,7 @@ public void Ctor_Generic_Defaults() options.OnClosed.Should().BeNull(); options.OnHalfOpened.Should().BeNull(); options.ShouldHandle.Should().NotBeNull(); - options.StrategyType.Should().Be("CircuitBreaker"); - options.StrategyName.Should().BeNull(); + options.Name.Should().BeNull(); // now set to min values options.FailureThreshold = 1; diff --git a/test/Polly.Core.Tests/Fallback/FallbackStrategyOptionsTests.cs b/test/Polly.Core.Tests/Fallback/FallbackStrategyOptionsTests.cs index e1f9241e7ef..828591c3c2b 100644 --- a/test/Polly.Core.Tests/Fallback/FallbackStrategyOptionsTests.cs +++ b/test/Polly.Core.Tests/Fallback/FallbackStrategyOptionsTests.cs @@ -11,7 +11,6 @@ public void Ctor_EnsureDefaults() { var options = new FallbackStrategyOptions(); - options.StrategyType.Should().Be("Fallback"); options.ShouldHandle.Should().NotBeNull(); options.OnFallback.Should().BeNull(); options.FallbackAction.Should().BeNull(); diff --git a/test/Polly.Core.Tests/Hedging/Controller/HedgingExecutionContextTests.cs b/test/Polly.Core.Tests/Hedging/Controller/HedgingExecutionContextTests.cs index b9c4f546c22..1b7ca3e8408 100644 --- a/test/Polly.Core.Tests/Hedging/Controller/HedgingExecutionContextTests.cs +++ b/test/Polly.Core.Tests/Hedging/Controller/HedgingExecutionContextTests.cs @@ -71,7 +71,7 @@ public void Initialize_Ok() context.Snapshot.Context.Properties.Should().NotBeSameAs(props); context.Snapshot.OriginalProperties.Should().BeSameAs(props); context.Snapshot.OriginalCancellationToken.Should().Be(_cts.Token); - context.Snapshot.Context.Properties.Should().HaveCount(1); + context.Snapshot.Context.Properties.Options.Should().HaveCount(1); context.IsInitialized.Should().BeTrue(); } @@ -319,12 +319,12 @@ public async Task Complete_EnsureOriginalContextPreparedWithAcceptedOutcome(bool _resilienceContext.Properties.Should().BeSameAs(originalProps); if (primary) { - _resilienceContext.Properties.Should().HaveCount(1); + _resilienceContext.Properties.Options.Should().HaveCount(1); _resilienceContext.ResilienceEvents.Should().HaveCount(1); } else { - _resilienceContext.Properties.Should().HaveCount(2); + _resilienceContext.Properties.Options.Should().HaveCount(2); _resilienceContext.ResilienceEvents.Should().HaveCount(4); } } diff --git a/test/Polly.Core.Tests/Hedging/Controller/TaskExecutionTests.cs b/test/Polly.Core.Tests/Hedging/Controller/TaskExecutionTests.cs index 0e46ae4458f..8be3604461a 100644 --- a/test/Polly.Core.Tests/Hedging/Controller/TaskExecutionTests.cs +++ b/test/Polly.Core.Tests/Hedging/Controller/TaskExecutionTests.cs @@ -235,7 +235,7 @@ public async Task ResetAsync_Ok(bool accept) // assert execution.IsAccepted.Should().BeFalse(); execution.IsHandled.Should().BeFalse(); - execution.Properties.Should().HaveCount(0); + execution.Properties.Options.Should().HaveCount(0); execution.Invoking(e => e.Context).Should().Throw(); #if !NETCOREAPP token.Invoking(t => t.WaitHandle).Should().Throw(); @@ -268,7 +268,7 @@ private void AssertPrimaryContext(ResilienceContext context, TaskExecution(); - options.StrategyType.Should().Be("Hedging"); options.ShouldHandle.Should().NotBeNull(); options.HedgingActionGenerator.Should().NotBeNull(); options.HedgingDelay.Should().Be(TimeSpan.FromSeconds(2)); diff --git a/test/Polly.Core.Tests/ResilienceContextTests.cs b/test/Polly.Core.Tests/ResilienceContextTests.cs index 6d8281489ac..0290df950a3 100644 --- a/test/Polly.Core.Tests/ResilienceContextTests.cs +++ b/test/Polly.Core.Tests/ResilienceContextTests.cs @@ -147,7 +147,7 @@ private static void AssertDefaults(ResilienceContext context) context.ResultType.Name.Should().Be("UnknownResult"); context.IsSynchronous.Should().BeFalse(); context.CancellationToken.Should().Be(CancellationToken.None); - context.Properties.Should().BeEmpty(); + context.Properties.Options.Should().BeEmpty(); context.ResilienceEvents.Should().BeEmpty(); context.OperationKey.Should().BeNull(); } diff --git a/test/Polly.Core.Tests/ResiliencePropertiesTests.cs b/test/Polly.Core.Tests/ResiliencePropertiesTests.cs index 6317dcd1de7..ffeb0282cbe 100644 --- a/test/Polly.Core.Tests/ResiliencePropertiesTests.cs +++ b/test/Polly.Core.Tests/ResiliencePropertiesTests.cs @@ -66,7 +66,7 @@ public void Clear_Ok() props.Set(key1, 12345); props.Clear(); - props.Should().HaveCount(0); + props.Options.Should().HaveCount(0); } [InlineData(true)] @@ -83,43 +83,13 @@ public void Replace_Ok(bool isRawDictionary) var otherProps = new ResilienceProperties(); if (!isRawDictionary) { - otherProps.Options = new ResilienceProperties(); + otherProps.Options = new ConcurrentDictionary(); } otherProps.Set(key2, "B"); props.Replace(otherProps); - props.Should().HaveCount(1); + props.Options.Should().HaveCount(1); props.GetValue(key2, "").Should().Be("B"); } - - [Fact] - public void DictionaryOperations_Ok() - { - IDictionary dict = new ResilienceProperties(); - - dict.TryGetValue("xyz", out var _).Should().BeFalse(); - dict.GetEnumerator().Should().NotBeNull(); - ((IEnumerable)dict).GetEnumerator().Should().NotBeNull(); - dict.IsReadOnly.Should().BeFalse(); - dict.Count.Should().Be(0); - dict.Add("dummy", 12345L); - dict.Values.Should().Contain(12345L); - dict.Keys.Should().Contain("dummy"); - dict.ContainsKey("dummy").Should().BeTrue(); - dict.Contains(new KeyValuePair("dummy", 12345L)).Should().BeTrue(); - dict.Add("dummy2", "xyz"); - dict["dummy2"].Should().Be("xyz"); - dict["dummy3"] = "abc"; - dict["dummy3"].Should().Be("abc"); - dict.Remove("dummy2").Should().BeTrue(); - dict.Remove(new KeyValuePair("not-exists", "abc")).Should().BeFalse(); - dict.Clear(); - dict.Count.Should().Be(0); - dict.Add(new KeyValuePair("dummy", "abc")); - var array = new KeyValuePair[1]; - dict.CopyTo(array, 0); - array[0].Key.Should().Be("dummy"); - array[0].Value.Should().Be("abc"); - } } diff --git a/test/Polly.Core.Tests/ResilienceStrategyBuilderContextTests.cs b/test/Polly.Core.Tests/ResilienceStrategyBuilderContextTests.cs index 71522769891..464227a012d 100644 --- a/test/Polly.Core.Tests/ResilienceStrategyBuilderContextTests.cs +++ b/test/Polly.Core.Tests/ResilienceStrategyBuilderContextTests.cs @@ -10,14 +10,13 @@ public void Ctor_EnsureDefaults() { var properties = new ResilienceProperties(); var timeProvider = new FakeTimeProvider(); - var context = new ResilienceStrategyBuilderContext("builder-name", "instance", properties, "strategy-name", "strategy-type", timeProvider, true, Mock.Of(), () => 1.0); + var context = new ResilienceStrategyBuilderContext("builder-name", "instance", properties, "strategy-name", timeProvider, true, Mock.Of(), () => 1.0); context.IsGenericBuilder.Should().BeTrue(); context.BuilderName.Should().Be("builder-name"); context.BuilderInstanceName.Should().Be("instance"); context.BuilderProperties.Should().BeSameAs(properties); context.StrategyName.Should().Be("strategy-name"); - context.StrategyType.Should().Be("strategy-type"); context.TimeProvider.Should().Be(timeProvider); context.Telemetry.Should().NotBeNull(); context.Randomizer.Should().NotBeNull(); @@ -25,6 +24,5 @@ public void Ctor_EnsureDefaults() context.Telemetry.TelemetrySource.BuilderName.Should().Be("builder-name"); context.Telemetry.TelemetrySource.BuilderProperties.Should().BeSameAs(properties); context.Telemetry.TelemetrySource.StrategyName.Should().Be("strategy-name"); - context.Telemetry.TelemetrySource.StrategyType.Should().Be("strategy-type"); } } diff --git a/test/Polly.Core.Tests/ResilienceStrategyBuilderTests.cs b/test/Polly.Core.Tests/ResilienceStrategyBuilderTests.cs index 78eb9a0175b..636f7a011b6 100644 --- a/test/Polly.Core.Tests/ResilienceStrategyBuilderTests.cs +++ b/test/Polly.Core.Tests/ResilienceStrategyBuilderTests.cs @@ -139,7 +139,7 @@ public void Validator_Ok() .WithMessage(""" The primary message. Validation Errors: - The field RetryCount must be between -1 and 100. + The field RetryCount must be between 1 and 2147483647. """); } @@ -299,7 +299,6 @@ public void BuildStrategy_EnsureCorrectContext() context.IsGenericBuilder.Should().BeFalse(); context.BuilderName.Should().Be("builder-name"); context.StrategyName.Should().Be("strategy-name"); - context.StrategyType.Should().Be("Test"); context.BuilderProperties.Should().BeSameAs(builder.Properties); context.Telemetry.Should().NotBeNull(); context.TimeProvider.Should().Be(builder.TimeProvider); @@ -308,14 +307,13 @@ public void BuildStrategy_EnsureCorrectContext() return new TestResilienceStrategy(); }, - new TestResilienceStrategyOptions { StrategyName = "strategy-name" }); + new TestResilienceStrategyOptions { Name = "strategy-name" }); builder.AddStrategy( context => { context.BuilderName.Should().Be("builder-name"); context.StrategyName.Should().Be("strategy-name-2"); - context.StrategyType.Should().Be("Test"); context.BuilderProperties.Should().BeSameAs(builder.Properties); context.Telemetry.Should().NotBeNull(); context.TimeProvider.Should().Be(builder.TimeProvider); @@ -323,7 +321,7 @@ public void BuildStrategy_EnsureCorrectContext() return new TestResilienceStrategy(); }, - new TestResilienceStrategyOptions { StrategyName = "strategy-name-2" }); + new TestResilienceStrategyOptions { Name = "strategy-name-2" }); // act builder.Build(); @@ -357,7 +355,7 @@ public void Build_OnCreatingStrategy_EnsureRespected() } [Fact] - public void EmptyOptions_Ok() => ResilienceStrategyBuilderExtensions.EmptyOptions.Instance.StrategyType.Should().Be("Empty"); + public void EmptyOptions_Ok() => ResilienceStrategyBuilderExtensions.EmptyOptions.Instance.Name.Should().BeNull(); [Fact] public void ExecuteAsync_EnsureReceivedCallbackExecutesNextStrategy() @@ -456,8 +454,6 @@ private class InvalidResilienceStrategyOptions : ResilienceStrategyOptions { [Required] public string? RequiredProperty { get; set; } - - public override string StrategyType => "Invalid"; } private class InvalidResilienceStrategyBuilder : ResilienceStrategyBuilderBase diff --git a/test/Polly.Core.Tests/ResilienceStrategyOptionsTests.cs b/test/Polly.Core.Tests/ResilienceStrategyOptionsTests.cs index 2f475c9ae7e..93e062587a3 100644 --- a/test/Polly.Core.Tests/ResilienceStrategyOptionsTests.cs +++ b/test/Polly.Core.Tests/ResilienceStrategyOptionsTests.cs @@ -7,7 +7,6 @@ public void Ctor_EnsureDefaults() { var options = new TestResilienceStrategyOptions(); - options.StrategyType.Should().Be("Test"); - options.StrategyName.Should().BeNull(); + options.Name.Should().BeNull(); } } diff --git a/test/Polly.Core.Tests/Retry/RetryConstantsTests.cs b/test/Polly.Core.Tests/Retry/RetryConstantsTests.cs index a5325620f10..f613b54a350 100644 --- a/test/Polly.Core.Tests/Retry/RetryConstantsTests.cs +++ b/test/Polly.Core.Tests/Retry/RetryConstantsTests.cs @@ -10,9 +10,7 @@ public void EnsureDefaults() RetryConstants.DefaultBackoffType.Should().Be(RetryBackoffType.Constant); RetryConstants.DefaultBaseDelay.Should().Be(TimeSpan.FromSeconds(2)); RetryConstants.DefaultRetryCount.Should().Be(3); - RetryConstants.MaxRetryCount.Should().Be(100); - RetryConstants.InfiniteRetryCount.Should().Be(-1); - RetryConstants.StrategyType.Should().Be("Retry"); + RetryConstants.MaxRetryCount.Should().Be(int.MaxValue); RetryConstants.OnRetryEvent.Should().Be("OnRetry"); } } diff --git a/test/Polly.Core.Tests/Retry/RetryResilienceStrategyTests.cs b/test/Polly.Core.Tests/Retry/RetryResilienceStrategyTests.cs index 602b2971833..fb59f3dc70e 100644 --- a/test/Polly.Core.Tests/Retry/RetryResilienceStrategyTests.cs +++ b/test/Polly.Core.Tests/Retry/RetryResilienceStrategyTests.cs @@ -131,31 +131,6 @@ public void RetryException_RetryCount_Respected() calls.Should().Be(3); } - [Fact] - public void Retry_Infinite_Respected() - { - int calls = 0; - _options.BackoffType = RetryBackoffType.Constant; - _options.OnRetry = args => - { - if (args.Arguments.Attempt > RetryConstants.MaxRetryCount) - { - throw new InvalidOperationException(); - } - - calls++; - return default; - }; - _options.ShouldHandle = args => args.Outcome.ResultPredicateAsync(0); - _options.RetryCount = RetryStrategyOptions.InfiniteRetryCount; - SetupNoDelay(); - var sut = CreateSut(); - - Assert.Throws(() => sut.Execute(() => 0)); - - calls.Should().Be(RetryConstants.MaxRetryCount + 1); - } - [Fact] public void RetryDelayGenerator_Respected() { diff --git a/test/Polly.Core.Tests/Retry/RetryStrategyOptionsTests.cs b/test/Polly.Core.Tests/Retry/RetryStrategyOptionsTests.cs index d7a9740f804..ea5bcd7c68b 100644 --- a/test/Polly.Core.Tests/Retry/RetryStrategyOptionsTests.cs +++ b/test/Polly.Core.Tests/Retry/RetryStrategyOptionsTests.cs @@ -11,7 +11,6 @@ public void Ctor_Ok() { var options = new RetryStrategyOptions(); - options.StrategyType.Should().Be("Retry"); options.ShouldHandle.Should().NotBeNull(); options.RetryDelayGenerator.Should().BeNull(); @@ -54,7 +53,7 @@ public void InvalidOptions() Invalid Options Validation Errors: - The field RetryCount must be between -1 and 100. + The field RetryCount must be between 1 and 2147483647. The field BaseDelay must be between 00:00:00 and 1.00:00:00. The ShouldHandle field is required. """); diff --git a/test/Polly.Core.Tests/Telemetry/ResilienceStrategyTelemetryTests.cs b/test/Polly.Core.Tests/Telemetry/ResilienceStrategyTelemetryTests.cs index 5891546c113..b84fe2cb42c 100644 --- a/test/Polly.Core.Tests/Telemetry/ResilienceStrategyTelemetryTests.cs +++ b/test/Polly.Core.Tests/Telemetry/ResilienceStrategyTelemetryTests.cs @@ -11,8 +11,7 @@ public class ResilienceStrategyTelemetryTests "builder", "instance", new ResilienceProperties(), - "strategy-name", - "strategy-type"), _diagnosticSource.Object); + "strategy-name"), _diagnosticSource.Object); private readonly ResilienceStrategyTelemetry _sut; @@ -31,7 +30,6 @@ public void Report_NoOutcome_OK() args.Event.Severity.Should().Be(ResilienceEventSeverity.Warning); args.Outcome.Should().BeNull(); args.Source.StrategyName.Should().Be("strategy-name"); - args.Source.StrategyType.Should().Be("strategy-type"); args.Source.BuilderProperties.Should().NotBeNull(); args.Arguments.Should().BeOfType(); args.Outcome.Should().BeNull(); @@ -57,7 +55,7 @@ public void Report_NoOutcomeWhenNotSubscribed_None() [Fact] public void ResilienceStrategyTelemetry_NoDiagnosticSource_Ok() { - var source = new ResilienceTelemetrySource("builder", "instance", new ResilienceProperties(), "strategy-name", "strategy-type"); + var source = new ResilienceTelemetrySource("builder", "instance", new ResilienceProperties(), "strategy-name"); var sut = new ResilienceStrategyTelemetry(source, null); var context = ResilienceContext.Get(); @@ -79,7 +77,6 @@ public void Report_Outcome_OK() args.Event.EventName.Should().Be("dummy-event"); args.Event.Severity.Should().Be(ResilienceEventSeverity.Warning); args.Source.StrategyName.Should().Be("strategy-name"); - args.Source.StrategyType.Should().Be("strategy-type"); args.Source.BuilderProperties.Should().NotBeNull(); args.Arguments.Should().BeOfType(); args.Outcome.Should().NotBeNull(); diff --git a/test/Polly.Core.Tests/Telemetry/TelemetryEventArgumentsTests.cs b/test/Polly.Core.Tests/Telemetry/TelemetryEventArgumentsTests.cs index 229e7820b1f..ff5dab4e58b 100644 --- a/test/Polly.Core.Tests/Telemetry/TelemetryEventArgumentsTests.cs +++ b/test/Polly.Core.Tests/Telemetry/TelemetryEventArgumentsTests.cs @@ -4,7 +4,7 @@ namespace Polly.Extensions.Tests.Telemetry; public class TelemetryEventArgumentsTests { - private readonly ResilienceTelemetrySource _source = new("builder", "instance", new ResilienceProperties(), "strategy", "type"); + private readonly ResilienceTelemetrySource _source = new("builder", "instance", new ResilienceProperties(), "strategy"); [Fact] public void Get_Ok() diff --git a/test/Polly.Core.Tests/Telemetry/TelemetryUtilTests.cs b/test/Polly.Core.Tests/Telemetry/TelemetryUtilTests.cs index ba27b61e46c..a2188860a81 100644 --- a/test/Polly.Core.Tests/Telemetry/TelemetryUtilTests.cs +++ b/test/Polly.Core.Tests/Telemetry/TelemetryUtilTests.cs @@ -8,12 +8,11 @@ public class TelemetryUtilTests [Fact] public void CreateResilienceTelemetry_Ok() { - var telemetry = TelemetryUtil.CreateTelemetry(null, "builder", "instance", new ResilienceProperties(), "strategy-name", "strategy-type"); + var telemetry = TelemetryUtil.CreateTelemetry(null, "builder", "instance", new ResilienceProperties(), "strategy-name"); telemetry.TelemetrySource.BuilderName.Should().Be("builder"); telemetry.TelemetrySource.BuilderInstanceName.Should().Be("instance"); telemetry.TelemetrySource.StrategyName.Should().Be("strategy-name"); - telemetry.TelemetrySource.StrategyType.Should().Be("strategy-type"); telemetry.DiagnosticSource.Should().BeNull(); } @@ -23,7 +22,7 @@ public void CreateResilienceTelemetry_DiagnosticSourceFromProperties_Ok() var props = new ResilienceProperties(); var source = Mock.Of(); - var telemetry = TelemetryUtil.CreateTelemetry(source, "builder", "instance", props, "strategy-name", "strategy-type"); + var telemetry = TelemetryUtil.CreateTelemetry(source, "builder", "instance", props, "strategy-name"); telemetry.DiagnosticSource.Should().Be(source); } diff --git a/test/Polly.Core.Tests/Timeout/TimeoutConstantsTests.cs b/test/Polly.Core.Tests/Timeout/TimeoutConstantsTests.cs index 6bcda6e2c94..5e1c0c8800f 100644 --- a/test/Polly.Core.Tests/Timeout/TimeoutConstantsTests.cs +++ b/test/Polly.Core.Tests/Timeout/TimeoutConstantsTests.cs @@ -8,6 +8,5 @@ public class TimeoutConstantsTests public void EnsureDefaultValues() { TimeoutConstants.OnTimeoutEvent.Should().Be("OnTimeout"); - TimeoutConstants.StrategyType.Should().Be("Timeout"); } } diff --git a/test/Polly.Core.Tests/Timeout/TimeoutStrategyOptionsTests.cs b/test/Polly.Core.Tests/Timeout/TimeoutStrategyOptionsTests.cs index ea17556bc0c..9a83f874218 100644 --- a/test/Polly.Core.Tests/Timeout/TimeoutStrategyOptionsTests.cs +++ b/test/Polly.Core.Tests/Timeout/TimeoutStrategyOptionsTests.cs @@ -13,7 +13,6 @@ public void Ctor_EnsureDefaultValues() options.TimeoutGenerator.Should().BeNull(); options.OnTimeout.Should().BeNull(); - options.StrategyType.Should().Be(TimeoutConstants.StrategyType); } [MemberData(nameof(TimeoutTestUtils.InvalidTimeouts), MemberType = typeof(TimeoutTestUtils))] diff --git a/test/Polly.Core.Tests/Utils/ReloadableResilienceStrategyTests.cs b/test/Polly.Core.Tests/Utils/ReloadableResilienceStrategyTests.cs index bd6b8f881c7..a5c22f99145 100644 --- a/test/Polly.Core.Tests/Utils/ReloadableResilienceStrategyTests.cs +++ b/test/Polly.Core.Tests/Utils/ReloadableResilienceStrategyTests.cs @@ -29,8 +29,6 @@ public void Ctor_Ok() sut.Strategy.Should().Be(strategy); - ReloadableResilienceStrategy.StrategyType.Should().Be("ReloadableStrategy"); - ReloadableResilienceStrategy.StrategyName.Should().Be("ReloadableStrategy"); ReloadableResilienceStrategy.ReloadFailedEvent.Should().Be("ReloadFailed"); } diff --git a/test/Polly.Extensions.Tests/Issues/IssuesTests.StrategiesPerEndpoint_1365.cs b/test/Polly.Extensions.Tests/Issues/IssuesTests.StrategiesPerEndpoint_1365.cs index 13e4445e70d..3f6e4aa65c2 100644 --- a/test/Polly.Extensions.Tests/Issues/IssuesTests.StrategiesPerEndpoint_1365.cs +++ b/test/Polly.Extensions.Tests/Issues/IssuesTests.StrategiesPerEndpoint_1365.cs @@ -51,7 +51,7 @@ public void StrategiesPerEndpoint_1365() { BackoffType = RetryBackoffType.ExponentialWithJitter, RetryCount = endpointOptions.Retries, - StrategyName = $"{context.StrategyKey.EndpointName}-Retry", + Name = $"{context.StrategyKey.EndpointName}-Retry", }); } @@ -59,13 +59,13 @@ public void StrategiesPerEndpoint_1365() builder.AddAdvancedCircuitBreaker(new() { BreakDuration = endpointOptions.BreakDuration, - StrategyName = $"{context.StrategyKey.EndpointName}-{context.StrategyKey.Resource}-CircuitBreaker" + Name = $"{context.StrategyKey.EndpointName}-{context.StrategyKey.Resource}-CircuitBreaker" }); // apply timeout builder.AddTimeout(new TimeoutStrategyOptions { - StrategyName = $"{context.StrategyKey.EndpointName}-Timeout", + Name = $"{context.StrategyKey.EndpointName}-Timeout", Timeout = endpointOptions.Timeout.Add(TimeSpan.FromSeconds(1)), }); }); diff --git a/test/Polly.Extensions.Tests/ReloadableResilienceStrategyTests.cs b/test/Polly.Extensions.Tests/ReloadableResilienceStrategyTests.cs index f5fbc022471..b959da2273e 100644 --- a/test/Polly.Extensions.Tests/ReloadableResilienceStrategyTests.cs +++ b/test/Polly.Extensions.Tests/ReloadableResilienceStrategyTests.cs @@ -72,8 +72,6 @@ protected override ValueTask> ExecuteCoreAsync public class ReloadableStrategyOptions : ResilienceStrategyOptions { - public override string StrategyType => "Reloadable"; - public string Tag { get; set; } = string.Empty; } diff --git a/test/Polly.Extensions.Tests/Telemetry/ResilienceTelemetryDiagnosticSourceTests.cs b/test/Polly.Extensions.Tests/Telemetry/ResilienceTelemetryDiagnosticSourceTests.cs index 53f2e7ebfa8..0be077e7a05 100644 --- a/test/Polly.Extensions.Tests/Telemetry/ResilienceTelemetryDiagnosticSourceTests.cs +++ b/test/Polly.Extensions.Tests/Telemetry/ResilienceTelemetryDiagnosticSourceTests.cs @@ -72,11 +72,11 @@ public void WriteEvent_LoggingWithOutcome_Ok(bool noOutcome) if (noOutcome) { - messages[0].Message.Should().Be("Resilience event occurred. EventName: 'my-event', Source: 'my-builder[builder-instance]/my-strategy-type[my-strategy]', Operation Key: 'op-key', Result: ''"); + messages[0].Message.Should().Be("Resilience event occurred. EventName: 'my-event', Source: 'my-builder[builder-instance]/my-strategy', Operation Key: 'op-key', Result: ''"); } else { - messages[0].Message.Should().Be("Resilience event occurred. EventName: 'my-event', Source: 'my-builder[builder-instance]/my-strategy-type[my-strategy]', Operation Key: 'op-key', Result: '200'"); + messages[0].Message.Should().Be("Resilience event occurred. EventName: 'my-event', Source: 'my-builder[builder-instance]/my-strategy', Operation Key: 'op-key', Result: '200'"); } } @@ -99,11 +99,11 @@ public void WriteEvent_LoggingWithException_Ok(bool noOutcome) if (noOutcome) { - messages[0].Message.Should().Be("Resilience event occurred. EventName: 'my-event', Source: 'my-builder[builder-instance]/my-strategy-type[my-strategy]', Operation Key: 'op-key', Result: ''"); + messages[0].Message.Should().Be("Resilience event occurred. EventName: 'my-event', Source: 'my-builder[builder-instance]/my-strategy', Operation Key: 'op-key', Result: ''"); } else { - messages[0].Message.Should().Be("Resilience event occurred. EventName: 'my-event', Source: 'my-builder[builder-instance]/my-strategy-type[my-strategy]', Operation Key: 'op-key', Result: 'Dummy message.'"); + messages[0].Message.Should().Be("Resilience event occurred. EventName: 'my-event', Source: 'my-builder[builder-instance]/my-strategy', Operation Key: 'op-key', Result: 'Dummy message.'"); } } @@ -115,7 +115,7 @@ public void WriteEvent_LoggingWithoutInstanceName_Ok() var messages = _logger.GetRecords(new EventId(0, "ResilienceEvent")).ToList(); - messages[0].Message.Should().Be("Resilience event occurred. EventName: 'my-event', Source: 'my-builder[]/my-strategy-type[my-strategy]', Operation Key: 'op-key', Result: ''"); + messages[0].Message.Should().Be("Resilience event occurred. EventName: 'my-event', Source: 'my-builder[]/my-strategy', Operation Key: 'op-key', Result: ''"); } [InlineData(ResilienceEventSeverity.Error, LogLevel.Error)] @@ -150,7 +150,7 @@ public void WriteExecutionAttempt_LoggingWithException_Ok() var messages = _logger.GetRecords(new EventId(3, "ExecutionAttempt")).ToList(); messages.Should().HaveCount(1); - messages[0].Message.Should().Be("Execution attempt. Source: 'my-builder[builder-instance]/my-strategy-type[my-strategy]', Operation Key: 'op-key', Result: 'Dummy message.', Handled: 'True', Attempt: '4', Execution Time: '123'"); + messages[0].Message.Should().Be("Execution attempt. Source: 'my-builder[builder-instance]/my-strategy', Operation Key: 'op-key', Result: 'Dummy message.', Handled: 'True', Attempt: '4', Execution Time: '123'"); } [InlineData(true, true)] @@ -170,11 +170,11 @@ public void WriteExecutionAttempt_LoggingWithOutcome_Ok(bool noOutcome, bool han if (noOutcome) { string resultString = string.Empty; - messages[0].Message.Should().Be($"Execution attempt. Source: 'my-builder[builder-instance]/my-strategy-type[my-strategy]', Operation Key: 'op-key', Result: '{resultString}', Handled: '{handled}', Attempt: '4', Execution Time: '123'"); + messages[0].Message.Should().Be($"Execution attempt. Source: 'my-builder[builder-instance]/my-strategy', Operation Key: 'op-key', Result: '{resultString}', Handled: '{handled}', Attempt: '4', Execution Time: '123'"); } else { - messages[0].Message.Should().Be($"Execution attempt. Source: 'my-builder[builder-instance]/my-strategy-type[my-strategy]', Operation Key: 'op-key', Result: '200', Handled: '{handled}', Attempt: '4', Execution Time: '123'"); + messages[0].Message.Should().Be($"Execution attempt. Source: 'my-builder[builder-instance]/my-strategy', Operation Key: 'op-key', Result: '200', Handled: '{handled}', Attempt: '4', Execution Time: '123'"); } messages[0].LogLevel.Should().Be(LogLevel.Warning); @@ -212,10 +212,9 @@ public void WriteEvent_MeteringWithoutEnrichers_Ok(bool noOutcome, bool exceptio events.Should().HaveCount(1); var ev = events[0]; - ev.Count.Should().Be(9); + ev.Count.Should().Be(8); ev["event-name"].Should().Be("my-event"); ev["event-severity"].Should().Be("Warning"); - ev["strategy-type"].Should().Be("my-strategy-type"); ev["strategy-name"].Should().Be("my-strategy"); ev["builder-instance"].Should().Be("builder-instance"); ev["operation-key"].Should().Be("op-key"); @@ -253,10 +252,9 @@ public void WriteExecutionAttemptEvent_Metering_Ok(bool noOutcome, bool exceptio events.Should().HaveCount(1); var ev = events[0]; - ev.Count.Should().Be(11); + ev.Count.Should().Be(10); ev["event-name"].Should().Be("my-event"); ev["event-severity"].Should().Be("Warning"); - ev["strategy-type"].Should().Be("my-strategy-type"); ev["strategy-name"].Should().Be("my-strategy"); ev["builder-instance"].Should().Be("builder-instance"); ev["operation-key"].Should().Be("op-key"); @@ -282,7 +280,7 @@ public void WriteExecutionAttemptEvent_Metering_Ok(bool noOutcome, bool exceptio [Theory] public void WriteEvent_MeteringWithEnrichers_Ok(int count) { - const int DefaultDimensions = 8; + const int DefaultDimensions = 7; var telemetry = Create(enrichers => { enrichers.Add(context => @@ -374,7 +372,6 @@ private static void ReportEvent( instanceName, props, "my-strategy", - "my-strategy-type", context, outcome, arg ?? new TestArguments()); diff --git a/test/Polly.RateLimiting.Tests/RateLimiterConstantsTests.cs b/test/Polly.RateLimiting.Tests/RateLimiterConstantsTests.cs index 2917bbdaafa..b1171518e37 100644 --- a/test/Polly.RateLimiting.Tests/RateLimiterConstantsTests.cs +++ b/test/Polly.RateLimiting.Tests/RateLimiterConstantsTests.cs @@ -6,6 +6,5 @@ public class RateLimiterConstantsTests public void Ctor_EnsureDefaults() { RateLimiterConstants.OnRateLimiterRejectedEvent.Should().Be("OnRateLimiterRejected"); - RateLimiterConstants.StrategyType.Should().Be("RateLimiter"); } } diff --git a/test/Polly.RateLimiting.Tests/RateLimiterResilienceStrategyTests.cs b/test/Polly.RateLimiting.Tests/RateLimiterResilienceStrategyTests.cs index 583cf49d2f8..5f129760261 100644 --- a/test/Polly.RateLimiting.Tests/RateLimiterResilienceStrategyTests.cs +++ b/test/Polly.RateLimiting.Tests/RateLimiterResilienceStrategyTests.cs @@ -70,8 +70,7 @@ public async Task Execute_LeaseRejected(bool hasEvents, bool hasRetryAfter) } var strategy = Create(); - var context = ResilienceContext.Get(); - context.CancellationToken = cts.Token; + var context = ResilienceContext.Get(cts.Token); var outcome = await strategy.ExecuteOutcomeAsync((_, _) => Outcome.FromResultAsTask("dummy"), context, "state"); outcome.Exception diff --git a/test/Polly.RateLimiting.Tests/RateLimiterStrategyOptionsTests.cs b/test/Polly.RateLimiting.Tests/RateLimiterStrategyOptionsTests.cs index b74128b1e07..cfdb9782271 100644 --- a/test/Polly.RateLimiting.Tests/RateLimiterStrategyOptionsTests.cs +++ b/test/Polly.RateLimiting.Tests/RateLimiterStrategyOptionsTests.cs @@ -7,7 +7,6 @@ public void Ctor_EnsureDefaults() { var options = new RateLimiterStrategyOptions(); - options.StrategyType.Should().Be(RateLimiterConstants.StrategyType); options.RateLimiter.Should().BeNull(); options.OnRejected.Should().BeNull(); options.DefaultRateLimiterOptions.PermitLimit.Should().Be(1000); diff --git a/test/Polly.TestUtils/TestResilienceStrategyOptions.cs b/test/Polly.TestUtils/TestResilienceStrategyOptions.cs index 4e280c71ee3..d95ac1ca582 100644 --- a/test/Polly.TestUtils/TestResilienceStrategyOptions.cs +++ b/test/Polly.TestUtils/TestResilienceStrategyOptions.cs @@ -2,5 +2,4 @@ namespace Polly.TestUtils; public sealed class TestResilienceStrategyOptions : ResilienceStrategyOptions { - public override string StrategyType => "Test"; } diff --git a/test/Polly.TestUtils/TestUtilities.cs b/test/Polly.TestUtils/TestUtilities.cs index 37aa9566245..ced5489be28 100644 --- a/test/Polly.TestUtils/TestUtilities.cs +++ b/test/Polly.TestUtils/TestUtilities.cs @@ -38,10 +38,10 @@ public static async Task AssertWithTimeoutAsync(Func assertion, TimeSpan t } public static ResilienceStrategyTelemetry CreateResilienceTelemetry(DiagnosticSource source) - => new(new ResilienceTelemetrySource("dummy-builder", "dummy-instance", new ResilienceProperties(), "strategy-name", "strategy-type"), source); + => new(new ResilienceTelemetrySource("dummy-builder", "dummy-instance", new ResilienceProperties(), "strategy-name"), source); public static ResilienceStrategyTelemetry CreateResilienceTelemetry(Action callback) - => new(new ResilienceTelemetrySource("dummy-builder", "dummy-instance", new ResilienceProperties(), "strategy-name", "strategy-type"), new CallbackDiagnosticSource(callback)); + => new(new ResilienceTelemetrySource("dummy-builder", "dummy-instance", new ResilienceProperties(), "strategy-name"), new CallbackDiagnosticSource(callback)); public static ILoggerFactory CreateLoggerFactory(out FakeLogger logger) { @@ -82,15 +82,14 @@ public static void ReportEvent( string builderName, string? instanceName, ResilienceProperties builderProperties, - string strategyName, - string strategyType, + string? strategyName, ResilienceContext context, Outcome? outcome, object arguments) #pragma warning restore S107 // Methods should not have too many parameters { source.Write(resilienceEvent.EventName, TelemetryEventArguments.Get( - new ResilienceTelemetrySource(builderName, instanceName, builderProperties, strategyName, strategyType), + new ResilienceTelemetrySource(builderName, instanceName, builderProperties, strategyName), resilienceEvent, context, outcome,