ifw-daq 3.1.0
IFW Data Acquisition modules
Loading...
Searching...
No Matches
testConfigManager.cpp
Go to the documentation of this file.
1/**
2 * @file
3 * @ingroup daq_ocm_libdaq_test
4 * @copyright (c) Copyright ESO 2022
5 * All Rights Reserved
6 * ESO (eso.org) is an Intergovernmental Organisation, and therefore special legal conditions apply.
7 *
8 * @brief Test log4cplus helpers
9 */
10#include <gtest/gtest.h>
11
13#include <fmt/ostream.h>
14
15struct TestConfig {
16 int value0 = 0; // default
17 std::string value1 = "default"; // default
18};
19
20class TestConfigManager : public ::testing::Test {
21public:
23 : m_config(), m_config_manager(log4cplus::Logger::getInstance("test")) {
24 }
25
26protected:
29};
30
32 m_config_manager.Register(&m_config.value0, {"value0", "description"});
33 m_config_manager.Register(&m_config.value1, {"value1", "description"});
34
35 EXPECT_THROW(m_config_manager.Register(&m_config.value0, {}), std::invalid_argument);
36}
37
39 m_config_manager.Register(&m_config.value0, {"value0", "description value0"});
40
41 auto val = m_config_manager.Get(&m_config.value0);
42 EXPECT_EQ(val.value, m_config.value0);
43 EXPECT_EQ(val.origin.origin, daq::config::Origin::Default);
44 EXPECT_EQ(val.origin.description, "");
45 EXPECT_EQ(val.metadata.canonical_name, "value0");
46 EXPECT_EQ(val.metadata.description, "description value0");
47
48 EXPECT_THROW(m_config_manager.Get(&m_config.value1), std::invalid_argument)
49 << "value1 has not been registered and Get() should throw invalid_argument in that case";
50}
51
53 m_config_manager.Register(&m_config.value0, {"value0", "description value0"});
54 m_config_manager.Register(&m_config.value1, {"value1", "description value1"});
55
56 {
57 // Pre-test check (covered by testcase "Get")
58 auto val = m_config_manager.Get(&m_config.value0);
59 EXPECT_EQ(val.value, m_config.value0);
60 ASSERT_EQ(val.origin.origin, daq::config::Origin::Default);
61 }
62
63 // Test
64 m_config_manager.Update(&m_config.value0, 2, {daq::config::Origin::CommandLine, "args"});
65 auto val = m_config_manager.Get(&m_config.value0);
66 EXPECT_EQ(val.value, m_config.value0);
68 EXPECT_EQ(val.origin.description, "args");
69 EXPECT_EQ(val.metadata.canonical_name, "value0");
70 EXPECT_EQ(val.metadata.description, "description value0");
71}
daq::config::Manager m_config_manager
Maintains the associativity of configuration attributes with metadata and value origin/priority.
Definition: manager.hpp:161
daq::config::Manager and associated types.
@ Default
Built-in default value.
@ CommandLine
Command line argument.
std::string value1
TEST_F(TestConfigManager, Register)
EXPECT_EQ(meta.rr_uri, "zpb.rr://meta")
ASSERT_EQ(meta.keyword_rules.size(), 1u)