config_parser: Cleanups and modern c++ standards
This was exposing many functions and semantics that are unused by the
application. The goal is to simplify the interface and convert to using
types like `string_view` and referenceable lists where possible.
Change-Id: I4cba6326f9a96a943d384165e656f8589f931959
Signed-off-by: William A. Kennington III <wak@google.com>
diff --git a/test/test_config_parser.cpp b/test/test_config_parser.cpp
index 7866f87..6aa3811 100644
--- a/test/test_config_parser.cpp
+++ b/test/test_config_parser.cpp
@@ -1,5 +1,3 @@
-#include "config.h"
-
#include "config_parser.hpp"
#include <fmt/format.h>
@@ -11,78 +9,48 @@
#include <stdplus/gtest/tmp.hpp>
#include <xyz/openbmc_project/Common/error.hpp>
+#include <gmock/gmock.h>
#include <gtest/gtest.h>
namespace phosphor
{
namespace network
{
+namespace config
+{
+
+using testing::ElementsAre;
class TestConfigParser : public stdplus::gtest::TestWithTmp
{
public:
- config::Parser parser;
- TestConfigParser()
+ std::string filename = fmt::format("{}/eth0.network", CaseTmpDir());
+ Parser parser;
+
+ void WriteSampleFile()
{
- auto filename = fmt::format("{}/eth0.network", CaseTmpDir());
std::ofstream filestream(filename);
-
- filestream << "[Match]\nName=eth0\n"
- << "[Network]\nDHCP=true\n[DHCP]\nClientIdentifier= mac\n";
+ filestream << "\n\n\n\nBad=key\n[Match]\n # K=v \nName =eth0\n"
+ << "[Network\nDHCP=true\n[DHCP]\nClientIdentifier= mac\n"
+ << "[Network] a\nDHCP=false #hi\n\n\nDHCP = yes \n"
+ << " [ SEC ] \n'DHCP#'=\"#hi\"\nDHCP#=ho\n[Network]\n"
+ << "Key=val\nAddress=::/0\n[]\n=\nKey";
filestream.close();
- parser.setFile(filename);
- }
-
- bool isValueFound(const std::vector<std::string>& values,
- const std::string& expectedValue)
- {
- for (const auto& value : values)
- {
- if (expectedValue == value)
- {
- return true;
- }
- }
- return false;
}
};
TEST_F(TestConfigParser, ReadConfigDataFromFile)
{
- config::ReturnCode rc = config::ReturnCode::SUCCESS;
- config::ValueList values;
+ WriteSampleFile();
+ parser.setFile(filename);
- std::tie(rc, values) = parser.getValues("Network", "DHCP");
- std::string expectedValue = "true";
- bool found = isValueFound(values, expectedValue);
- EXPECT_EQ(found, true);
-
- std::tie(rc, values) = parser.getValues("DHCP", "ClientIdentifier");
- expectedValue = "mac";
- found = isValueFound(values, expectedValue);
- EXPECT_EQ(found, true);
-
- std::tie(rc, values) = parser.getValues("Match", "Name");
- expectedValue = "eth0";
- found = isValueFound(values, expectedValue);
- EXPECT_EQ(found, true);
+ EXPECT_THAT(parser.getValues("Match", "Name"), ElementsAre("eth0"));
+ EXPECT_THAT(parser.getValues("DHCP", "ClientIdentifier"),
+ ElementsAre("mac"));
+ EXPECT_THAT(parser.getValues("Blah", "nil"), ElementsAre());
+ EXPECT_THAT(parser.getValues("Network", "nil"), ElementsAre());
}
-TEST_F(TestConfigParser, SectionNotExist)
-{
- config::ReturnCode rc = config::ReturnCode::SUCCESS;
- config::ValueList values;
- std::tie(rc, values) = parser.getValues("abc", "ipaddress");
- EXPECT_EQ(config::ReturnCode::SECTION_NOT_FOUND, rc);
-}
-
-TEST_F(TestConfigParser, KeyNotFound)
-{
- config::ReturnCode rc = config::ReturnCode::SUCCESS;
- config::ValueList values;
- std::tie(rc, values) = parser.getValues("Network", "abc");
- EXPECT_EQ(config::ReturnCode::KEY_NOT_FOUND, rc);
-}
-
+} // namespace config
} // namespace network
} // namespace phosphor
diff --git a/test/test_ethernet_interface.cpp b/test/test_ethernet_interface.cpp
index 24fe5fb..0fd2444 100644
--- a/test/test_ethernet_interface.cpp
+++ b/test/test_ethernet_interface.cpp
@@ -162,10 +162,7 @@
fs::path filePath = confDir;
filePath /= "00-bmc-test0.network";
config::Parser parser(filePath.string());
- config::ReturnCode rc = config::ReturnCode::SUCCESS;
- config::ValueList values;
- std::tie(rc, values) = parser.getValues("Network", "DNS");
- EXPECT_EQ(servers, values);
+ EXPECT_EQ(servers, parser.getValues("Network", "DNS"));
}
TEST_F(TestEthernetInterface, addDynamicNameServers)
@@ -191,10 +188,7 @@
fs::path filePath = confDir;
filePath /= "00-bmc-test0.network";
config::Parser parser(filePath.string());
- config::ReturnCode rc = config::ReturnCode::SUCCESS;
- config::ValueList values;
- std::tie(rc, values) = parser.getValues("Network", "NTP");
- EXPECT_EQ(servers, values);
+ EXPECT_EQ(servers, parser.getValues("Network", "NTP"));
}
TEST_F(TestEthernetInterface, addGateway)
diff --git a/test/test_vlan_interface.cpp b/test/test_vlan_interface.cpp
index ea8eb01..126d2d0 100644
--- a/test/test_vlan_interface.cpp
+++ b/test/test_vlan_interface.cpp
@@ -8,7 +8,6 @@
#include <net/if.h>
#include <netinet/in.h>
-#include <exception>
#include <filesystem>
#include <sdbusplus/bus.hpp>
#include <stdplus/gtest/tmp.hpp>
@@ -94,19 +93,6 @@
{
interface.ip(addressType, ipaddress, subnetMask, gateway);
}
-
- bool isValueFound(const std::vector<std::string>& values,
- const std::string& expectedValue)
- {
- for (const auto& value : values)
- {
- if (expectedValue == value)
- {
- return true;
- }
- }
- return false;
- }
};
TEST_F(TestVlanInterface, createVLAN)
@@ -116,23 +102,11 @@
filePath /= "test0.50.netdev";
config::Parser parser(filePath.string());
- config::ReturnCode rc = config::ReturnCode::SUCCESS;
- config::ValueList values;
- std::tie(rc, values) = parser.getValues("NetDev", "Name");
- std::string expectedValue = "test0.50";
- bool found = isValueFound(values, expectedValue);
- EXPECT_EQ(found, true);
-
- std::tie(rc, values) = parser.getValues("NetDev", "Kind");
- expectedValue = "vlan";
- found = isValueFound(values, expectedValue);
- EXPECT_EQ(found, true);
-
- std::tie(rc, values) = parser.getValues("VLAN", "Id");
- expectedValue = "50";
- found = isValueFound(values, expectedValue);
- EXPECT_EQ(found, true);
+ EXPECT_EQ(parser.getValues("NetDev", "Name"),
+ (config::ValueList{"test0.50"}));
+ EXPECT_EQ(parser.getValues("NetDev", "Kind"), (config::ValueList{"vlan"}));
+ EXPECT_EQ(parser.getValues("VLAN", "Id"), (config::ValueList{"50"}));
}
TEST_F(TestVlanInterface, deleteVLAN)
@@ -158,36 +132,18 @@
fs::path filePath = confDir;
filePath /= "test0.50.netdev";
config::Parser parser(filePath.string());
- config::ReturnCode rc = config::ReturnCode::SUCCESS;
- config::ValueList values;
-
- std::tie(rc, values) = parser.getValues("NetDev", "Name");
- std::string expectedValue = "test0.50";
- bool found = isValueFound(values, expectedValue);
- EXPECT_EQ(found, true);
-
- std::tie(rc, values) = parser.getValues("NetDev", "Kind");
- expectedValue = "vlan";
- found = isValueFound(values, expectedValue);
- EXPECT_EQ(found, true);
-
- std::tie(rc, values) = parser.getValues("VLAN", "Id");
- expectedValue = "50";
- found = isValueFound(values, expectedValue);
- EXPECT_EQ(found, true);
+ EXPECT_EQ(parser.getValues("NetDev", "Name"),
+ (config::ValueList{"test0.50"}));
+ EXPECT_EQ(parser.getValues("NetDev", "Kind"), (config::ValueList{"vlan"}));
+ EXPECT_EQ(parser.getValues("VLAN", "Id"), (config::ValueList{"50"}));
filePath = confDir;
filePath /= "test0.60.netdev";
parser.setFile(filePath.string());
- std::tie(rc, values) = parser.getValues("NetDev", "Name");
- expectedValue = "test0.60";
- found = isValueFound(values, expectedValue);
- EXPECT_EQ(found, true);
-
- std::tie(rc, values) = parser.getValues("VLAN", "Id");
- expectedValue = "60";
- found = isValueFound(values, expectedValue);
- EXPECT_EQ(found, true);
+ EXPECT_EQ(parser.getValues("NetDev", "Name"),
+ (config::ValueList{"test0.60"}));
+ EXPECT_EQ(parser.getValues("NetDev", "Kind"), (config::ValueList{"vlan"}));
+ EXPECT_EQ(parser.getValues("VLAN", "Id"), (config::ValueList{"60"}));
deleteVlan("test0.50");
deleteVlan("test0.60");