From 08b36c69e7ccb23c8c7e0106f437d42721acd059 Mon Sep 17 00:00:00 2001 From: Francis Dupont Date: Sat, 16 Mar 2019 00:20:34 +0100 Subject: [PATCH] [430-configure-location-of-datadir] Added some unit tests --- src/lib/dhcpsrv/tests/cfgmgr_unittest.cc | 58 ++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/src/lib/dhcpsrv/tests/cfgmgr_unittest.cc b/src/lib/dhcpsrv/tests/cfgmgr_unittest.cc index 61f9db84bf..c236c1c3a9 100644 --- a/src/lib/dhcpsrv/tests/cfgmgr_unittest.cc +++ b/src/lib/dhcpsrv/tests/cfgmgr_unittest.cc @@ -319,6 +319,64 @@ TEST_F(CfgMgrTest, configuration) { EXPECT_TRUE(configuration->getLoggingInfo().empty()); } +// This test checks the data directory handling. +TEST_F(CfgMgrTest, dataDir) { + // It is only in DHCPv6 systax so switch to IPv6. + CfgMgr::instance().setFamily(AF_INET6); + + // Default. + EXPECT_TRUE(CfgMgr::instance().getDataDir().unspecified()); + ConstElementPtr json = CfgMgr::instance().getCurrentCfg()->toElement(); + ASSERT_TRUE(json); + ASSERT_EQ(Element::map, json->getType()); + ConstElementPtr dhcp = json->get("Dhcp6"); + ASSERT_TRUE(dhcp); + ASSERT_EQ(Element::map, dhcp->getType()); + ConstElementPtr datadir = dhcp->get("data-directory"); + EXPECT_FALSE(datadir); + + // Set but not specified. + CfgMgr::instance().setDataDir("/tmp"); + EXPECT_TRUE(CfgMgr::instance().getDataDir().unspecified()); + EXPECT_EQ("/tmp", string(CfgMgr::instance().getDataDir())); + json = CfgMgr::instance().getCurrentCfg()->toElement(); + ASSERT_TRUE(json); + ASSERT_EQ(Element::map, json->getType()); + dhcp = json->get("Dhcp6"); + ASSERT_TRUE(dhcp); + ASSERT_EQ(Element::map, dhcp->getType()); + datadir = dhcp->get("data-directory"); + EXPECT_FALSE(datadir); + + // Set and specified. + CfgMgr::instance().setDataDir("/tmp", false); + EXPECT_FALSE(CfgMgr::instance().getDataDir().unspecified()); + EXPECT_EQ("/tmp", string(CfgMgr::instance().getDataDir())); + json = CfgMgr::instance().getCurrentCfg()->toElement(); + ASSERT_TRUE(json); + ASSERT_EQ(Element::map, json->getType()); + dhcp = json->get("Dhcp6"); + ASSERT_TRUE(dhcp); + ASSERT_EQ(Element::map, dhcp->getType()); + datadir = dhcp->get("data-directory"); + ASSERT_TRUE(datadir); + ASSERT_EQ(Element::string, datadir->getType()); + EXPECT_EQ("/tmp", datadir->stringValue()); + + // Still IPv6 only. + CfgMgr::instance().setFamily(AF_INET); + EXPECT_FALSE(CfgMgr::instance().getDataDir().unspecified()); + EXPECT_EQ("/tmp", string(CfgMgr::instance().getDataDir())); + json = CfgMgr::instance().getCurrentCfg()->toElement(); + ASSERT_TRUE(json); + ASSERT_EQ(Element::map, json->getType()); + dhcp = json->get("Dhcp4"); + ASSERT_TRUE(dhcp); + ASSERT_EQ(Element::map, dhcp->getType()); + datadir = dhcp->get("data-directory"); + EXPECT_FALSE(datadir); +} + // This test checks the D2ClientMgr wrapper methods. TEST_F(CfgMgrTest, d2ClientConfig) { // After CfgMgr construction, D2ClientMgr member should be initialized -- 2.47.2