From 2962e51a6d5728ac0de5c1f9f6581927775cb781 Mon Sep 17 00:00:00 2001 From: DenisBiryukov91 <155981813+DenisBiryukov91@users.noreply.github.com> Date: Fri, 28 Feb 2025 11:36:25 +0100 Subject: [PATCH] make pub-sub test use multiple subscribers (#420) --- tests/universal/network/pub_sub.cxx | 66 +++++++++++++++++------------ 1 file changed, 39 insertions(+), 27 deletions(-) diff --git a/tests/universal/network/pub_sub.cxx b/tests/universal/network/pub_sub.cxx index 2a90360..6e06217 100644 --- a/tests/universal/network/pub_sub.cxx +++ b/tests/universal/network/pub_sub.cxx @@ -119,7 +119,9 @@ void put_sub_fifo_channel(Talloc& alloc) { std::this_thread::sleep_for(1s); - auto subscriber = session2.declare_subscriber(ke, channels::FifoChannel(16)); + std::vector>> subscribers; + subscribers.push_back(session2.declare_subscriber(ke, channels::FifoChannel(16))); + subscribers.push_back(session2.declare_subscriber(ke, channels::FifoChannel(16))); std::this_thread::sleep_for(1s); @@ -128,24 +130,28 @@ void put_sub_fifo_channel(Talloc& alloc) { std::this_thread::sleep_for(1s); - auto res = subscriber.handler().recv(); - assert(std::holds_alternative(res)); - assert(std::get(res).get_keyexpr() == "zenoh/test"); - assert(std::get(res).get_payload().as_string() == "first"); - res = subscriber.handler().try_recv(); - assert(std::holds_alternative(res)); - assert(std::get(res).get_keyexpr() == "zenoh/test"); - assert(std::get(res).get_payload().as_string() == "second"); - - res = subscriber.handler().try_recv(); - assert(std::holds_alternative(res)); - assert(std::get(res) == channels::RecvError::Z_NODATA); + for (const auto& subscriber : subscribers) { + auto res = subscriber.handler().recv(); + assert(std::holds_alternative(res)); + assert(std::get(res).get_keyexpr() == "zenoh/test"); + assert(std::get(res).get_payload().as_string() == "first"); + res = subscriber.handler().try_recv(); + assert(std::holds_alternative(res)); + assert(std::get(res).get_keyexpr() == "zenoh/test"); + assert(std::get(res).get_payload().as_string() == "second"); + + res = subscriber.handler().try_recv(); + assert(std::holds_alternative(res)); + assert(std::get(res) == channels::RecvError::Z_NODATA); + } /// after session close subscriber handler should become disconnected session2.close(); - res = subscriber.handler().recv(); - assert(std::holds_alternative(res)); - assert(std::get(res) == channels::RecvError::Z_DISCONNECTED); + for (const auto& subscriber : subscribers) { + auto res = subscriber.handler().recv(); + assert(std::holds_alternative(res)); + assert(std::get(res) == channels::RecvError::Z_DISCONNECTED); + } } template @@ -156,7 +162,9 @@ void put_sub_ring_channel(Talloc& alloc) { std::this_thread::sleep_for(1s); - auto subscriber = session2.declare_subscriber(ke, channels::RingChannel(1)); + std::vector>> subscribers; + subscribers.push_back(session2.declare_subscriber(ke, channels::RingChannel(1))); + subscribers.push_back(session2.declare_subscriber(ke, channels::RingChannel(1))); std::this_thread::sleep_for(1s); @@ -165,20 +173,24 @@ void put_sub_ring_channel(Talloc& alloc) { std::this_thread::sleep_for(1s); - auto res = subscriber.handler().recv(); - assert(std::holds_alternative(res)); - assert(std::get(res).get_keyexpr() == "zenoh/test"); - assert(std::get(res).get_payload().as_string() == "second"); + for (const auto& subscriber : subscribers) { + auto res = subscriber.handler().recv(); + assert(std::holds_alternative(res)); + assert(std::get(res).get_keyexpr() == "zenoh/test"); + assert(std::get(res).get_payload().as_string() == "second"); - res = subscriber.handler().try_recv(); - assert(std::holds_alternative(res)); - assert(std::get(res) == channels::RecvError::Z_NODATA); + res = subscriber.handler().try_recv(); + assert(std::holds_alternative(res)); + assert(std::get(res) == channels::RecvError::Z_NODATA); + } /// after session close subscriber handler should become disconnected session2.close(); - res = subscriber.handler().recv(); - assert(std::holds_alternative(res)); - assert(std::get(res) == channels::RecvError::Z_DISCONNECTED); + for (const auto& subscriber : subscribers) { + auto res = subscriber.handler().recv(); + assert(std::holds_alternative(res)); + assert(std::get(res) == channels::RecvError::Z_DISCONNECTED); + } } template