private static void Fail(ChaosScenario scenario) { if (ShouldFail(scenario.FailureRate)) { throw new ChaosException($"The chaos monkey was naughty and injected this exception! ({scenario.Name})"); } }
private static async Task DoChaosAsync(ChaosScenario scenario) { if (IsEnabled) { if (scenario.Delay > 0) { await DelayAsync(scenario); } Fail(scenario); } }
/// <summary> /// Potentially introduce chaos in the system, for a given chaos scenario. /// </summary> /// <param name="scenario">The scenario.</param> public static Task ChaosAsync(ChaosScenario scenario) { // TODO: Assert.ParamIsNotNull(scenario, nameof(scenario)); if (IsEnabled) { return(DoChaosAsync(scenario)); } else { return(NullTask); } }
/// <summary> /// Potentially introduce chaos in the system, for a given chaos scenario. /// </summary> /// <param name="scenario">The scenario.</param> public static void Chaos(ChaosScenario scenario) { // TODO: Assert.ParamIsNotNull(scenario, nameof(scenario)); if (IsEnabled) { if (scenario.Delay > 0) { DelayAsync(scenario).Wait(); } Fail(scenario); } }
private static Task DelayAsync(ChaosScenario scenario) { Logger.Info($"Delaying {scenario.Delay}ms for chaos scenario '{scenario.Name}'"); return(Task.Delay(scenario.Delay)); }