/// <summary> /// Executes a fail over test scenario. /// </summary> /// <param name="serviceName">Uri containing the service name.</param> /// <param name="handler">Progress changed handler.</param> /// <param name="duration">Duration of the test.</param> /// <param name="stabilization">Duration of the stabilization period.</param> /// <param name="token">CancellationToken instance.</param> /// <returns>Task instance.</returns> private async Task ExecuteFailoverTestScenarioAsync(Uri serviceName, ProgressChangedEventHandler handler, TimeSpan stabilization, CancellationToken token) { Console.WriteLine($"Starting Failover scenario test on {serviceName.AbsoluteUri} lasting {_duration.TotalMinutes} minutes."); FailoverTestScenarioParameters ftsp = new FailoverTestScenarioParameters(PartitionSelector.RandomOf(serviceName), _duration, stabilization); FailoverTestScenario fts = new FailoverTestScenario(_client, ftsp); fts.ProgressChanged += handler; try { await fts.ExecuteAsync(token); } catch (AggregateException ex) { CommonExceptionHandler.OutputInnerExceptions(ex); } catch (Exception ex) { Console.WriteLine($"FaultTest.RunAsync Exception: {ex.Message} at {ex.StackTrace}"); } }
/// <summary> /// Executes a chaos over test scenario. /// </summary> /// <param name="serviceName">Uri containing the service name.</param> /// <param name="handler">Progress changed handler.</param> /// <param name="duration">Duration of the test.</param> /// <param name="stabilization">Duration of the stabilization period.</param> /// <param name="token">CancellationToken instance.</param> /// <returns>Task instance.</returns> private async Task ExecuteChaosTestScenarioAsync(Uri serviceName, ProgressChangedEventHandler handler, TimeSpan stabilization, CancellationToken token) { const int MaxConcurrentFaults = 3; const bool EnableMoveReplicaFaults = true; Console.WriteLine($"Starting chaos scenario test on {serviceName.AbsoluteUri} lasting {_duration.TotalMinutes} minutes."); ChaosTestScenarioParameters ctsp = new ChaosTestScenarioParameters(stabilization, MaxConcurrentFaults, EnableMoveReplicaFaults, _duration); ChaosTestScenario cts = new ChaosTestScenario(_client, ctsp); cts.ProgressChanged += handler; try { await cts.ExecuteAsync(token); } catch (AggregateException ex) { CommonExceptionHandler.OutputInnerExceptions(ex); } catch (Exception ex) { Console.WriteLine($"FaultTest.RunAsync Exception: {ex.Message} at {ex.StackTrace}"); } }