LCOV - code coverage report
Current view: top level - listrev/unittest - ListCreator_test.cxx (source / functions) Coverage Total Hit
Test: code.result Lines: 100.0 % 46 46
Test Date: 2025-12-21 13:07:08 Functions: 100.0 % 9 9

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

Generated by: LCOV version 2.0-1