phosphor-logging: add rsyslog configuration for TCP, UDP
Add possibility to set TCP or UDP as transport protocol for rsyslog
configuration.
Depends on change of dbus interfaces in:
https://gerrit.openbmc.org/c/openbmc/phosphor-dbus-interfaces/+/64224
Tested: "@" set for UDP and "@@" for TCP in configuration file.
Change-Id: Ie849fb64b5e6cc8d87d7a984cd4d326e39aeb4ea
Signed-off-by: Ivan Mikhaylov <fr0st61te@gmail.com>
diff --git a/test/remote_logging_test_config.cpp b/test/remote_logging_test_config.cpp
index f21904b..b48185a 100644
--- a/test/remote_logging_test_config.cpp
+++ b/test/remote_logging_test_config.cpp
@@ -8,7 +8,8 @@
namespace rsyslog_config::internal
{
-extern std::optional<std::pair<std::string, uint32_t>>
+extern std::optional<
+ std::tuple<std::string, uint32_t, NetworkClient::TransportProtocol>>
parseConfig(std::istream& ss);
}
@@ -76,8 +77,8 @@
std::stringstream ss(str);
auto ret = phosphor::rsyslog_config::internal::parseConfig(ss);
EXPECT_TRUE(ret);
- EXPECT_EQ(ret->first, "abcd:ef01::01");
- EXPECT_EQ(ret->second, 50000);
+ EXPECT_EQ(std::get<0>(*ret), "abcd:ef01::01");
+ EXPECT_EQ(std::get<1>(*ret), 50000);
}
TEST_F(TestRemoteLogging, parseConfigBadIpv6WithoutRightBracket)
@@ -134,6 +135,38 @@
EXPECT_FALSE(ret);
}
+TEST_F(TestRemoteLogging, parseConfigTCP)
+{
+ // A good case
+ std::string str = "*.* @@[abcd:ef01::01]:50000";
+ std::stringstream ss(str);
+ auto ret = phosphor::rsyslog_config::internal::parseConfig(ss);
+ EXPECT_TRUE(ret);
+ EXPECT_EQ(std::get<2>(*ret),
+ phosphor::rsyslog_config::NetworkClient::TransportProtocol::TCP);
+}
+
+TEST_F(TestRemoteLogging, parseConfigUdp)
+{
+ // A good case
+ std::string str = "*.* @[abcd:ef01::01]:50000";
+ std::stringstream ss(str);
+ auto ret = phosphor::rsyslog_config::internal::parseConfig(ss);
+ EXPECT_TRUE(ret);
+ EXPECT_EQ(std::get<2>(*ret),
+ phosphor::rsyslog_config::NetworkClient::TransportProtocol::UDP);
+}
+
+TEST_F(TestRemoteLogging, createUdpConfig)
+{
+ // A good case
+ config->address("abcd:ef01::01");
+ config->port(50000);
+ config->transportProtocol(
+ phosphor::rsyslog_config::NetworkClient::TransportProtocol::UDP);
+ EXPECT_EQ(getConfig(configFilePath.c_str()), "*.* @[abcd:ef01::01]:50000");
+}
+
} // namespace test
} // namespace logging
} // namespace phosphor