@@ -10,11 +10,12 @@ internal class WireMockServerLifecycleHook(ILoggerFactory loggerFactory) : IDist
1010{
1111 private readonly CancellationTokenSource _shutdownCts = new ( ) ;
1212
13+ private CancellationTokenSource ? _linkedCts ;
1314 private Task ? _mappingTask ;
1415
15- public async Task AfterEndpointsAllocatedAsync ( DistributedApplicationModel appModel , CancellationToken cancellationToken = default )
16+ public Task AfterEndpointsAllocatedAsync ( DistributedApplicationModel appModel , CancellationToken cancellationToken = default )
1617 {
17- var cts = CancellationTokenSource . CreateLinkedTokenSource ( _shutdownCts . Token , cancellationToken ) ;
18+ _linkedCts = CancellationTokenSource . CreateLinkedTokenSource ( _shutdownCts . Token , cancellationToken ) ;
1819
1920 _mappingTask = Task . Run ( async ( ) =>
2021 {
@@ -29,19 +30,27 @@ public async Task AfterEndpointsAllocatedAsync(DistributedApplicationModel appMo
2930 var endpoint = wireMockServerResource . GetEndpoint ( ) ;
3031 System . Diagnostics . Debug . Assert ( endpoint . IsAllocated ) ;
3132
32- await wireMockServerResource . WaitForHealthAsync ( cts . Token ) ;
33+ await wireMockServerResource . WaitForHealthAsync ( _linkedCts . Token ) ;
3334
34- await wireMockServerResource . CallApiMappingBuilderActionAsync ( cts . Token ) ;
35+ await wireMockServerResource . CallApiMappingBuilderActionAsync ( _linkedCts . Token ) ;
3536
36- wireMockServerResource . StartWatchingStaticMappings ( cts . Token ) ;
37+ wireMockServerResource . StartWatchingStaticMappings ( _linkedCts . Token ) ;
3738 }
38- } , cts . Token ) ;
39+ } , _linkedCts . Token ) ;
40+
41+ return Task . CompletedTask ;
3942 }
4043
4144 public async ValueTask DisposeAsync ( )
4245 {
4346 await _shutdownCts . CancelAsync ( ) ;
47+
48+ _linkedCts ? . Dispose ( ) ;
49+ _shutdownCts . Dispose ( ) ;
50+
4451 if ( _mappingTask is not null )
52+ {
4553 await _mappingTask ;
54+ }
4655 }
4756}
0 commit comments