Skip to content

Commit eebb67a

Browse files
committed
Increase timeout, fix timer disposal
1 parent a953f4e commit eebb67a

File tree

1 file changed

+40
-29
lines changed

1 file changed

+40
-29
lines changed

src/libraries/System.Net.Http/tests/FunctionalTests/DiagnosticsTests.cs

Lines changed: 40 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1481,45 +1481,56 @@ private async ValueTask<HttpResponseMessage> SendAsync(HttpRequestMessage reques
14811481
[ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotBrowser))]
14821482
public async Task SendAsync_ReuseRequestInHandler_ResetsHeadersForEachReuse()
14831483
{
1484-
_ = Task.Delay(TimeSpan.FromMinutes(2.5)).ContinueWith((_) =>
1484+
Timer timer;
1485+
try
14851486
{
1486-
Environment.FailFast("Test took too long to complete, likely due to a deadlock or infinite loop.");
1487-
});
1488-
Activity parent0 = new Activity("parent0");
1489-
Activity parent1 = new Activity("parent1") { TraceStateString = "wow=1" };
1490-
Activity parent2 = new Activity("parent2") { TraceStateString = "wow=2" };
1487+
using (ExecutionContext.SuppressFlow())
1488+
{
1489+
timer = new Timer((_) =>
1490+
{
1491+
Environment.FailFast("Test took too long to complete, likely due to a deadlock or infinite loop.");
1492+
}, null, TimeSpan.FromMinutes(5), Timeout.InfiniteTimeSpan);
1493+
}
1494+
Activity parent0 = new Activity("parent0");
1495+
Activity parent1 = new Activity("parent1") { TraceStateString = "wow=1" };
1496+
Activity parent2 = new Activity("parent2") { TraceStateString = "wow=2" };
14911497

1492-
const string FirstTraceParent = "00-F";
1493-
const string FirstTraceState = "first";
1498+
const string FirstTraceParent = "00-F";
1499+
const string FirstTraceState = "first";
14941500

1495-
await GetFactoryForVersion(UseVersion).CreateServerAsync(async (server, uri) =>
1496-
{
1497-
SendMultipleTimesHandler handler = new SendMultipleTimesHandler(CreateSocketsHttpHandler(allowAllCertificates: true), parent0, parent1, parent2);
1498-
using HttpClient client = new HttpClient(handler);
1499-
HttpRequestMessage request = CreateRequest(HttpMethod.Get, uri, UseVersion, exactVersion: true);
1501+
await GetFactoryForVersion(UseVersion).CreateServerAsync(async (server, uri) =>
1502+
{
1503+
SendMultipleTimesHandler handler = new SendMultipleTimesHandler(CreateSocketsHttpHandler(allowAllCertificates: true), parent0, parent1, parent2);
1504+
using HttpClient client = new HttpClient(handler);
1505+
HttpRequestMessage request = CreateRequest(HttpMethod.Get, uri, UseVersion, exactVersion: true);
15001506

1501-
request.Headers.Add("traceparent", FirstTraceParent);
1502-
request.Headers.Add("tracestate", FirstTraceState);
1507+
request.Headers.Add("traceparent", FirstTraceParent);
1508+
request.Headers.Add("tracestate", FirstTraceState);
15031509

1504-
Task clientTask = TestAsync ? client.SendAsync(request) : Task.Run(() => client.Send(request));
1510+
Task clientTask = TestAsync ? client.SendAsync(request) : Task.Run(() => client.Send(request));
15051511

1506-
HttpRequestData requestData = await server.AcceptConnectionSendResponseAndCloseAsync(statusCode: HttpStatusCode.InternalServerError);
1512+
HttpRequestData requestData = await server.AcceptConnectionSendResponseAndCloseAsync(statusCode: HttpStatusCode.InternalServerError);
15071513

1508-
// On the first send DiagnosticsHandler should keep user-supplied headers.
1509-
string traceparent = GetHeaderValue(requestData, "traceparent");
1510-
string tracestate = GetHeaderValue(requestData, "tracestate");
1511-
Assert.Equal(FirstTraceParent, traceparent);
1512-
Assert.Equal(FirstTraceState, tracestate);
1514+
// On the first send DiagnosticsHandler should keep user-supplied headers.
1515+
string traceparent = GetHeaderValue(requestData, "traceparent");
1516+
string tracestate = GetHeaderValue(requestData, "tracestate");
1517+
Assert.Equal(FirstTraceParent, traceparent);
1518+
Assert.Equal(FirstTraceState, tracestate);
15131519

1514-
requestData = await server.AcceptConnectionSendResponseAndCloseAsync(statusCode: HttpStatusCode.InternalServerError);
1520+
requestData = await server.AcceptConnectionSendResponseAndCloseAsync(statusCode: HttpStatusCode.InternalServerError);
15151521

1516-
// Headers should be overridden on each subsequent send.
1517-
AssertHeadersAreInjected(requestData, parent1);
1518-
requestData = await server.AcceptConnectionSendResponseAndCloseAsync(statusCode: HttpStatusCode.OK);
1519-
AssertHeadersAreInjected(requestData, parent2);
1522+
// Headers should be overridden on each subsequent send.
1523+
AssertHeadersAreInjected(requestData, parent1);
1524+
requestData = await server.AcceptConnectionSendResponseAndCloseAsync(statusCode: HttpStatusCode.OK);
1525+
AssertHeadersAreInjected(requestData, parent2);
15201526

1521-
await clientTask;
1522-
});
1527+
await clientTask;
1528+
});
1529+
}
1530+
finally
1531+
{
1532+
timer.Dispose();
1533+
}
15231534
}
15241535

15251536
[ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotBrowser))]

0 commit comments

Comments
 (0)