Line data Source code
1 : /**
2 : * @file ListCreator_test.cxx ListCreator class Unit Tests
3 : *
4 : * This is part of the DUNE DAQ Application Framework, copyright 2020.
5 : * Licensing/copyright details are in the COPYING file that you should have
6 : * received with this code.
7 : */
8 :
9 : #include "../src/ListCreator.hpp"
10 :
11 : #include "iomanager/IOManager.hpp"
12 : #include "opmonlib/TestOpMonManager.hpp"
13 :
14 : #define BOOST_TEST_MODULE ListCreator_test // NOLINT
15 :
16 : #include "boost/test/unit_test.hpp"
17 :
18 : #include <string>
19 : #include <vector>
20 :
21 : using namespace dunedaq::listrev;
22 :
23 : const std::string TEST_OKS_DB = "config/lrSession.data.xml";
24 :
25 : BOOST_AUTO_TEST_SUITE(ListCreator_test)
26 :
27 : struct ConfigurationTestFixture
28 : {
29 2 : ConfigurationTestFixture()
30 2 : {
31 2 : confdb = std::make_shared<dunedaq::conffwk::Configuration>("oksconflibs:" + TEST_OKS_DB);
32 2 : confdb->get<dunedaq::confmodel::Queue>(queues);
33 2 : confdb->get<dunedaq::confmodel::NetworkConnection>(connections);
34 :
35 2 : queue_id = dunedaq::iomanager::ConnectionId{ "creates_queue", "CreateList" };
36 :
37 2 : dunedaq::get_iomanager()->configure(
38 : "IOManager_t", queues, connections, nullptr, opmgr); // Not using connectivity service
39 2 : }
40 2 : ~ConfigurationTestFixture() { dunedaq::get_iomanager()->reset(); }
41 :
42 : ConfigurationTestFixture(ConfigurationTestFixture const&) = default;
43 : ConfigurationTestFixture(ConfigurationTestFixture&&) = default;
44 : ConfigurationTestFixture& operator=(ConfigurationTestFixture const&) = default;
45 : ConfigurationTestFixture& operator=(ConfigurationTestFixture&&) = default;
46 :
47 : dunedaq::iomanager::ConnectionId queue_id;
48 :
49 : std::shared_ptr<dunedaq::conffwk::Configuration> confdb;
50 : std::vector<const dunedaq::confmodel::Queue*> queues;
51 : std::vector<const dunedaq::confmodel::NetworkConnection*> connections;
52 :
53 : dunedaq::opmonlib::TestOpMonManager opmgr;
54 : };
55 :
56 2 : BOOST_AUTO_TEST_CASE(BasicTests)
57 : {
58 1 : ListCreator create;
59 3 : BOOST_REQUIRE_EXCEPTION(create.send_create(0),
60 : dunedaq::iomanager::TimeoutExpired,
61 : [&](dunedaq::iomanager::TimeoutExpired) { return true; });
62 1 : }
63 :
64 2 : BOOST_FIXTURE_TEST_CASE(SendCreateQueue, ConfigurationTestFixture)
65 : {
66 1 : auto receiver = dunedaq::get_iomanager()->get_receiver<CreateList>(queue_id);
67 1 : size_t min_size = 1;
68 1 : size_t max_size = 10;
69 1 : ListCreator create("creates_queue", std::chrono::milliseconds(10), min_size, max_size);
70 :
71 1 : auto sz = create.send_create(0);
72 1 : auto ret = receiver->receive(dunedaq::iomanager::Receiver::s_no_block);
73 1 : BOOST_REQUIRE_EQUAL(ret.list_id, 0);
74 1 : BOOST_REQUIRE(ret.list_size >= min_size);
75 1 : BOOST_REQUIRE(ret.list_size <= max_size);
76 1 : BOOST_REQUIRE_EQUAL(sz, ret.list_size);
77 :
78 1 : sz = create.send_create(1);
79 1 : ret = receiver->receive(dunedaq::iomanager::Receiver::s_no_block);
80 1 : BOOST_REQUIRE_EQUAL(ret.list_id, 1);
81 1 : BOOST_REQUIRE(ret.list_size >= min_size);
82 1 : BOOST_REQUIRE(ret.list_size <= max_size);
83 1 : BOOST_REQUIRE_EQUAL(sz, ret.list_size);
84 1 : }
85 :
86 2 : BOOST_FIXTURE_TEST_CASE(MaxAndMin, ConfigurationTestFixture)
87 : {
88 : // Minimum list size is 1
89 1 : auto receiver = dunedaq::get_iomanager()->get_receiver<CreateList>(queue_id);
90 1 : ListCreator create("creates_queue", std::chrono::milliseconds(10), -2, 1);
91 :
92 1 : auto sz = create.send_create(0);
93 1 : auto ret = receiver->receive(dunedaq::iomanager::Receiver::s_no_block);
94 1 : BOOST_REQUIRE_EQUAL(ret.list_id, 0);
95 1 : BOOST_REQUIRE_EQUAL(ret.list_size, 1);
96 1 : BOOST_REQUIRE_EQUAL(sz, 1);
97 :
98 : // If max < min, then max = min
99 1 : ListCreator create2("creates_queue", std::chrono::milliseconds(10), 2, 1);
100 :
101 1 : sz = create2.send_create(0);
102 1 : ret = receiver->receive(dunedaq::iomanager::Receiver::s_no_block);
103 1 : BOOST_REQUIRE_EQUAL(ret.list_id, 0);
104 1 : BOOST_REQUIRE_EQUAL(ret.list_size, 2);
105 1 : BOOST_REQUIRE_EQUAL(sz, 2);
106 1 : }
107 :
108 : BOOST_AUTO_TEST_SUITE_END()
|