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.
This commit is contained in:
木头云 2025-11-30 06:38:38 +00:00
parent 78be284668
commit ff74cdd57a

View File

@ -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<int> sent_count{0};
std::atomic<int> 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;