LCOV - code coverage report
Current view: top level - artdaq-mu2e/test/Generators - ZmqPubSub_test.cc (source / functions) Coverage Total Hit
Test: mu2edaq.info.cleaned Lines: 100.0 % 42 42
Test Date: 2026-07-30 01:56:44 Functions: 100.0 % 8 8

            Line data    Source code
       1              : #define BOOST_TEST_MODULE ZmqPubSub_test
       2              : #include <boost/test/unit_test.hpp>
       3              : 
       4              : #include "TRACE/tracemf.h"
       5              : #define TRACE_NAME "ZmqPubSub_test"
       6              : 
       7              : #include "zmq.hpp"
       8              : 
       9              : BOOST_AUTO_TEST_SUITE(ZmqPubSub_test)
      10              : 
      11            2 : BOOST_AUTO_TEST_CASE(ZmqContext)
      12              : {
      13            1 :         zmq::context_t context;
      14            1 :         context.close();
      15            1 : }
      16              : 
      17            2 : BOOST_AUTO_TEST_CASE(Socket)
      18              : {
      19            1 :         zmq::context_t context;
      20            1 :         zmq::socket_t socket(context, zmq::socket_type::pub);
      21            1 :         socket.close();
      22            1 :         context.close();
      23            1 : }
      24              : 
      25            2 : BOOST_AUTO_TEST_CASE(Subscribe)
      26              : {
      27            1 :         zmq::context_t context;
      28            1 :         zmq::socket_t socket(context, zmq::socket_type::sub);
      29            1 :         socket.set(zmq::sockopt::subscribe, "test");
      30            1 :         socket.close();
      31            1 :         context.close();
      32            1 : }
      33              : 
      34            2 : BOOST_AUTO_TEST_CASE(Publish)
      35              : {
      36            1 :         zmq::context_t context;
      37            1 :         zmq::socket_t pub_socket(context, zmq::socket_type::pub);
      38            1 :         zmq::socket_t sub_socket(context, zmq::socket_type::sub);
      39              : 
      40            1 :         pub_socket.bind("inproc://test");
      41            1 :         sub_socket.connect("inproc://test");
      42              : 
      43            1 :         sub_socket.set(zmq::sockopt::subscribe, "test");
      44            1 :         std::string message = "test message";
      45            1 :         pub_socket.send(zmq::buffer("test"), zmq::send_flags::sndmore);
      46            1 :         pub_socket.send(zmq::buffer(message), zmq::send_flags::none);
      47              : 
      48            1 :         std::string received_topic;
      49            1 :         received_topic.resize(4);
      50            1 :         std::string received_message;
      51            1 :         received_message.resize(message.size());
      52              : 
      53            1 :         auto hdr_ret = sub_socket.recv(zmq::buffer(received_topic), zmq::recv_flags::none);
      54            1 :         BOOST_REQUIRE(hdr_ret.has_value());
      55            1 :         BOOST_REQUIRE_EQUAL(hdr_ret.value().size, 4);
      56              : 
      57            1 :         auto ret = sub_socket.recv(zmq::buffer(received_message), zmq::recv_flags::none);
      58            1 :         BOOST_REQUIRE(ret.has_value());
      59            1 :         BOOST_REQUIRE_EQUAL(ret.value().size, message.size());
      60            1 :         BOOST_REQUIRE_EQUAL(message, received_message);
      61              : 
      62            1 :         sub_socket.close();
      63            1 :         pub_socket.close();
      64            1 :         context.close();
      65            1 : }
      66              : 
      67              : BOOST_AUTO_TEST_SUITE_END()
        

Generated by: LCOV version 2.0-1