summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2024-11-08 17:26:29 +0100
committerYu Watanabe <watanabe.yu+github@gmail.com>2024-11-14 02:17:19 +0100
commit5b73edfa7f9920a5d042343bea8e54d001af1707 (patch)
tree4f8c8e95648a78db580ce34eec99de05200065dc
parentnetwork/tuntap: manage tun/tap fds by manager (diff)
downloadsystemd-5b73edfa7f9920a5d042343bea8e54d001af1707.tar.xz
systemd-5b73edfa7f9920a5d042343bea8e54d001af1707.zip
test-network: add tests for reloading .netdev files for independent netdevs
-rwxr-xr-xtest/test-network/systemd-networkd-tests.py113
1 files changed, 108 insertions, 5 deletions
diff --git a/test/test-network/systemd-networkd-tests.py b/test/test-network/systemd-networkd-tests.py
index 5ae57dd951..97b21fa788 100755
--- a/test/test-network/systemd-networkd-tests.py
+++ b/test/test-network/systemd-networkd-tests.py
@@ -1628,6 +1628,10 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities):
self.assertRegex(output, 'ethertype ip ')
self.assertRegex(output, 'srcportmin 1001 ')
+ touch_network_unit('25-bareudp.netdev', '26-netdev-link-local-addressing-yes.network')
+ networkctl_reload()
+ self.wait_online('bareudp99:degraded')
+
@expectedFailureIfModuleIsNotAvailable('batman-adv')
def test_batadv(self):
copy_network_unit('25-batadv.netdev', '26-netdev-link-local-addressing-yes.network')
@@ -1640,6 +1644,10 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities):
print(output)
self.assertRegex(output, 'batadv')
+ touch_network_unit('25-batadv.netdev', '26-netdev-link-local-addressing-yes.network')
+ networkctl_reload()
+ self.wait_online('batadv99:degraded')
+
def test_bridge(self):
copy_network_unit('25-bridge.netdev', '25-bridge-configure-without-carrier.network')
start_networkd()
@@ -1964,6 +1972,17 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities):
self.assertRegex(output, 'link/ether 12:34:56:78:9a:bf')
self.assertRegex(output, 'mtu 1800')
+ touch_network_unit(
+ '25-veth.netdev',
+ '26-netdev-link-local-addressing-yes.network',
+ '25-veth-mtu.netdev')
+ networkctl_reload()
+ self.wait_online(
+ 'veth99:degraded',
+ 'veth-peer:degraded',
+ 'veth-mtu:degraded',
+ 'veth-mtu-peer:degraded')
+
def check_tuntap(self, attached):
pid = networkd_pid()
name = psutil.Process(pid).name()[:15]
@@ -2023,6 +2042,12 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities):
self.check_tuntap(True)
+ touch_network_unit('25-tun.netdev', '25-tap.netdev', '26-netdev-link-local-addressing-yes.network')
+ networkctl_reload()
+ self.wait_online('testtun99:degraded', 'testtap99:degraded')
+
+ self.check_tuntap(True)
+
remove_network_unit('26-netdev-link-local-addressing-yes.network')
restart_networkd()
self.wait_online('testtun99:degraded', 'testtap99:degraded', setup_state='unmanaged')
@@ -2048,6 +2073,10 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities):
self.wait_online('vrf99:carrier')
self.networkctl_check_unit('vrf99', '25-vrf', '26-netdev-link-local-addressing-yes')
+ touch_network_unit('25-vrf.netdev', '26-netdev-link-local-addressing-yes.network')
+ networkctl()
+ self.wait_online('vrf99:carrier')
+
@expectedFailureIfModuleIsNotAvailable('vcan')
def test_vcan(self):
copy_network_unit('25-vcan.netdev', '26-netdev-link-local-addressing-yes.network',
@@ -2069,6 +2098,14 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities):
print(output)
self.assertIn('mtu 16 ', output)
+ touch_network_unit(
+ '25-vcan.netdev',
+ '26-netdev-link-local-addressing-yes.network',
+ '25-vcan98.netdev',
+ '25-vcan98.network')
+ networkctl_reload()
+ self.wait_online('vcan99:carrier', 'vcan98:carrier')
+
@expectedFailureIfModuleIsNotAvailable('vxcan')
def test_vxcan(self):
copy_network_unit('25-vxcan.netdev', '26-netdev-link-local-addressing-yes.network')
@@ -2080,6 +2117,10 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities):
self.networkctl_check_unit('vxcan99', '25-vxcan', '26-netdev-link-local-addressing-yes')
self.networkctl_check_unit('vxcan-peer', '25-vxcan', '26-netdev-link-local-addressing-yes')
+ touch_network_unit('25-vxcan.netdev', '26-netdev-link-local-addressing-yes.network')
+ networkctl()
+ self.wait_online('vxcan99:carrier', 'vxcan-peer:carrier')
+
@expectedFailureIfModuleIsNotAvailable('wireguard')
def test_wireguard(self):
copy_credential('25-wireguard-endpoint-peer0-cred.txt', 'network.wireguard.peer0.endpoint')
@@ -2211,6 +2252,14 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities):
output = check_output('wg show wg97 fwmark')
self.assertEqual(output, '0x4d3')
+ touch_network_unit(
+ '25-wireguard.netdev', '25-wireguard.network',
+ '25-wireguard-23-peers.netdev', '25-wireguard-23-peers.network',
+ '25-wireguard-public-key.txt', '25-wireguard-preshared-key.txt', '25-wireguard-private-key.txt',
+ '25-wireguard-no-peer.netdev', '25-wireguard-no-peer.network')
+ networkctl_reload()
+ self.wait_online('wg99:routable', 'wg98:routable', 'wg97:carrier')
+
def test_geneve(self):
copy_network_unit('25-geneve.netdev', '26-netdev-link-local-addressing-yes.network')
start_networkd()
@@ -2225,6 +2274,10 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities):
self.assertRegex(output, 'udpcsum')
self.assertRegex(output, 'udp6zerocsumrx')
+ touch_network_unit('25-geneve.netdev', '26-netdev-link-local-addressing-yes.network')
+ networkctl_reload()
+ self.wait_online('geneve99:degraded')
+
def test_ipip_tunnel(self):
copy_network_unit('12-dummy.netdev', '25-ipip.network',
'25-ipip-tunnel.netdev', '25-tunnel.network',
@@ -2825,6 +2878,13 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities):
print(output)
self.assertRegex(output, 'encap fou encap-sport auto encap-dport 55556')
+ touch_network_unit(
+ '25-fou-ipproto-ipip.netdev', '25-fou-ipproto-gre.netdev',
+ '25-fou-ipip.netdev', '25-fou-sit.netdev',
+ '25-fou-gre.netdev', '25-fou-gretap.netdev')
+ networkctl_reload()
+ self.wait_online('ipiptun96:off', 'sittun96:off', 'gretun96:off', 'gretap96:off', setup_state='unmanaged')
+
def test_vxlan(self):
copy_network_unit('11-dummy.netdev', '25-vxlan-test1.network',
'25-vxlan.netdev', '25-vxlan.network',
@@ -2929,6 +2989,10 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities):
self.wait_online('nlmon99:carrier')
self.networkctl_check_unit('nlmon99', '25-nlmon', '26-netdev-link-local-addressing-yes')
+ touch_network_unit('25-nlmon.netdev', '26-netdev-link-local-addressing-yes.network')
+ networkctl_reload()
+ self.wait_online('nlmon99:carrier')
+
@expectedFailureIfModuleIsNotAvailable('ifb')
def test_ifb(self):
copy_network_unit('25-ifb.netdev', '26-netdev-link-local-addressing-yes.network')
@@ -2937,6 +3001,10 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities):
self.wait_online('ifb99:degraded')
self.networkctl_check_unit('ifb99', '25-ifb', '26-netdev-link-local-addressing-yes')
+ touch_network_unit('25-ifb.netdev', '26-netdev-link-local-addressing-yes.network')
+ networkctl_reload()
+ self.wait_online('ifb99:degraded')
+
@unittest.skipUnless(os.cpu_count() >= 2, reason="CPU count should be >= 2 to pass this test")
def test_rps_cpu_1(self):
copy_network_unit('12-dummy.netdev', '12-dummy.network', '25-rps-cpu-1.link')
@@ -3093,6 +3161,12 @@ class NetworkdL2TPTests(unittest.TestCase, Utilities):
self.assertRegex(output, "Peer session 18, tunnel 11")
self.assertRegex(output, "interface name: l2tp-ses2")
+ touch_network_unit(
+ '11-dummy.netdev', '25-l2tp-dummy.network',
+ '25-l2tp-udp.netdev', '25-l2tp.network')
+ networkctl_reload()
+ self.wait_online('test1:routable', 'l2tp-ses1:degraded', 'l2tp-ses2:degraded')
+
@expectedFailureIfModuleIsNotAvailable('l2tp_eth', 'l2tp_ip', 'l2tp_netlink')
def test_l2tp_ip(self):
copy_network_unit('11-dummy.netdev', '25-l2tp-dummy.network',
@@ -3122,6 +3196,12 @@ class NetworkdL2TPTests(unittest.TestCase, Utilities):
self.assertRegex(output, "Peer session 28, tunnel 12")
self.assertRegex(output, "interface name: l2tp-ses4")
+ touch_network_unit(
+ '11-dummy.netdev', '25-l2tp-dummy.network',
+ '25-l2tp-ip.netdev', '25-l2tp.network')
+ networkctl_reload()
+ self.wait_online('test1:routable', 'l2tp-ses3:degraded', 'l2tp-ses4:degraded')
+
class NetworkdNetworkTests(unittest.TestCase, Utilities):
def setUp(self):
@@ -5365,6 +5445,15 @@ class NetworkdBondTests(unittest.TestCase, Utilities):
self.wait_online('dummy98:enslaved', 'bond199:degraded')
self.assertNotIn('dummy98: Bringing link down', read_networkd_log(since=since))
+ # test for reloading.
+ touch_network_unit(
+ '23-active-slave.network',
+ '23-bond199.network',
+ '25-bond-active-backup-slave.netdev',
+ '12-dummy.netdev')
+ networkctl_reload()
+ self.wait_online('dummy98:enslaved', 'bond199:degraded')
+
def test_bond_primary_slave(self):
copy_network_unit('23-primary-slave.network', '23-bond199.network', '25-bond-active-backup-slave.netdev', '12-dummy.netdev')
start_networkd()
@@ -5636,11 +5725,7 @@ class NetworkdBridgeTests(unittest.TestCase, Utilities):
self.check_bridge_port_attr('bridge99', 'dummy98', 'bpdu_guard', '0')
self.check_bridge_port_attr('bridge99', 'dummy98', 'root_block', '0')
- def test_bridge_property(self):
- copy_network_unit('11-dummy.netdev', '12-dummy.netdev', '26-bridge.netdev',
- '26-bridge-slave-interface-1.network', '26-bridge-slave-interface-2.network',
- '25-bridge99.network')
- start_networkd()
+ def check_bridge_property(self):
self.wait_online('dummy98:enslaved', 'test1:enslaved', 'bridge99:routable')
output = check_output('ip -d link show bridge99')
@@ -5683,6 +5768,24 @@ class NetworkdBridgeTests(unittest.TestCase, Utilities):
print(output)
self.check_bridge_port_attr('bridge99', 'test1', 'priority', '0')
+ def test_bridge_property(self):
+ copy_network_unit('11-dummy.netdev', '12-dummy.netdev', '26-bridge.netdev',
+ '26-bridge-slave-interface-1.network', '26-bridge-slave-interface-2.network',
+ '25-bridge99.network')
+ start_networkd()
+ self.check_bridge_property()
+
+ # test reload
+ touch_network_unit(
+ '11-dummy.netdev',
+ '12-dummy.netdev',
+ '26-bridge.netdev',
+ '26-bridge-slave-interface-1.network',
+ '26-bridge-slave-interface-2.network',
+ '25-bridge99.network')
+ networkctl_reload()
+ self.check_bridge_property()
+
check_output('ip address add 192.168.0.16/24 dev bridge99')
output = check_output('ip addr show bridge99')
print(output)