Parcourir la source

[3539] Added unit test for use of explicit IPv4 address on interface.

Marcin Siodelski il y a 10 ans
Parent
commit
48bc8a7b22
1 fichiers modifiés avec 36 ajouts et 0 suppressions
  1. 36 0
      src/bin/dhcp4/tests/config_parser_unittest.cc

+ 36 - 0
src/bin/dhcp4/tests/config_parser_unittest.cc

@@ -3002,6 +3002,42 @@ TEST_F(Dhcp4ParserTest, allInterfaces) {
     ASSERT_TRUE(test_config.socketOpen("eth1", AF_INET));
     ASSERT_TRUE(test_config.socketOpen("eth1", AF_INET));
 }
 }
 
 
+// This test verifies that it is possible to select subset of interfaces
+// and addresses.
+TEST_F(Dhcp4ParserTest, selectedInterfacesAndAddresses) {
+    IfaceMgrTestConfig test_config(true);
+
+    ConstElementPtr x;
+    string config = "{ \"interfaces\": [ \"eth0/10.0.0.1\", \"eth1/192.0.2.3\" ],"
+        "\"rebind-timer\": 2000, "
+        "\"renew-timer\": 1000, "
+        "\"valid-lifetime\": 4000 }";
+
+    ElementPtr json = Element::fromJSON(config);
+
+    ConstElementPtr status;
+
+    // Make sure the config manager is clean and there is no hanging
+    // interface configuration.
+    ASSERT_FALSE(test_config.socketOpen("eth0", "10.0.0.1"));
+    ASSERT_FALSE(test_config.socketOpen("eth1", "192.0.2.3"));
+    ASSERT_FALSE(test_config.socketOpen("eth1", "192.0.2.5"));
+
+    // Apply configuration.
+    EXPECT_NO_THROW(status = configureDhcp4Server(*srv_, json));
+    ASSERT_TRUE(status);
+    checkResult(status, 0);
+
+    CfgMgr::instance().getStagingCfg()->
+        getCfgIface().openSockets(AF_INET, 10000);
+
+    // eth0 and eth1 were explicitly selected. eth2 was not.
+    EXPECT_TRUE(test_config.socketOpen("eth0", "10.0.0.1"));
+    EXPECT_TRUE(test_config.socketOpen("eth1", "192.0.2.3"));
+    EXPECT_FALSE(test_config.socketOpen("eth1", "192.0.2.5"));
+}
+
+
 // This test checks the ability of the server to parse a configuration
 // This test checks the ability of the server to parse a configuration
 // containing a full, valid dhcp-ddns (D2ClientConfig) entry.
 // containing a full, valid dhcp-ddns (D2ClientConfig) entry.
 TEST_F(Dhcp4ParserTest, d2ClientConfig) {
 TEST_F(Dhcp4ParserTest, d2ClientConfig) {