Skip to content

Commit 3088a20

Browse files
author
Daniil Fedotov
committed
Test for duplicate consumer shutdown event
1 parent 14c6d65 commit 3088a20

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

projects/client/Unit/src/unit/TestConsumerOperationDispatch.cs

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -180,28 +180,38 @@ public void TestChannelShutdownDoesNotShutDownDispatcher()
180180
private class ShutdownLatchConsumer : DefaultBasicConsumer
181181
{
182182
public ManualResetEvent Latch { get; private set; }
183+
public ManualResetEvent LatchDuplicate { get; private set; }
183184

184-
public ShutdownLatchConsumer(ManualResetEvent latch)
185+
public ShutdownLatchConsumer(ManualResetEvent latch, ManualResetEvent latchDuplicate)
185186
{
186187
this.Latch = latch;
188+
this.LatchDuplicate = latchDuplicate;
187189
}
188190

189191
public override void HandleModelShutdown(object model, ShutdownEventArgs reason)
190192
{
191-
this.Latch.Set();
193+
// If Latch is already set - event is duplicate
194+
if (this.Latch.WaitOne(0)){
195+
this.LatchDuplicate.Set();
196+
} else {
197+
this.Latch.Set();
198+
}
192199
}
193200
}
194201

195202
[Test]
196203
public void TestModelShutdownHandler()
197204
{
198205
var latch = new ManualResetEvent(false);
206+
var latchDuplicate = new ManualResetEvent(false);
199207
var q = this.Model.QueueDeclare().QueueName;
200-
var c = new ShutdownLatchConsumer(latch);
208+
var c = new ShutdownLatchConsumer(latch, latchDuplicate);
201209

202210
this.Model.BasicConsume(queue: q, noAck: true, consumer: c);
203211
this.Model.Close();
204212
Wait(latch, TimeSpan.FromSeconds(5));
213+
Assert.IsFalse(latchDuplicate.WaitOne(TimeSpan.FromSeconds(5)),
214+
"duplicate events");
205215
}
206216
}
207217
}

0 commit comments

Comments
 (0)