diff --git a/unittest/DFOModule_test.cxx b/unittest/DFOModule_test.cxx index 91b46d3..690ca08 100644 --- a/unittest/DFOModule_test.cxx +++ b/unittest/DFOModule_test.cxx @@ -12,10 +12,10 @@ #include "dfmessages/TriggerDecisionToken.hpp" #include "dfmessages/TriggerInhibit.hpp" #include "dfmodules/CommonIssues.hpp" +#include "dfmodules/opmon/DFOModule.pb.h" #include "iomanager/IOManager.hpp" #include "iomanager/Sender.hpp" #include "opmonlib/TestOpMonManager.hpp" -#include "dfmodules/opmon/DFOModule.pb.h" #define BOOST_TEST_MODULE DFOModule_test // NOLINT @@ -30,7 +30,6 @@ using namespace dunedaq::dfmodules; namespace dunedaq { - struct EnvFixture { EnvFixture() { setenv("DUNEDAQ_PARTITION", "partition_name", 0); } @@ -40,33 +39,32 @@ BOOST_TEST_GLOBAL_FIXTURE(EnvFixture); struct CfgFixture { CfgFixture() - { std::string oksConfig = "oksconflibs:test/config/datafloworchestrator_test.data.xml"; + { + std::string oksConfig = "oksconflibs:test/config/datafloworchestrator_test.data.xml"; std::string appName = "TestApp"; std::string sessionName = "partition_name"; cfgMgr = std::make_shared(oksConfig, appName, sessionName); get_iomanager()->configure(sessionName, cfgMgr->get_queues(), cfgMgr->get_networkconnections(), nullptr, opmgr); } - ~CfgFixture() { - get_iomanager()->reset(); - } + ~CfgFixture() { get_iomanager()->reset(); } - auto get_dfo_info() { + auto get_dfo_info() + { opmgr.collect(); auto opmon_facility = opmgr.get_backend_facility(); auto list = opmon_facility->get_entries(std::regex(".*DFOInfo")); BOOST_REQUIRE_EQUAL(list.size(), 1); - const auto & entry = list.front(); - return opmonlib::from_entry( entry ); + const auto& entry = list.front(); + return opmonlib::from_entry(entry); } - + dunedaq::opmonlib::TestOpMonManager opmgr; std::shared_ptr cfgMgr; }; BOOST_FIXTURE_TEST_SUITE(DFOModule_test, CfgFixture) - void send_init_token(std::string connection_name = "trigdec_0") { @@ -147,13 +145,14 @@ BOOST_AUTO_TEST_CASE(Commands) opmgr.register_node("dfo", dfo); dfo->init(cfgMgr); - auto start_json = static_cast("{\"run\": 1}"_json); - appfwk::DAQModule::CommandData_t null_json; + appfwk::DAQModule::CommandData_t null_data; + appfwk::DAQModule::CommandData_t start_data; + start_data.emplace("run", 1); - dfo->execute_command("conf", null_json); - dfo->execute_command("start", start_json); - dfo->execute_command("drain_dataflow", null_json); - dfo->execute_command("scrap", null_json); + dfo->execute_command("conf", null_data); + dfo->execute_command("start", start_data); + dfo->execute_command("drain_dataflow", null_data); + dfo->execute_command("scrap", null_data); auto metric = get_dfo_info(); BOOST_REQUIRE_EQUAL(metric.tokens_received(), 0); @@ -164,7 +163,6 @@ BOOST_AUTO_TEST_CASE(Commands) BOOST_REQUIRE_EQUAL(metric.deciding_destination(), 0); BOOST_REQUIRE_EQUAL(metric.waiting_for_token(), 0); BOOST_REQUIRE_EQUAL(metric.processing_token(), 0); - } BOOST_AUTO_TEST_CASE(DataFlow) @@ -173,10 +171,11 @@ BOOST_AUTO_TEST_CASE(DataFlow) opmgr.register_node("dfo", dfo); dfo->init(cfgMgr); - auto start_json = static_cast("{\"run\": 1}"_json); - appfwk::DAQModule::CommandData_t null_json; + appfwk::DAQModule::CommandData_t null_data; + appfwk::DAQModule::CommandData_t start_data; + start_data.emplace("run", 1); - dfo->execute_command("conf", null_json); + dfo->execute_command("conf", null_data); auto iom = iomanager::IOManager::get(); auto dec_recv = iom->get_receiver("trigdec_0"); @@ -191,14 +190,12 @@ BOOST_AUTO_TEST_CASE(DataFlow) send_token(9999, "trigdec_0", true); std::this_thread::sleep_for(std::chrono::milliseconds(50)); - - // Note: Counters are reset by calling get_dfo_info! auto metric = get_dfo_info(); - + BOOST_REQUIRE_EQUAL(metric.tokens_received(), 0); - dfo->execute_command("start", start_json); + dfo->execute_command("start", start_data); send_init_token(); std::this_thread::sleep_for(std::chrono::milliseconds(150)); @@ -227,8 +224,8 @@ BOOST_AUTO_TEST_CASE(DataFlow) BOOST_REQUIRE_EQUAL(metric.decisions_sent(), 1); BOOST_REQUIRE(!busy_signal_recvd.load()); - dfo->execute_command("drain_dataflow", null_json); - dfo->execute_command("scrap", null_json); + dfo->execute_command("drain_dataflow", null_data); + dfo->execute_command("scrap", null_data); dec_recv->remove_callback(); inh_recv->remove_callback(); @@ -240,12 +237,13 @@ BOOST_AUTO_TEST_CASE(SendTrigDecFailed) opmgr.register_node("dfo", dfo); dfo->init(cfgMgr); - auto start_json = static_cast("{\"run\": 1}"_json); - appfwk::DAQModule::CommandData_t null_json; + appfwk::DAQModule::CommandData_t null_data; + appfwk::DAQModule::CommandData_t start_data; + start_data.emplace("run", 1); - dfo->execute_command("conf", null_json); + dfo->execute_command("conf", null_data); - dfo->execute_command("start", start_json); + dfo->execute_command("start", start_data); send_init_token("invalid_connection"); @@ -267,8 +265,8 @@ BOOST_AUTO_TEST_CASE(SendTrigDecFailed) send_token(1000); std::this_thread::sleep_for(std::chrono::milliseconds(50)); - dfo->execute_command("drain_dataflow", null_json); - dfo->execute_command("scrap", null_json); + dfo->execute_command("drain_dataflow", null_data); + dfo->execute_command("scrap", null_data); } BOOST_AUTO_TEST_SUITE_END()