config_parser: Reduce number of file reads
This changes focuses on reducing the number of Parser() constructions to
limit the number of duplicate file reads.
Change-Id: I05df943844c70dc6aa729ab744d2d405cbfe2c76
Signed-off-by: William A. Kennington III <wak@google.com>
diff --git a/test/mock_ethernet_interface.hpp b/test/mock_ethernet_interface.hpp
index b8c3335..a0358ed 100644
--- a/test/mock_ethernet_interface.hpp
+++ b/test/mock_ethernet_interface.hpp
@@ -13,9 +13,9 @@
{
public:
MockEthernetInterface(sdbusplus::bus_t& bus, const std::string& objPath,
- DHCPConf dhcpEnabled, Manager& parent,
- bool emitSignal) :
- EthernetInterface(bus, objPath, dhcpEnabled, parent, emitSignal,
+ const config::Parser& config, DHCPConf dhcpEnabled,
+ Manager& parent, bool emitSignal) :
+ EthernetInterface(bus, objPath, config, dhcpEnabled, parent, emitSignal,
/*nicEnabled=*/true)
{
}
diff --git a/test/mock_network_manager.hpp b/test/mock_network_manager.hpp
index 741cee9..46c7c4b 100644
--- a/test/mock_network_manager.hpp
+++ b/test/mock_network_manager.hpp
@@ -1,7 +1,4 @@
#pragma once
-
-#include "config.h"
-
#include "mock_ethernet_interface.hpp"
#include "network_manager.hpp"
@@ -34,13 +31,14 @@
fs::path objPath = objectPath;
// normal ethernet interface
objPath /= interface;
- auto dhcp = getDHCPValue(confDir, interface);
+ config::Parser config(config::pathForIntfConf(confDir, interface));
auto intf =
std::make_shared<phosphor::network::MockEthernetInterface>(
- bus, objPath.string(), dhcp, *this, true);
+ bus, objPath.string(), config, getDHCPValue(config), *this,
+ true);
intf->createIPAddressObjects();
intf->createStaticNeighborObjects();
- intf->loadNameServers();
+ intf->loadNameServers(config);
this->interfaces.emplace(
std::make_pair(std::move(interface), std::move(intf)));
}
diff --git a/test/test_config_parser.cpp b/test/test_config_parser.cpp
index cd2fa4f..896d61e 100644
--- a/test/test_config_parser.cpp
+++ b/test/test_config_parser.cpp
@@ -69,18 +69,21 @@
TEST_F(TestConfigParser, EmptyObject)
{
+ EXPECT_TRUE(parser.getFilename().empty());
EXPECT_EQ(0, parser.getWarnings().size());
}
TEST_F(TestConfigParser, ReadDirectory)
{
parser.setFile("/");
+ EXPECT_EQ("/", parser.getFilename());
EXPECT_EQ(1, parser.getWarnings().size());
}
TEST_F(TestConfigParser, ReadConfigDataMissingFile)
{
parser.setFile("/no-such-path");
+ EXPECT_EQ("/no-such-path", parser.getFilename());
EXPECT_EQ(1, parser.getWarnings().size());
}
@@ -88,6 +91,7 @@
{
WriteSampleFile();
parser.setFile(filename);
+ EXPECT_EQ(filename, parser.getFilename());
EXPECT_EQ(4, parser.getWarnings().size());
EXPECT_THAT(parser.getValues("Match", "Name"), ElementsAre("eth0"));
diff --git a/test/test_ethernet_interface.cpp b/test/test_ethernet_interface.cpp
index 96f00d1..e9ed3fd 100644
--- a/test/test_ethernet_interface.cpp
+++ b/test/test_ethernet_interface.cpp
@@ -43,8 +43,12 @@
{
mock_clear();
mock_addIF("test0", 1, mac);
- return {bus, "/xyz/openbmc_test/network/test0",
- EthernetInterface::DHCPConf::none, manager, true};
+ return {bus,
+ "/xyz/openbmc_test/network/test0",
+ config::Parser(),
+ EthernetInterface::DHCPConf::none,
+ manager,
+ true};
}
int countIPObjects()
diff --git a/test/test_vlan_interface.cpp b/test/test_vlan_interface.cpp
index 126d2d0..5ee1cf9 100644
--- a/test/test_vlan_interface.cpp
+++ b/test/test_vlan_interface.cpp
@@ -43,6 +43,7 @@
mock_addIF("test0", 1);
return {bus,
"/xyz/openbmc_test/network/test0",
+ config::Parser(),
EthernetInterface::DHCPConf::none,
manager,
false,