]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test-network: add dhcp rapid commit test 29693/head
authorRonan Pigott <ronan@rjp.ie>
Wed, 25 Oct 2023 00:57:45 +0000 (17:57 -0700)
committerRonan Pigott <ronan@rjp.ie>
Fri, 27 Oct 2023 17:55:55 +0000 (10:55 -0700)
test/test-network/systemd-networkd-tests.py

index f4c8a6276834974c6646396d12855953ad51ae86..1b8bf6f4211c1584a898959d2e239bd114f2eebf 100755 (executable)
@@ -5553,6 +5553,26 @@ class NetworkdDHCPClientTests(unittest.TestCase, Utilities):
         print(f"State = {state}")
         self.assertEqual(state, 'bound')
 
+    @unittest.skipUnless("--dhcp-rapid-commit" in run("dnsmasq --help").stdout, reason="dnsmasq is missing dhcp-rapid-commit support")
+    def test_dhcp_client_rapid_commit(self):
+        copy_network_unit('25-veth.netdev', '25-dhcp-server-veth-peer.network', '25-dhcp-client.network')
+        start_networkd()
+        self.wait_online(['veth-peer:carrier'])
+
+        start_dnsmasq('--dhcp-rapid-commit')
+        self.wait_online(['veth99:routable', 'veth-peer:routable'])
+        self.wait_address('veth99', r'inet 192.168.5.[0-9]*/24', ipv='-4')
+
+        state = get_dhcp4_client_state('veth99')
+        print(f"DHCPv4 client state = {state}")
+        self.assertEqual(state, 'bound')
+
+        output = read_dnsmasq_log_file()
+        self.assertIn('DHCPDISCOVER(veth-peer)', output)
+        self.assertNotIn('DHCPOFFER(veth-peer)', output)
+        self.assertNotIn('DHCPREQUEST(veth-peer)', output)
+        self.assertIn('DHCPACK(veth-peer)', output)
+
     def test_dhcp_client_ipv6_only_mode_without_ipv6_connectivity(self):
         copy_network_unit('25-veth.netdev',
                           '25-dhcp-server-ipv6-only-mode.network',