Exemplo n.º 1
0
        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();
            }
        }