return f
+def udev_reload():
+ check_output('udevadm control --reload')
+
def copy_network_unit(*units, copy_dropins=True):
"""
Copy networkd unit files into the testbed.
When a drop-in file is specified, its unit file is also copied in automatically.
"""
+ has_link = False
mkdir_p(network_unit_dir)
for unit in units:
if copy_dropins and os.path.exists(os.path.join(networkd_ci_temp_dir, unit + '.d')):
cp_r(os.path.join(networkd_ci_temp_dir, unit + '.d'), os.path.join(network_unit_dir, unit + '.d'))
+
if unit.endswith('.conf'):
dropin = unit
unit = os.path.dirname(dropin).rstrip('.d')
dropindir = os.path.join(network_unit_dir, unit + '.d')
mkdir_p(dropindir)
cp(os.path.join(networkd_ci_temp_dir, dropin), dropindir)
+
cp(os.path.join(networkd_ci_temp_dir, unit), network_unit_dir)
+ if unit.endswith('.link'):
+ has_link = True
+
+ if has_link:
+ udev_reload()
+
def remove_network_unit(*units):
"""
Remove previously copied unit files from the testbed.
Drop-ins will be removed automatically.
"""
+ has_link = False
for unit in units:
rm_f(os.path.join(network_unit_dir, unit))
rm_rf(os.path.join(network_unit_dir, unit + '.d'))
+ if unit.endswith('.link') or unit.endswith('.link.d'):
+ has_link = True
+
+ if has_link:
+ udev_reload()
+
def clear_network_units():
+ has_link = False
+ if os.path.exists(network_unit_dir):
+ units = os.listdir(network_unit_dir)
+ for unit in units:
+ if unit.endswith('.link') or unit.endswith('.link.d'):
+ has_link = True
+
rm_rf(network_unit_dir)
+ if has_link:
+ udev_reload()
+
def copy_networkd_conf_dropin(*dropins):
"""Copy networkd.conf dropin files into the testbed."""
mkdir_p(networkd_conf_dropin_dir)
@expectedFailureIfAlternativeNameIsNotAvailable()
def test_altname(self):
copy_network_unit('26-netdev-link-local-addressing-yes.network', '12-dummy.netdev', '12-dummy.link')
- check_output('udevadm control --reload')
start_networkd()
self.wait_online(['dummy98:degraded'])
@expectedFailureIfNetdevsimWithSRIOVIsNotAvailable()
def test_sriov_udev(self):
copy_network_unit('25-sriov.link', '25-sriov-udev.network')
- call('udevadm control --reload')
call('modprobe netdevsim')
with open(os.path.join(network_unit_dir, '25-sriov.link'), mode='a', encoding='utf-8') as f:
f.write('[Link]\nSR-IOVVirtualFunctions=4\n')
- call('udevadm control --reload')
+ udev_reload()
call('udevadm trigger --action add --settle /sys/devices/netdevsim99/net/eni99np1')
output = check_output('ip link show dev eni99np1')
with open(os.path.join(network_unit_dir, '25-sriov.link'), mode='a', encoding='utf-8') as f:
f.write('[Link]\nSR-IOVVirtualFunctions=\n')
- call('udevadm control --reload')
+ udev_reload()
call('udevadm trigger --action add --settle /sys/devices/netdevsim99/net/eni99np1')
output = check_output('ip link show dev eni99np1')
with open(os.path.join(network_unit_dir, '25-sriov.link'), mode='a', encoding='utf-8') as f:
f.write('[Link]\nSR-IOVVirtualFunctions=2\n')
- call('udevadm control --reload')
+ udev_reload()
call('udevadm trigger --action add --settle /sys/devices/netdevsim99/net/eni99np1')
output = check_output('ip link show dev eni99np1')
with open(os.path.join(network_unit_dir, '25-sriov.link'), mode='a', encoding='utf-8') as f:
f.write('[Link]\nSR-IOVVirtualFunctions=\n')
- call('udevadm control --reload')
+ udev_reload()
call('udevadm trigger --action add --settle /sys/devices/netdevsim99/net/eni99np1')
output = check_output('ip link show dev eni99np1')
def test_mtu_link(self):
copy_network_unit('12-dummy.netdev', '12-dummy-mtu.link', '12-dummy.network', copy_dropins=False)
- # must reload udev because it only picks up new files after 3 second delay
- call('udevadm control --reload')
# note - MTU set by .link happens ONLY at udev processing of device 'add' uevent!
self.check_mtu('1600', reset=False)
def test_mtu_link_ipv6_mtu(self):
''' set ipv6 mtu and set device mtu via link file '''
copy_network_unit('12-dummy.netdev', '12-dummy-mtu.link', '12-dummy.network.d/ipv6-mtu-1550.conf')
- # must reload udev because it only picks up new files after 3 second delay
- call('udevadm control --reload')
self.check_mtu('1600', '1550', reset=False)