Specify RunContinuationsAsynchronously in DNS telemetry test (#56368)
authorMiha Zupan <mihazupan.zupan1@gmail.com>
Tue, 27 Jul 2021 13:31:34 +0000 (06:31 -0700)
committerGitHub <noreply@github.com>
Tue, 27 Jul 2021 13:31:34 +0000 (06:31 -0700)
src/libraries/System.Net.NameResolution/tests/FunctionalTests/TelemetryTest.cs

index 0a03229..1bd8d41 100644 (file)
@@ -164,11 +164,13 @@ namespace System.Net.NameResolution.Tests
                 using var listener = new TestEventListener("System.Net.NameResolution", EventLevel.Informational);
                 listener.AddActivityTracking();
 
-                TaskCompletionSource firstResolutionStart = new();
-                TaskCompletionSource secondResolutionStop = new();
+                TaskCompletionSource firstResolutionStart = new(TaskCreationOptions.RunContinuationsAsynchronously);
+                TaskCompletionSource secondResolutionStop = new(TaskCreationOptions.RunContinuationsAsynchronously);
 
                 List<(string EventName, Guid ActivityId)> events = new();
 
+                bool? callbackWaitTimedOut = null;
+
                 await listener.RunWithCallbackAsync(e =>
                 {
                     if (e.EventName == "ResolutionStart" || e.EventName == "ResolutionStop")
@@ -178,7 +180,7 @@ namespace System.Net.NameResolution.Tests
 
                     if (e.EventName == "ResolutionStart" && firstResolutionStart.TrySetResult())
                     {
-                        secondResolutionStop.Task.Wait();
+                        callbackWaitTimedOut = !secondResolutionStop.Task.Wait(TimeSpan.FromSeconds(15));
                     }
                 },
                 async () =>
@@ -219,6 +221,8 @@ namespace System.Net.NameResolution.Tests
                 Assert.Equal(events[0].ActivityId, events[3].ActivityId);
                 Assert.Equal(events[1].ActivityId, events[2].ActivityId);
                 Assert.NotEqual(events[0].ActivityId, events[1].ActivityId);
+
+                Assert.False(callbackWaitTimedOut);
             }).Dispose();
         }
     }