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()
|