Skip to content

Commit 7ab6429

Browse files
committed
Fixing flakey test. It was possible that it tried to check a disposed event body since it didn't copy the contents of the buffers.
1 parent 87d6f0a commit 7ab6429

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

projects/Unit/TestRecoverAfterCancel.cs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -82,21 +82,23 @@ public void TestRecoverAfterCancel_()
8282
UTF8Encoding enc = new UTF8Encoding();
8383
Channel.BasicPublish("", Queue, null, enc.GetBytes("message"));
8484
EventingBasicConsumer Consumer = new EventingBasicConsumer(Channel);
85-
SharedQueue<BasicDeliverEventArgs> EventQueue = new SharedQueue<BasicDeliverEventArgs>();
86-
Consumer.Received += (_, e) => EventQueue.Enqueue(e);
85+
SharedQueue<(bool Redelivered, byte[] Body)> EventQueue = new SharedQueue<(bool Redelivered, byte[] Body)>();
86+
// Making sure we copy the delivery body since it could be disposed at any time.
87+
Consumer.Received += (_, e) => EventQueue.Enqueue((e.Redelivered, e.Body.ToArray()));
8788

8889
string CTag = Channel.BasicConsume(Queue, false, Consumer);
89-
BasicDeliverEventArgs Event = EventQueue.Dequeue();
90+
(bool Redelivered, byte[] Body) Event = EventQueue.Dequeue();
9091
Channel.BasicCancel(CTag);
9192
Channel.BasicRecover(true);
9293

9394
EventingBasicConsumer Consumer2 = new EventingBasicConsumer(Channel);
94-
SharedQueue<BasicDeliverEventArgs> EventQueue2 = new SharedQueue<BasicDeliverEventArgs>();
95-
Consumer2.Received += (_, e) => EventQueue2.Enqueue(e);
95+
SharedQueue<(bool Redelivered, byte[] Body)> EventQueue2 = new SharedQueue<(bool Redelivered, byte[] Body)>();
96+
// Making sure we copy the delivery body since it could be disposed at any time.
97+
Consumer2.Received += (_, e) => EventQueue2.Enqueue((e.Redelivered, e.Body.ToArray()));
9698
Channel.BasicConsume(Queue, false, Consumer2);
97-
BasicDeliverEventArgs Event2 = EventQueue2.Dequeue();
99+
(bool Redelivered, byte[] Body) Event2 = EventQueue2.Dequeue();
98100

99-
CollectionAssert.AreEqual(Event.Body.ToArray(), Event2.Body.ToArray());
101+
CollectionAssert.AreEqual(Event.Body, Event2.Body);
100102
Assert.IsFalse(Event.Redelivered);
101103
Assert.IsTrue(Event2.Redelivered);
102104
}

0 commit comments

Comments
 (0)