Skip to content

Commit 24a86c8

Browse files
authored
Simmy API review Part 1 (#1909)
1 parent 2e1a2a5 commit 24a86c8

21 files changed

Lines changed: 76 additions & 45 deletions

docs/chaos/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,6 @@ All the strategies' options implement the [`MonkeyStrategyOptions`](xref:Polly.S
5151
| `InjectionRate` | 0.001 | A decimal between 0 and 1 inclusive. The strategy will inject the chaos, randomly, that proportion of the time, e.g.: if 0.2, twenty percent of calls will be randomly affected; if 0.01, one percent of calls; if 1, all calls. |
5252
| `InjectionRateGenerator` | `null` | Generates the injection rate for a given execution, which the value should be between [0, 1] (inclusive). |
5353
| `Enabled` | `false` | Determines whether the strategy is enabled or not. |
54-
| `EnabledGenerator` | `null` | The generator that indicates whether the chaos strategy is enabled for a given execution. |
54+
| `EnabledGenerator` | `null` | The generator that indicates whether the chaos strategy is enabled for a given execution. |
5555

5656
[simmy]: https://github.com/Polly-Contrib/Simmy

docs/chaos/latency.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -50,14 +50,14 @@ var optionsWithLatencyGenerator = new LatencyStrategyOptions
5050
};
5151

5252
// To get notifications when a delay is injected
53-
var optionsOnBehaviorInjected = new LatencyStrategyOptions
53+
var optionsOnLatencyInjected = new LatencyStrategyOptions
5454
{
5555
Latency = TimeSpan.FromSeconds(30),
5656
Enabled = true,
5757
InjectionRate = 0.1,
58-
OnLatency = static args =>
58+
OnLatencyInjected = static args =>
5959
{
60-
Console.WriteLine($"OnLatency, Latency: {args.Latency}, Operation: {args.Context.OperationKey}.");
60+
Console.WriteLine($"OnLatencyInjected, Latency: {args.Latency}, Operation: {args.Context.OperationKey}.");
6161
return default;
6262
}
6363
};
@@ -97,11 +97,11 @@ var pipeline = new ResiliencePipelineBuilder()
9797

9898
## Defaults
9999

100-
| Property | Default Value | Description |
101-
|--------------------|---------------|--------------------------------------------------------|
102-
| `Latency` | `30 seconds` | A `TimeSpan` indicating the delay to be injected. |
103-
| `LatencyGenerator` | `null` | Generates the latency to inject for a given execution. |
104-
| `OnLatency` | `null` | Action executed when latency is injected. |
100+
| Property | Default Value | Description |
101+
|---------------------|---------------|--------------------------------------------------------|
102+
| `Latency` | `30 seconds` | A `TimeSpan` indicating the delay to be injected. |
103+
| `LatencyGenerator` | `null` | Generates the latency to inject for a given execution. |
104+
| `OnLatencyInjected` | `null` | Action executed when latency is injected. |
105105

106106
## Diagrams
107107

