@@ -1481,45 +1481,56 @@ private async ValueTask<HttpResponseMessage> SendAsync(HttpRequestMessage reques
1481
1481
[ ConditionalFact ( typeof ( PlatformDetection ) , nameof ( PlatformDetection . IsNotBrowser ) ) ]
1482
1482
public async Task SendAsync_ReuseRequestInHandler_ResetsHeadersForEachReuse ( )
1483
1483
{
1484
- _ = Task . Delay ( TimeSpan . FromMinutes ( 2.5 ) ) . ContinueWith ( ( _ ) =>
1484
+ Timer timer ;
1485
+ try
1485
1486
{
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" } ;
1491
1497
1492
- const string FirstTraceParent = "00-F" ;
1493
- const string FirstTraceState = "first" ;
1498
+ const string FirstTraceParent = "00-F" ;
1499
+ const string FirstTraceState = "first" ;
1494
1500
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 ) ;
1500
1506
1501
- request . Headers . Add ( "traceparent" , FirstTraceParent ) ;
1502
- request . Headers . Add ( "tracestate" , FirstTraceState ) ;
1507
+ request . Headers . Add ( "traceparent" , FirstTraceParent ) ;
1508
+ request . Headers . Add ( "tracestate" , FirstTraceState ) ;
1503
1509
1504
- Task clientTask = TestAsync ? client . SendAsync ( request ) : Task . Run ( ( ) => client . Send ( request ) ) ;
1510
+ Task clientTask = TestAsync ? client . SendAsync ( request ) : Task . Run ( ( ) => client . Send ( request ) ) ;
1505
1511
1506
- HttpRequestData requestData = await server . AcceptConnectionSendResponseAndCloseAsync ( statusCode : HttpStatusCode . InternalServerError ) ;
1512
+ HttpRequestData requestData = await server . AcceptConnectionSendResponseAndCloseAsync ( statusCode : HttpStatusCode . InternalServerError ) ;
1507
1513
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 ) ;
1513
1519
1514
- requestData = await server . AcceptConnectionSendResponseAndCloseAsync ( statusCode : HttpStatusCode . InternalServerError ) ;
1520
+ requestData = await server . AcceptConnectionSendResponseAndCloseAsync ( statusCode : HttpStatusCode . InternalServerError ) ;
1515
1521
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 ) ;
1520
1526
1521
- await clientTask ;
1522
- } ) ;
1527
+ await clientTask ;
1528
+ } ) ;
1529
+ }
1530
+ finally
1531
+ {
1532
+ timer . Dispose ( ) ;
1533
+ }
1523
1534
}
1524
1535
1525
1536
[ ConditionalFact ( typeof ( PlatformDetection ) , nameof ( PlatformDetection . IsNotBrowser ) ) ]
0 commit comments