Skip to content

Commit

Permalink
[config] Test for yaml read and write (#2062)
Browse files Browse the repository at this point in the history
  • Loading branch information
Peguen authored Mar 6, 2025
1 parent ae79d12 commit 9f2bf04
Show file tree
Hide file tree
Showing 4 changed files with 269 additions and 113 deletions.
4 changes: 2 additions & 2 deletions ecal/core/src/config/configuration_to_yaml.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -464,14 +464,14 @@ namespace YAML
{
Node node;
node["layer"] = config_.layer;
node["drop_out_of_order_message"] = config_.drop_out_of_order_messages;
node["drop_out_of_order_messages"] = config_.drop_out_of_order_messages;
return node;
}

bool convert<eCAL::Subscriber::Configuration>::decode(const Node& node_, eCAL::Subscriber::Configuration& config_)
{
AssignValue<eCAL::Subscriber::Layer::Configuration>(config_.layer, node_, "layer");
AssignValue<bool>(config_.drop_out_of_order_messages, node_, "dropt_out_of_order_messages");
AssignValue<bool>(config_.drop_out_of_order_messages, node_, "drop_out_of_order_messages");
return true;
}

Expand Down
1 change: 1 addition & 0 deletions ecal/tests/cpp/config_test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ endif()
set(config_test_src
src/config_test.cpp
src/path_processing_test.cpp
src/yaml_processing_test.cpp
${ECAL_CORE_PROJECT_ROOT}/core/src/config/default_configuration.cpp
${ECAL_CORE_PROJECT_ROOT}/core/src/config/ecal_path_processing.cpp
)
Expand Down
112 changes: 1 addition & 111 deletions ecal/tests/cpp/config_test/src/config_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,10 @@

#include <ecal/core.h>
#include <ecal/config.h>
#include "ini_file.h"

#include <gtest/gtest.h>

#include <fstream>
#include <iostream>
#include <stdexcept>
#include <stdio.h>
#include <string>
#include <vector>

Expand Down Expand Up @@ -144,110 +140,4 @@ TEST(core_cpp_config /*unused*/, config_custom_datatypes_tests /*unused*/)
config1 = config2ref;

EXPECT_EQ(config1.transport_layer.udp.network.group, testValue);
}


#ifdef ECAL_CORE_CONFIGURATION
TEST(core_cpp_config /*unused*/, read_write_file_test /*unused*/)
{
// create a custom ini file
std::string ini_file_name = "customIni.yml";
std::ofstream custom_ini_file(ini_file_name);

if (custom_ini_file.is_open())
{
custom_ini_file << ini_file_as_string_yaml;
custom_ini_file.close();
}
else
{
std::cerr << "Error opening file for ini writing" << "\n";
FAIL() << "Error opening file for ini writing";
return;
}

eCAL::Configuration config{};
EXPECT_NO_THROW(eCAL::Config::YamlFileToConfig(ini_file_name, config));

EXPECT_EQ(true, eCAL::Config::ConfigToYamlFile("myTest.yml", config));

remove(ini_file_name.data());
remove("myTest.yml");
}

TEST(core_cpp_config /*unused*/, parse_values_test /*unused*/)
{
eCAL::Configuration config{};
EXPECT_NO_THROW(eCAL::Config::YamlStringToConfig(ini_file_as_string_yaml, config));

// Check string
EXPECT_EQ(config.application.startup.terminal_emulator, "myTestTerminal");

// Check equality of IpAddressV4
EXPECT_EQ(config.transport_layer.udp.network.group, "239.5.0.1");

// Check boolean
EXPECT_EQ(config.transport_layer.udp.npcap_enabled, true);

// Check unsigned size_t
EXPECT_EQ(config.transport_layer.tcp.max_reconnections, 7);

// Check unsigned int
EXPECT_EQ(config.publisher.layer.shm.acknowledge_timeout_ms, 346U);
}

TEST(core_cpp_config /*unused*/, yaml_node_merger /*unused*/)
{
YAML::Node node_1{};
YAML::Node node_2{};

node_1["test"] = 1;
node_2["test"] = 2;
node_2[3] = "I have an int key!";

node_1["test2"] = 3;

node_1["firstLayer1"]["secondLayer1"] = "192.168.0.2";
node_2["firstLayer1"]["secondLayer1"] = "192.168.0.5";

// try also with a sequence
node_2["firstLayer2"]["secondLayer2"] = YAML::Load("[1, 2, 3]");

eCAL::Config::MergeYamlNodes(node_1, node_2);

EXPECT_EQ(node_1["test"], node_2["test"]);
EXPECT_EQ(node_1[3], node_2[3]);
EXPECT_EQ(node_1["3"], node_2["3"]);
EXPECT_EQ(node_1["firstLayer1"]["secondLayer1"], node_2["firstLayer1"]["secondLayer1"]);
EXPECT_EQ(node_1["firstLayer2"]["secondLayer2"], node_2["firstLayer2"]["secondLayer2"]);
}

TEST(core_cpp_config /*unused*/, yaml_to_config_merger /*unused*/)
{
// create a custom ini file
std::string ini_file_name = "customIni.yml";
std::ofstream custom_ini_file(ini_file_name);

if (custom_ini_file.is_open())
{
custom_ini_file << ini_file_as_string_yaml;
custom_ini_file.close();
}
else
{
std::cerr << "Error opening file for ini writing" << "\n";
FAIL() << "Error opening file for ini writing";
return;
}

eCAL::Configuration config{};

EXPECT_TRUE(config.publisher.layer.shm.enable);

eCAL::Config::MergeYamlIntoConfiguration(ini_file_name, config);

EXPECT_FALSE(config.publisher.layer.shm.enable);

remove(ini_file_name.data());
}
#endif
}
Loading

0 comments on commit 9f2bf04

Please sign in to comment.