From ff74cdd57a288367f4320339485247f3ddfa5fd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=A8=E5=A4=B4=E4=BA=91?= Date: Sun, 30 Nov 2025 06:38:38 +0000 Subject: [PATCH] fix(test): correct receiver loop count in MultipleSendersReceivers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- test/test_ipc_channel.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/test_ipc_channel.cpp b/test/test_ipc_channel.cpp index 11c98a2..7093572 100644 --- a/test/test_ipc_channel.cpp +++ b/test/test_ipc_channel.cpp @@ -537,6 +537,7 @@ TEST_F(ChannelTest, MultipleSendersReceivers) { const int num_senders = 2; const int num_receivers = 2; const int messages_per_sender = 5; + const int total_messages = num_senders * messages_per_sender; // Each receiver should get all messages std::atomic sent_count{0}; std::atomic received_count{0}; @@ -550,7 +551,8 @@ TEST_F(ChannelTest, MultipleSendersReceivers) { channel ch(name.c_str(), receiver); receivers_ready.count_down(); // Signal this receiver is ready - for (int j = 0; j < messages_per_sender; ++j) { + // Each receiver should receive ALL messages from ALL senders (broadcast mode) + for (int j = 0; j < total_messages; ++j) { buffer buf = ch.recv(2000); if (!buf.empty()) { ++received_count;