Line data Source code
1 : /**
2 : * @file DataRequest_test.cxx DataRequest 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 "dfmessages/DataRequest.hpp"
10 :
11 : /**
12 : * @brief Name of this test module
13 : */
14 : #define BOOST_TEST_MODULE DataRequest_test // NOLINT
15 :
16 : #include "TRACE/trace.h"
17 : #include "boost/test/unit_test.hpp"
18 :
19 : using namespace dunedaq::dfmessages;
20 :
21 : BOOST_AUTO_TEST_SUITE(DataRequest_test)
22 :
23 : /**
24 : * @brief Check that DataRequests have appropriate Copy/Move semantics
25 : */
26 2 : BOOST_AUTO_TEST_CASE(CopyAndMoveSemantics)
27 : {
28 1 : BOOST_REQUIRE(std::is_copy_constructible_v<DataRequest>);
29 1 : BOOST_REQUIRE(std::is_copy_assignable_v<DataRequest>);
30 1 : BOOST_REQUIRE(std::is_move_constructible_v<DataRequest>);
31 1 : BOOST_REQUIRE(std::is_move_assignable_v<DataRequest>);
32 1 : }
33 :
34 2 : BOOST_AUTO_TEST_CASE(SerDes_MsgPack)
35 : {
36 :
37 1 : DataRequest dr;
38 1 : dr.request_number = 1;
39 1 : dr.trigger_number = 2;
40 1 : dr.trigger_timestamp = 3;
41 1 : SourceID sid;
42 1 : sid.subsystem = SourceID::Subsystem::kDetectorReadout;
43 1 : sid.id = 1;
44 1 : ComponentRequest cr;
45 1 : cr.component = sid;
46 1 : cr.window_begin = 4;
47 1 : cr.window_end = 5;
48 1 : dr.request_information = cr;
49 1 : dr.readout_type = ReadoutType::kLocalized;
50 1 : dr.run_number = 6;
51 1 : dr.sequence_number = 10;
52 1 : dr.data_destination = "test";
53 :
54 1 : auto bytes = dunedaq::serialization::serialize(dr, dunedaq::serialization::kMsgPack);
55 3 : TLOG(TLVL_INFO) << "MsgPack message size: " << bytes.size() << " bytes";
56 1 : DataRequest dr_deserialized = dunedaq::serialization::deserialize<DataRequest>(bytes);
57 :
58 1 : BOOST_REQUIRE_EQUAL(dr.request_number, dr_deserialized.request_number);
59 1 : BOOST_REQUIRE_EQUAL(dr.trigger_number, dr_deserialized.trigger_number);
60 1 : BOOST_REQUIRE_EQUAL(dr.trigger_timestamp, dr_deserialized.trigger_timestamp);
61 1 : BOOST_REQUIRE_EQUAL(dr.request_information.window_begin, dr_deserialized.request_information.window_begin);
62 1 : BOOST_REQUIRE_EQUAL(dr.request_information.window_end, dr_deserialized.request_information.window_end);
63 1 : BOOST_REQUIRE_EQUAL(dr.run_number, dr_deserialized.run_number);
64 1 : BOOST_REQUIRE_EQUAL(dr.sequence_number, dr_deserialized.sequence_number);
65 1 : BOOST_REQUIRE_EQUAL(dr.data_destination, dr_deserialized.data_destination);
66 1 : BOOST_REQUIRE_EQUAL(static_cast<uint16_t>(dr.readout_type), // NOLINT(build/unsigned)
67 : static_cast<uint16_t>(dr_deserialized.readout_type)); // NOLINT(build/unsigned)
68 1 : }
69 : BOOST_AUTO_TEST_SUITE_END()
|