mirror of
https://github.com/mutouyun/cpp-ipc.git
synced 2025-12-06 16:56:45 +08:00
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:
parent
78be284668
commit
ff74cdd57a
@ -537,6 +537,7 @@ TEST_F(ChannelTest, MultipleSendersReceivers) {
|
|||||||
const int num_senders = 2;
|
const int num_senders = 2;
|
||||||
const int num_receivers = 2;
|
const int num_receivers = 2;
|
||||||
const int messages_per_sender = 5;
|
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> sent_count{0};
|
||||||
std::atomic<int> received_count{0};
|
std::atomic<int> received_count{0};
|
||||||
@ -550,7 +551,8 @@ TEST_F(ChannelTest, MultipleSendersReceivers) {
|
|||||||
channel ch(name.c_str(), receiver);
|
channel ch(name.c_str(), receiver);
|
||||||
receivers_ready.count_down(); // Signal this receiver is ready
|
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);
|
buffer buf = ch.recv(2000);
|
||||||
if (!buf.empty()) {
|
if (!buf.empty()) {
|
||||||
++received_count;
|
++received_count;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user