Implement the INI config parser
Parse the systemd.network file
to get the configuration parameter.
Change-Id: Ic9c15a46158d2f1c0948e6eca729663e87051491
Signed-off-by: Ratan Gupta <ratagupt@in.ibm.com>
diff --git a/test/test_config_parser.cpp b/test/test_config_parser.cpp
new file mode 100644
index 0000000..a07390b
--- /dev/null
+++ b/test/test_config_parser.cpp
@@ -0,0 +1,98 @@
+#include <gtest/gtest.h>
+
+#include "config_parser.hpp"
+
+#include "xyz/openbmc_project/Common/error.hpp"
+#include <phosphor-logging/elog-errors.hpp>
+
+#include "config.h"
+#include <exception>
+#include <stdexcept>
+#include <fstream>
+
+namespace phosphor
+{
+namespace network
+{
+
+class TestConfigParser : public testing::Test
+{
+ public:
+ config::Parser parser;
+ TestConfigParser()
+ {
+ remove("/tmp/eth0.network");
+ std::ofstream filestream("/tmp/eth0.network");
+
+ filestream << "[Match]\nName=eth0\n" <<
+ "[Network]\nDHCP=true\n[DHCP]\nClientIdentifier= mac\n";
+ filestream.close();
+ parser.setFile("/tmp/eth0.network");
+ }
+
+ 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)
+{
+ auto values = parser.getValues("Network", "DHCP");
+ std::string expectedValue = "true";
+ bool found = isValueFound(values, expectedValue);
+ EXPECT_EQ(found, true);
+
+ values = parser.getValues("DHCP", "ClientIdentifier");
+ expectedValue = "mac";
+ found = isValueFound(values, expectedValue);
+ EXPECT_EQ(found, true);
+
+ values = parser.getValues("Match", "Name");
+ expectedValue = "eth0";
+ found = isValueFound(values, expectedValue);
+ EXPECT_EQ(found, true);
+}
+
+TEST_F(TestConfigParser, SectionNotExist)
+{
+ using namespace sdbusplus::xyz::openbmc_project::Common::Error;
+ bool caughtException = false;
+ try
+ {
+ parser.getValues("abc", "ipaddress");
+ }
+ catch (const std::exception& e)
+ {
+ caughtException = true;
+ }
+ EXPECT_EQ(true, caughtException);
+}
+
+TEST_F(TestConfigParser, KeyNotFound)
+{
+ using namespace sdbusplus::xyz::openbmc_project::Common::Error;
+ bool caughtException = false;
+ try
+ {
+ parser.getValues("Network", "abc");
+ }
+ catch (const std::exception& e)
+ {
+ caughtException = true;
+ }
+ EXPECT_EQ(true, caughtException);
+ remove("/tmp/eth0.network");
+}
+
+}//namespace network
+}//namespace phosphor
+