src/Polly.Core/PublicAPI.Unshipped.txt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,13 @@ Polly.Simmy.Latency.LatencyStrategyOptions.Latency.set -> void
5555
Polly.Simmy.Latency.LatencyStrategyOptions.LatencyGenerator.get -> System.Func<Polly.Simmy.Latency.LatencyGeneratorArguments, System.Threading.Tasks.ValueTask<System.TimeSpan>>?
5656
Polly.Simmy.Latency.LatencyStrategyOptions.LatencyGenerator.set -> void
5757
Polly.Simmy.Latency.LatencyStrategyOptions.LatencyStrategyOptions() -> void
58-
Polly.Simmy.Latency.LatencyStrategyOptions.OnLatency.get -> System.Func<Polly.Simmy.Latency.OnLatencyArguments, System.Threading.Tasks.ValueTask>?
59-
Polly.Simmy.Latency.LatencyStrategyOptions.OnLatency.set -> void
60-
Polly.Simmy.Latency.OnLatencyArguments
61-
Polly.Simmy.Latency.OnLatencyArguments.Context.get -> Polly.ResilienceContext!
62-
Polly.Simmy.Latency.OnLatencyArguments.Latency.get -> System.TimeSpan
63-
Polly.Simmy.Latency.OnLatencyArguments.OnLatencyArguments() -> void
64-
Polly.Simmy.Latency.OnLatencyArguments.OnLatencyArguments(Polly.ResilienceContext! context, System.TimeSpan latency) -> void
58+
Polly.Simmy.Latency.LatencyStrategyOptions.OnLatencyInjected.get -> System.Func<Polly.Simmy.Latency.OnLatencyInjectedArguments, System.Threading.Tasks.ValueTask>?
59+
Polly.Simmy.Latency.LatencyStrategyOptions.OnLatencyInjected.set -> void
60+
Polly.Simmy.Latency.OnLatencyInjectedArguments
61+
Polly.Simmy.Latency.OnLatencyInjectedArguments.Context.get -> Polly.ResilienceContext!
62+
Polly.Simmy.Latency.OnLatencyInjectedArguments.Latency.get -> System.TimeSpan
63+
Polly.Simmy.Latency.OnLatencyInjectedArguments.OnLatencyInjectedArguments() -> void
64+
Polly.Simmy.Latency.OnLatencyInjectedArguments.OnLatencyInjectedArguments(Polly.ResilienceContext! context, System.TimeSpan latency) -> void
6565
Polly.Simmy.LatencyPipelineBuilderExtensions
6666
Polly.Simmy.MonkeyStrategy
6767
Polly.Simmy.MonkeyStrategy.MonkeyStrategy(Polly.Simmy.MonkeyStrategyOptions! options) -> void

src/Polly.Core/Simmy/Behavior/BehaviorConstants.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,7 @@
22

33
internal static class BehaviorConstants
44
{
5-
public const string OnBehaviorInjectedEvent = "OnBehaviorInjected";
5+
public const string DefaultName = "Chaos.Behavior";
6+
7+
public const string OnBehaviorInjectedEvent = "Chaos.OnBehavior";
68
}

