Skip to content

Commit 563fb94

Browse files
committed
Test Channel close with cancellation
1 parent 08ba300 commit 563fb94

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

projects/Test/Integration/TestChannelShutdown.cs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,43 @@ public async Task TestConsumerDispatcherShutdown()
6464
Assert.True(autorecoveringChannel.ConsumerDispatcher.IsShutdown, "dispatcher should be shut down after CloseAsync");
6565
}
6666

67+
[Fact]
68+
public async Task TestChannelClose()
69+
{
70+
var tcs = new TaskCompletionSource<bool>(TaskCreationOptions.RunContinuationsAsynchronously);
71+
72+
_channel.ChannelShutdownAsync += (channel, args) =>
73+
{
74+
tcs.SetResult(true);
75+
return Task.CompletedTask;
76+
};
77+
78+
await _channel.CloseAsync();
79+
await WaitAsync(tcs, TimeSpan.FromSeconds(5), "channel shutdown");
80+
}
81+
82+
[Fact]
83+
public async Task TestChannelCloseWithCancellation()
84+
{
85+
using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(2));
86+
var tcs = new TaskCompletionSource<bool>(TaskCreationOptions.RunContinuationsAsynchronously);
87+
88+
_channel.ChannelShutdownAsync += async (channel, args) =>
89+
{
90+
try
91+
{
92+
await Task.Delay(TimeSpan.FromMinutes(1), args.CancellationToken);
93+
}
94+
catch (OperationCanceledException)
95+
{
96+
tcs.SetResult(true);
97+
}
98+
};
99+
100+
await _channel.CloseAsync(cts.Token);
101+
await WaitAsync(tcs, TimeSpan.FromSeconds(5), "channel shutdown");
102+
}
103+
67104
[Fact]
68105
public async Task TestConcurrentDisposeAsync_GH1749()
69106
{

0 commit comments

Comments
 (0)