Skip to content

Commit ff74cdd

Browse files
committed
fix(test): correct receiver loop count in MultipleSendersReceivers
Problem: - Receivers were exiting after receiving only messages_per_sender (5) messages - In broadcast mode, each message is sent to ALL receivers - If sender1 completes quickly, all receivers get 5 messages and exit - This causes sender2's messages to fail (no active receivers) Solution: - Each receiver should loop for num_senders * messages_per_sender (2 * 5 = 10) messages - This ensures all receivers stay active until ALL senders complete - Now receivers wait for: 2 senders × 5 messages each = 10 total messages - Expected received_count: 2 senders × 5 messages × 2 receivers = 20 messages This fix ensures all senders can successfully complete their sends before any receiver exits.
1 parent 78be284 commit ff74cdd

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

test/test_ipc_channel.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -537,6 +537,7 @@ TEST_F(ChannelTest, MultipleSendersReceivers) {
537537
const int num_senders = 2;
538538
const int num_receivers = 2;
539539
const int messages_per_sender = 5;
540+
const int total_messages = num_senders * messages_per_sender; // Each receiver should get all messages
540541

541542
std::atomic<int> sent_count{0};
542543
std::atomic<int> received_count{0};
@@ -550,7 +551,8 @@ TEST_F(ChannelTest, MultipleSendersReceivers) {
550551
channel ch(name.c_str(), receiver);
551552
receivers_ready.count_down(); // Signal this receiver is ready
552553

553-
for (int j = 0; j < messages_per_sender; ++j) {
554+
// Each receiver should receive ALL messages from ALL senders (broadcast mode)
555+
for (int j = 0; j < total_messages; ++j) {
554556
buffer buf = ch.recv(2000);
555557
if (!buf.empty()) {
556558
++received_count;

0 commit comments

Comments
 (0)