Skip to content

Commit 349c40f

Browse files
authored
Fix TestThatDeletedQueueBindingsDontReappearOnRecovery (#1554)
* Fix `TestThatDeletedQueueBindingsDontReappearOnRecovery` Do not use the `amq.fanout` exchange, because other tests that publish to that can lead to errors in `TestThatDeletedQueueBindingsDontReappearOnRecovery` * * Stop using `amq.fanout` in tests * Give windows-latest a try
1 parent 9c938a0 commit 349c40f

File tree

5 files changed

+47
-29
lines changed

5 files changed

+47
-29
lines changed

.github/workflows/build-test.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ on:
55

66
jobs:
77
build-win32:
8-
runs-on: windows-2019
8+
runs-on: windows-latest
99
# https://github.com/NuGet/Home/issues/11548
1010
env:
1111
NUGET_CERT_REVOCATION_MODE: offline
@@ -42,7 +42,7 @@ jobs:
4242
projects/RabbitMQ.*/bin
4343
integration-win32:
4444
needs: build-win32
45-
runs-on: windows-2019
45+
runs-on: windows-latest
4646
# https://github.com/NuGet/Home/issues/11548
4747
env:
4848
NUGET_CERT_REVOCATION_MODE: offline
@@ -89,7 +89,7 @@ jobs:
8989
path: ~/AppData/Roaming/RabbitMQ/log/
9090
sequential-integration-win32:
9191
needs: build-win32
92-
runs-on: windows-2019
92+
runs-on: windows-latest
9393
# https://github.com/NuGet/Home/issues/11548
9494
env:
9595
NUGET_CERT_REVOCATION_MODE: offline

build.ps1

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ if ($RunTests)
2525
dotnet test $csproj_file --environment 'RABBITMQ_LONG_RUNNING_TESTS=true' --no-restore --no-build --logger "console;verbosity=detailed"
2626
if ($LASTEXITCODE -ne 0)
2727
{
28-
Write-Host "[WARNING] tests errored, exiting" -Foreground "Red"
28+
Write-Host "[ERROR] tests errored, exiting" -Foreground "Red"
29+
Exit 1
2930
}
3031
else
3132
{

projects/Test/Integration/ConnectionRecovery/TestExchangeRecovery.cs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -56,25 +56,29 @@ public async Task TestExchangeRecoveryTest()
5656
public async Task TestExchangeToExchangeBindingRecovery()
5757
{
5858
string q = (await _channel.QueueDeclareAsync("", false, false, false)).QueueName;
59-
string x1 = "amq.fanout";
60-
string x2 = GenerateExchangeName();
6159

62-
await _channel.ExchangeDeclareAsync(x2, "fanout");
63-
await _channel.ExchangeBindAsync(x1, x2, "");
64-
await _channel.QueueBindAsync(q, x1, "");
60+
string ex_source = GenerateExchangeName();
61+
string ex_destination = GenerateExchangeName();
62+
63+
await _channel.ExchangeDeclareAsync(ex_source, ExchangeType.Fanout);
64+
await _channel.ExchangeDeclareAsync(ex_destination, ExchangeType.Fanout);
65+
66+
await _channel.ExchangeBindAsync(destination: ex_destination, source: ex_source, "");
67+
await _channel.QueueBindAsync(q, ex_destination, "");
6568

6669
try
6770
{
6871
await CloseAndWaitForRecoveryAsync();
6972
Assert.True(_channel.IsOpen);
70-
await _channel.BasicPublishAsync(x2, "", _encoding.GetBytes("msg"));
73+
await _channel.BasicPublishAsync(ex_source, "", _encoding.GetBytes("msg"));
7174
await AssertMessageCountAsync(q, 1);
7275
}
7376
finally
7477
{
7578
await WithTemporaryChannelAsync(async ch =>
7679
{
77-
await ch.ExchangeDeleteAsync(x2);
80+
await ch.ExchangeDeleteAsync(ex_source);
81+
await ch.ExchangeDeleteAsync(ex_destination);
7882
await ch.QueueDeleteAsync(q);
7983
});
8084
}

projects/Test/Integration/ConnectionRecovery/TestRecoveryWithDeletedEntities.cs

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -47,26 +47,30 @@ public TestRecoveryWithDeletedEntities(ITestOutputHelper output) : base(output)
4747
public async Task TestThatDeletedExchangeBindingsDontReappearOnRecovery()
4848
{
4949
string q = (await _channel.QueueDeclareAsync("", false, false, false)).QueueName;
50-
string x1 = "amq.fanout";
51-
string x2 = GenerateExchangeName();
5250

53-
await _channel.ExchangeDeclareAsync(x2, "fanout");
54-
await _channel.ExchangeBindAsync(x1, x2, "");
55-
await _channel.QueueBindAsync(q, x1, "");
56-
await _channel.ExchangeUnbindAsync(x1, x2, "");
51+
string ex_source = GenerateExchangeName();
52+
string ex_destination = GenerateExchangeName();
53+
54+
await _channel.ExchangeDeclareAsync(ex_source, ExchangeType.Fanout);
55+
await _channel.ExchangeDeclareAsync(ex_destination, ExchangeType.Fanout);
56+
57+
await _channel.ExchangeBindAsync(destination: ex_destination, source: ex_source, "");
58+
await _channel.QueueBindAsync(q, ex_destination, "");
59+
await _channel.ExchangeUnbindAsync(ex_destination, ex_source, "");
5760

5861
try
5962
{
6063
await CloseAndWaitForRecoveryAsync();
6164
Assert.True(_channel.IsOpen);
62-
await _channel.BasicPublishAsync(x2, "", _encoding.GetBytes("msg"));
65+
await _channel.BasicPublishAsync(ex_source, "", _encoding.GetBytes("msg"));
6366
await AssertMessageCountAsync(q, 0);
6467
}
6568
finally
6669
{
6770
await WithTemporaryChannelAsync(async ch =>
6871
{
69-
await ch.ExchangeDeleteAsync(x2);
72+
await ch.ExchangeDeleteAsync(ex_source);
73+
await ch.ExchangeDeleteAsync(ex_destination);
7074
await ch.QueueDeleteAsync(q);
7175
});
7276
}
@@ -97,26 +101,30 @@ public async Task TestThatDeletedExchangesDontReappearOnRecovery()
97101
public async Task TestThatDeletedQueueBindingsDontReappearOnRecovery()
98102
{
99103
string q = (await _channel.QueueDeclareAsync("", false, false, false)).QueueName;
100-
string ex_amq_fanout = "amq.fanout";
101-
string ex_test = GenerateExchangeName();
102104

103-
await _channel.ExchangeDeclareAsync(ex_test, ExchangeType.Fanout);
104-
await _channel.ExchangeBindAsync(destination: ex_amq_fanout, source: ex_test, routingKey: "");
105-
await _channel.QueueBindAsync(q, ex_amq_fanout, "");
106-
await _channel.QueueUnbindAsync(q, ex_amq_fanout, "");
105+
string ex_source = GenerateExchangeName();
106+
string ex_destination = GenerateExchangeName();
107+
108+
await _channel.ExchangeDeclareAsync(ex_source, ExchangeType.Fanout);
109+
await _channel.ExchangeDeclareAsync(ex_destination, ExchangeType.Fanout);
110+
111+
await _channel.ExchangeBindAsync(destination: ex_destination, source: ex_source, routingKey: "");
112+
await _channel.QueueBindAsync(q, ex_destination, "");
113+
await _channel.QueueUnbindAsync(q, ex_destination, "");
107114

108115
try
109116
{
110117
await CloseAndWaitForRecoveryAsync();
111118
Assert.True(_channel.IsOpen);
112-
await _channel.BasicPublishAsync(ex_test, "", _encoding.GetBytes("msg"));
119+
await _channel.BasicPublishAsync(ex_source, "", _encoding.GetBytes("msg"));
113120
await AssertMessageCountAsync(q, 0);
114121
}
115122
finally
116123
{
117124
await WithTemporaryChannelAsync(async ch =>
118125
{
119-
await ch.ExchangeDeleteAsync(ex_test);
126+
await ch.ExchangeDeleteAsync(ex_source);
127+
await ch.ExchangeDeleteAsync(ex_destination);
120128
await ch.QueueDeleteAsync(q);
121129
});
122130
}

projects/Test/Integration/TestExchangeDeclare.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,10 @@ public async Task TestConcurrentExchangeDeclareAndBind()
5151
{
5252
var exchangeNames = new ConcurrentBag<string>();
5353
var tasks = new List<Task>();
54+
55+
string ex_destination = GenerateExchangeName();
56+
await _channel.ExchangeDeclareAsync(exchange: ex_destination, type: "fanout", false, false);
57+
5458
NotSupportedException nse = null;
5559
for (int i = 0; i < 256; i++)
5660
{
@@ -61,7 +65,7 @@ async Task f()
6165
await Task.Delay(S_Random.Next(5, 50));
6266
string exchangeName = GenerateExchangeName();
6367
await _channel.ExchangeDeclareAsync(exchange: exchangeName, type: "fanout", false, false);
64-
await _channel.ExchangeBindAsync(destination: "amq.fanout", source: exchangeName, routingKey: "unused");
68+
await _channel.ExchangeBindAsync(destination: ex_destination, source: exchangeName, routingKey: "unused");
6569
exchangeNames.Add(exchangeName);
6670
}
6771
catch (NotSupportedException e)
@@ -84,7 +88,7 @@ async Task f()
8488
try
8589
{
8690
await Task.Delay(S_Random.Next(5, 50));
87-
await _channel.ExchangeUnbindAsync(destination: "amq.fanout", source: exchangeName, routingKey: "unused",
91+
await _channel.ExchangeUnbindAsync(destination: ex_destination, source: exchangeName, routingKey: "unused",
8892
noWait: false, arguments: null);
8993
await _channel.ExchangeDeleteAsync(exchange: exchangeName, ifUnused: false);
9094
}
@@ -99,6 +103,7 @@ await _channel.ExchangeUnbindAsync(destination: "amq.fanout", source: exchangeNa
99103

100104
await AssertRanToCompletion(tasks);
101105
Assert.Null(nse);
106+
await _channel.ExchangeDeleteAsync(exchange: ex_destination);
102107
}
103108

104109
[Fact]

0 commit comments

Comments
 (0)