diff --git a/docs/chaos/behavior.md b/docs/chaos/behavior.md index 661957e902..e62cd5b5c3 100644 --- a/docs/chaos/behavior.md +++ b/docs/chaos/behavior.md @@ -128,6 +128,28 @@ sequenceDiagram Use behavior strategies to inject delays. + +```cs +var pipeline = new ResiliencePipelineBuilder() + .AddChaosBehavior(new ChaosBehaviorStrategyOptions + { + BehaviorGenerator = static args => Task.Delay(TimeSpan.FromSeconds(7), args.Context.CancellationToken), + }) + .Build(); +``` + + ✅ DO Use the latency chaos instead as the [`ChaosLatencyStrategy`](latency.md) already correctly handles synchronous/asynchronous delay executions, cancellations, etc. + + +```cs +var pipeline = new ResiliencePipelineBuilder() + .AddChaosLatency(new ChaosLatencyStrategyOptions + { + Latency = TimeSpan.FromSeconds(7), + }) + .Build(); +``` + diff --git a/src/Snippets/Docs/Chaos.Behavior.cs b/src/Snippets/Docs/Chaos.Behavior.cs index 2f7af02343..d1e6e56c55 100644 --- a/src/Snippets/Docs/Chaos.Behavior.cs +++ b/src/Snippets/Docs/Chaos.Behavior.cs @@ -58,6 +58,31 @@ public static void BehaviorUsage() .Build(); #endregion } + + public static void AntiPattern_InjectDelay() + { + #region chaos-behavior-anti-pattern-inject-delay + var pipeline = new ResiliencePipelineBuilder() + .AddChaosBehavior(new ChaosBehaviorStrategyOptions + { + BehaviorGenerator = static args => Task.Delay(TimeSpan.FromSeconds(7), args.Context.CancellationToken), + }) + .Build(); + + #endregion + } + + public static void Pattern_InjectDelay() + { + #region chaos-behavior-pattern-inject-delay + var pipeline = new ResiliencePipelineBuilder() + .AddChaosLatency(new ChaosLatencyStrategyOptions + { + Latency = TimeSpan.FromSeconds(7), + }) + .Build(); + #endregion + } } internal class RedisConnectionException : Exception