src/Polly.Core/Simmy/Behavior/BehaviorStrategyOptions.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@ namespace Polly.Simmy.Behavior;
77
/// </summary>
88
public class BehaviorStrategyOptions : MonkeyStrategyOptions
99
{
10+
/// <summary>
11+
/// Initializes a new instance of the <see cref="BehaviorStrategyOptions"/> class.
12+
/// </summary>
13+
public BehaviorStrategyOptions() => Name = BehaviorConstants.DefaultName;
14+
1015
/// <summary>
1116
/// Gets or sets the delegate that's raised when the custom behavior is injected.
1217
/// </summary>

src/Polly.Core/Simmy/Fault/FaultConstants.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,7 @@
22

33
internal static class FaultConstants
44
{
5-
public const string OnFaultInjectedEvent = "OnFaultInjectedEvent";
5+
public const string DefaultName = "Chaos.Fault";
6+
7+
public const string OnFaultInjectedEvent = "Chaos.OnFault";
68
}

src/Polly.Core/Simmy/Fault/FaultStrategyOptions.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@ namespace Polly.Simmy.Fault;
77
/// </summary>
88
public class FaultStrategyOptions : MonkeyStrategyOptions
99
{
10+
/// <summary>
11+
/// Initializes a new instance of the <see cref="FaultStrategyOptions"/> class.
12+
/// </summary>
13+
public FaultStrategyOptions() => Name = FaultConstants.DefaultName;
14+
1015
/// <summary>
1116
/// Gets or sets the delegate that's raised when the outcome is injected.
1217
/// </summary>
@@ -19,8 +24,7 @@ public class FaultStrategyOptions : MonkeyStrategyOptions
1924
/// Gets or sets the fault generator to be injected for a given execution.
2025
/// </summary>
2126
/// <remarks>
22-
/// Defaults to <see langword="null"/>. Either <see cref="Fault"/> or this property is required.
23-
/// When this property is <see langword="null"/> the <see cref="Fault"/> is used.
27+
/// Defaults to <see langword="null"/>.
2428
/// </remarks>
2529
[Required]
2630
public Func<FaultGeneratorArguments, ValueTask<Exception?>>? FaultGenerator { get; set; } = default!;

src/Polly.Core/Simmy/Latency/LatencyChaosStrategy.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@ public LatencyChaosStrategy(
1515
{
1616
Latency = options.Latency;
1717
LatencyGenerator = options.LatencyGenerator is not null ? options.LatencyGenerator : (_) => new(options.Latency);
18-
OnLatency = options.OnLatency;
18+
OnLatencyInjected = options.OnLatencyInjected;
1919

2020
_telemetry = telemetry;
2121
_timeProvider = timeProvider;
2222
}
2323

24-
public Func<OnLatencyArguments, ValueTask>? OnLatency { get; }
24+
public Func<OnLatencyInjectedArguments, ValueTask>? OnLatencyInjected { get; }
2525

2626
public Func<LatencyGeneratorArguments, ValueTask<TimeSpan>> LatencyGenerator { get; }
2727

@@ -43,14 +43,14 @@ protected internal override async ValueTask<Outcome<TResult>> ExecuteCore<TResul
4343
return await StrategyHelper.ExecuteCallbackSafeAsync(callback, context, state).ConfigureAwait(context.ContinueOnCapturedContext);
4444
}
4545

46-
var args = new OnLatencyArguments(context, latency);
47-
_telemetry.Report(new(ResilienceEventSeverity.Information, LatencyConstants.OnLatencyEvent), context, args);
46+
var args = new OnLatencyInjectedArguments(context, latency);
47+
_telemetry.Report(new(ResilienceEventSeverity.Information, LatencyConstants.OnLatencyInjectedEvent), context, args);
4848

4949
await _timeProvider.DelayAsync(latency, context).ConfigureAwait(context.ContinueOnCapturedContext);
5050

51-
if (OnLatency is not null)
51+
if (OnLatencyInjected is not null)
5252
{
53-
await OnLatency(args).ConfigureAwait(context.ContinueOnCapturedContext);
53+
await OnLatencyInjected(args).ConfigureAwait(context.ContinueOnCapturedContext);
5454
}
5555
}
5656

src/Polly.Core/Simmy/Latency/LatencyConstants.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
internal static class LatencyConstants
44
{
5-
public const string OnLatencyEvent = "OnLatency";
5+
public const string DefaultName = "Chaos.Latency";
6+
7+
public const string OnLatencyInjectedEvent = "Chaos.OnLatency";
68

79
public static readonly TimeSpan DefaultLatency = TimeSpan.FromSeconds(30);
810
}

src/Polly.Core/Simmy/Latency/LatencyStrategyOptions.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,18 @@
77
/// </summary>
88
public class LatencyStrategyOptions : MonkeyStrategyOptions
99
{
10+
/// <summary>
11+
/// Initializes a new instance of the <see cref="LatencyStrategyOptions"/> class.
12+
/// </summary>
13+
public LatencyStrategyOptions() => Name = LatencyConstants.DefaultName;
14+
1015
/// <summary>
1116
/// Gets or sets the delegate that's raised when a delay occurs.
1217
/// </summary>
1318
/// <remarks>
1419
/// Defaults to <see langword="null"/>.
1520
/// </remarks>
16-
public Func<OnLatencyArguments, ValueTask>? OnLatency { get; set; }
21+
public Func<OnLatencyInjectedArguments, ValueTask>? OnLatencyInjected { get; set; }
1722

1823
/// <summary>
1924
/// Gets or sets the latency generator that generates the delay for a given execution.

0 commit comments

Comments
 (0)