public async Task TrackingContext_MultipleParallelTasks_NewContextAlwaysCreated() { var results = new ConcurrentStack <bool>(); var nullChecks = new ConcurrentStack <bool>(); var runningTasks = new List <Task>(); for (int i = 0; i < 10; i++) { runningTasks.Add(Task.Run(() => { TrackingContext.ClearCurrent(); Assert.IsNull(TrackingContext.Current); ParallelTester.Test(i, results, nullChecks); })); } await Task.WhenAll(runningTasks.ToArray()); foreach (bool result in results) { Assert.IsFalse(result); } foreach (bool nullCheck in nullChecks) { Assert.IsFalse(nullCheck); } }
public async Task TrackingContext_GivenMultipleParallelTasks_ThenNewContextAlwaysCreated() { var results = new ConcurrentStack <bool>(); var nullChecks = new ConcurrentStack <bool>(); var runningTasks = new List <Task>(); for (int i = 0; i < 10; i++) { runningTasks.Add(Task.Run(() => { TrackingContext.ClearCurrent(); TrackingContext.Current.Should().BeNull(); ParallelTester.Test(i, results, nullChecks); })); } await Task.WhenAll(runningTasks.ToArray()); foreach (bool result in results) { result.Should().BeFalse(); } foreach (bool nullCheck in nullChecks) { nullCheck.Should().BeFalse(); } }