Skip to content

Commit 4f11043

Browse files
authored
Make TestServer IAsyncDisposable (#9059)
- This should make it a bit more maintainable than it is today (having to call server.StopAsync before Dispose calls it synchronously)
1 parent d27ce10 commit 4f11043

24 files changed

+287
-590
lines changed

src/Servers/Kestrel/test/InMemory.FunctionalTests/BadHttpRequestTests.cs

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ public Task BadRequestFor11BadHostHeaderFormat()
153153
[Fact]
154154
public async Task BadRequestLogsAreNotHigherThanInformation()
155155
{
156-
using (var server = new TestServer(async context =>
156+
await using (var server = new TestServer(async context =>
157157
{
158158
await context.Request.Body.ReadAsync(new byte[1], 0, 1);
159159
}, new TestServiceContext(LoggerFactory)))
@@ -166,8 +166,6 @@ await connection.SendAll(
166166
"");
167167
await ReceiveBadRequestResponse(connection, "400 Bad Request", server.Context.DateHeaderValue);
168168
}
169-
170-
await server.StopAsync();
171169
}
172170

173171
Assert.All(TestSink.Writes, w => Assert.InRange(w.LogLevel, LogLevel.Trace, LogLevel.Information));
@@ -177,7 +175,7 @@ await connection.SendAll(
177175
[Fact]
178176
public async Task TestRequestSplitting()
179177
{
180-
using (var server = new TestServer(context => Task.CompletedTask, new TestServiceContext(LoggerFactory)))
178+
await using (var server = new TestServer(context => Task.CompletedTask, new TestServiceContext(LoggerFactory)))
181179
{
182180
using (var client = server.CreateConnection())
183181
{
@@ -187,8 +185,6 @@ await client.SendAll(
187185

188186
await client.Receive("HTTP/1.1 400");
189187
}
190-
191-
await server.StopAsync();
192188
}
193189
}
194190

@@ -203,15 +199,13 @@ private async Task TestBadRequest(string request, string expectedResponseStatusC
203199
.Setup(trace => trace.ConnectionBadRequest(It.IsAny<string>(), It.IsAny<BadHttpRequestException>()))
204200
.Callback<string, BadHttpRequestException>((connectionId, exception) => loggedException = exception);
205201

206-
using (var server = new TestServer(context => Task.CompletedTask, new TestServiceContext(LoggerFactory, mockKestrelTrace.Object)))
202+
await using (var server = new TestServer(context => Task.CompletedTask, new TestServiceContext(LoggerFactory, mockKestrelTrace.Object)))
207203
{
208204
using (var connection = server.CreateConnection())
209205
{
210206
await connection.SendAll(request);
211207
await ReceiveBadRequestResponse(connection, expectedResponseStatusCode, server.Context.DateHeaderValue, expectedAllowHeader);
212208
}
213-
214-
await server.StopAsync();
215209
}
216210

217211
mockKestrelTrace.Verify(trace => trace.ConnectionBadRequest(It.IsAny<string>(), It.IsAny<BadHttpRequestException>()));

src/Servers/Kestrel/test/InMemory.FunctionalTests/ChunkedRequestTests.cs

Lines changed: 15 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public async Task Http10TransferEncoding()
7171
{
7272
var testContext = new TestServiceContext(LoggerFactory);
7373

74-
using (var server = new TestServer(App, testContext))
74+
await using (var server = new TestServer(App, testContext))
7575
{
7676
using (var connection = server.CreateConnection())
7777
{
@@ -100,7 +100,7 @@ public async Task Http10TransferEncodingPipes()
100100
{
101101
var testContext = new TestServiceContext(LoggerFactory);
102102

103-
using (var server = new TestServer(PipeApp, testContext))
103+
await using (var server = new TestServer(PipeApp, testContext))
104104
{
105105
using (var connection = server.CreateConnection())
106106
{
@@ -129,7 +129,7 @@ public async Task Http10KeepAliveTransferEncoding()
129129
{
130130
var testContext = new TestServiceContext();
131131

132-
using (var server = new TestServer(AppChunked, testContext))
132+
await using (var server = new TestServer(AppChunked, testContext))
133133
{
134134
using (var connection = server.CreateConnection())
135135
{
@@ -162,8 +162,6 @@ await connection.ReceiveEnd(
162162
"",
163163
"Goodbye");
164164
}
165-
166-
await server.StopAsync();
167165
}
168166
}
169167

@@ -172,7 +170,7 @@ public async Task RequestBodyIsConsumedAutomaticallyIfAppDoesntConsumeItFully()
172170
{
173171
var testContext = new TestServiceContext(LoggerFactory);
174172

175-
using (var server = new TestServer(async httpContext =>
173+
await using (var server = new TestServer(async httpContext =>
176174
{
177175
var response = httpContext.Response;
178176
var request = httpContext.Request;
@@ -218,7 +216,6 @@ await connection.Receive(
218216
"",
219217
"Hello World");
220218
}
221-
await server.StopAsync();
222219
}
223220
}
224221

@@ -228,7 +225,7 @@ public async Task TrailingHeadersAreParsed()
228225
var requestCount = 10;
229226
var requestsReceived = 0;
230227

231-
using (var server = new TestServer(async httpContext =>
228+
await using (var server = new TestServer(async httpContext =>
232229
{
233230
var response = httpContext.Response;
234231
var request = httpContext.Request;
@@ -304,8 +301,6 @@ public async Task TrailingHeadersAreParsed()
304301
await connection.Send(fullRequest);
305302
await connection.Receive(expectedFullResponse);
306303
}
307-
308-
await server.StopAsync();
309304
}
310305
}
311306

@@ -315,7 +310,7 @@ public async Task TrailingHeadersAreParsedWithPipe()
315310
var requestCount = 10;
316311
var requestsReceived = 0;
317312

318-
using (var server = new TestServer(async httpContext =>
313+
await using (var server = new TestServer(async httpContext =>
319314
{
320315
var response = httpContext.Response;
321316
var request = httpContext.Request;
@@ -394,8 +389,6 @@ public async Task TrailingHeadersAreParsedWithPipe()
394389
await connection.Send(fullRequest);
395390
await connection.Receive(expectedFullResponse);
396391
}
397-
398-
await server.StopAsync();
399392
}
400393
}
401394
[Fact]
@@ -411,7 +404,7 @@ public async Task TrailingHeadersCountTowardsHeadersTotalSizeLimit()
411404
headerLine.Length + 2 +
412405
trailingHeaderLine.Length + 1;
413406

414-
using (var server = new TestServer(async context =>
407+
await using (var server = new TestServer(async context =>
415408
{
416409
var buffer = new byte[128];
417410
while (await context.Request.Body.ReadAsync(buffer, 0, buffer.Length) != 0) ; // read to end
@@ -439,7 +432,6 @@ await connection.ReceiveEnd(
439432
"",
440433
"");
441434
}
442-
await server.StopAsync();
443435
}
444436
}
445437

@@ -453,7 +445,7 @@ public async Task TrailingHeadersCountTowardsHeaderCountLimit()
453445
var testContext = new TestServiceContext(LoggerFactory);
454446
testContext.ServerOptions.Limits.MaxRequestHeaderCount = 2;
455447

456-
using (var server = new TestServer(async context =>
448+
await using (var server = new TestServer(async context =>
457449
{
458450
var buffer = new byte[128];
459451
while (await context.Request.Body.ReadAsync(buffer, 0, buffer.Length) != 0) ; // read to end
@@ -481,7 +473,6 @@ await connection.ReceiveEnd(
481473
"",
482474
"");
483475
}
484-
await server.StopAsync();
485476
}
486477
}
487478

@@ -492,7 +483,7 @@ public async Task ExtensionsAreIgnored()
492483
var requestCount = 10;
493484
var requestsReceived = 0;
494485

495-
using (var server = new TestServer(async httpContext =>
486+
await using (var server = new TestServer(async httpContext =>
496487
{
497488
var response = httpContext.Response;
498489
var request = httpContext.Request;
@@ -568,15 +559,14 @@ public async Task ExtensionsAreIgnored()
568559
await connection.Send(fullRequest);
569560
await connection.Receive(expectedFullResponse);
570561
}
571-
await server.StopAsync();
572562
}
573563
}
574564

575565
[Fact]
576566
public async Task InvalidLengthResultsIn400()
577567
{
578568
var testContext = new TestServiceContext(LoggerFactory);
579-
using (var server = new TestServer(async httpContext =>
569+
await using (var server = new TestServer(async httpContext =>
580570
{
581571
var response = httpContext.Response;
582572
var request = httpContext.Request;
@@ -620,7 +610,7 @@ await connection.ReceiveEnd(
620610
public async Task InvalidSizedDataResultsIn400()
621611
{
622612
var testContext = new TestServiceContext(LoggerFactory);
623-
using (var server = new TestServer(async httpContext =>
613+
await using (var server = new TestServer(async httpContext =>
624614
{
625615
var response = httpContext.Response;
626616
var request = httpContext.Request;
@@ -657,7 +647,6 @@ await connection.ReceiveEnd(
657647
"",
658648
"");
659649
}
660-
await server.StopAsync();
661650
}
662651
}
663652

@@ -666,7 +655,7 @@ await connection.ReceiveEnd(
666655
public async Task ChunkedNotFinalTransferCodingResultsIn400()
667656
{
668657
var testContext = new TestServiceContext(LoggerFactory);
669-
using (var server = new TestServer(httpContext =>
658+
await using (var server = new TestServer(httpContext =>
670659
{
671660
return Task.CompletedTask;
672661
}, testContext))
@@ -762,7 +751,6 @@ await connection.ReceiveEnd(
762751
"",
763752
"");
764753
}
765-
await server.StopAsync();
766754
}
767755
}
768756

@@ -773,7 +761,7 @@ public async Task ClosingConnectionMidChunkPrefixThrows()
773761
var readStartedTcs = new TaskCompletionSource<object>(TaskCreationOptions.RunContinuationsAsynchronously);
774762
var exTcs = new TaskCompletionSource<BadHttpRequestException>(TaskCreationOptions.RunContinuationsAsynchronously);
775763

776-
using (var server = new TestServer(async httpContext =>
764+
await using (var server = new TestServer(async httpContext =>
777765
{
778766
var readTask = httpContext.Request.Body.CopyToAsync(Stream.Null);
779767
readStartedTcs.SetResult(null);
@@ -810,8 +798,6 @@ await connection.SendAll(
810798
var badReqEx = await exTcs.Task.TimeoutAfter(TestConstants.DefaultTimeout);
811799
Assert.Equal(RequestRejectionReason.UnexpectedEndOfRequestContent, badReqEx.Reason);
812800
}
813-
814-
await server.StopAsync();
815801
}
816802
}
817803

@@ -821,7 +807,7 @@ public async Task ChunkedRequestCallCancelPendingReadWorks()
821807
var tcs = new TaskCompletionSource<object>();
822808
var testContext = new TestServiceContext(LoggerFactory);
823809

824-
using (var server = new TestServer(async httpContext =>
810+
await using (var server = new TestServer(async httpContext =>
825811
{
826812
var response = httpContext.Response;
827813
var request = httpContext.Request;
@@ -869,7 +855,6 @@ await connection.Receive(
869855
"",
870856
"Hello World");
871857
}
872-
await server.StopAsync();
873858
}
874859
}
875860

@@ -878,7 +863,7 @@ public async Task ChunkedRequestCallCompleteThrowsExceptionOnRead()
878863
{
879864
var testContext = new TestServiceContext(LoggerFactory);
880865

881-
using (var server = new TestServer(async httpContext =>
866+
await using (var server = new TestServer(async httpContext =>
882867
{
883868
var response = httpContext.Response;
884869
var request = httpContext.Request;
@@ -968,7 +953,6 @@ await connection.Receive(
968953
"",
969954
"");
970955
}
971-
await server.StopAsync();
972956
}
973957
}
974958
}

0 commit comments

Comments
 (0)