Skip to content

Commit

Permalink
test:sriov: verify rebind service
Browse files Browse the repository at this point in the history
  • Loading branch information
slyon committed Feb 2, 2022
1 parent ff77e2f commit 9f1cdb6
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 0 deletions.
26 changes: 26 additions & 0 deletions tests/generator/base.py
Expand Up @@ -456,3 +456,29 @@ def assert_ovs(self, file_contents_map):
self.assertEqual(link_target,
os.path.join(
'/', 'run', 'systemd', 'system', fname))

def assert_sriov(self, file_contents_map):
systemd_dir = os.path.join(self.workdir.name, 'run', 'systemd', 'system')
if not file_contents_map:
# in this case we assume no SR-IOV configuration should be present
self.assertFalse(glob.glob(os.path.join(systemd_dir, '*netplan-sriov-*.service')))
return

self.assertEqual(set(os.listdir(self.workdir.name)) - {'lib'}, {'etc', 'run'})
sriov_systemd_dir = set(os.listdir(systemd_dir))
sriov_systemd_dir.remove('systemd-networkd.service.wants')
sriov_systemd_dir.remove('multi-user.target.wants')
sriov_systemd_dir.remove('netplan-ovs-cleanup.service')
self.assertEqual(sriov_systemd_dir, {'netplan-sriov-' + f for f in file_contents_map})
for fname, contents in file_contents_map.items():
fname = 'netplan-sriov-' + fname
with open(os.path.join(systemd_dir, fname)) as f:
self.assertEqual(f.read(), contents)
if fname.endswith('.service'):
link_path = os.path.join(
systemd_dir, 'multi-user.target.wants', fname)
self.assertTrue(os.path.islink(link_path))
link_target = os.readlink(link_path)
self.assertEqual(link_target,
os.path.join(
'/', 'run', 'systemd', 'system', fname))
40 changes: 40 additions & 0 deletions tests/test_sriov.py
Expand Up @@ -841,8 +841,48 @@ def test_eswitch_mode(self):
engreen:
embedded-switch-mode: switchdev
delay-virtual-functions-rebind: true
enblue:
match: {driver: dummy_driver}
set-name: enblue
embedded-switch-mode: legacy
delay-virtual-functions-rebind: true
virtual-function-count: 4
sriov_vf0:
link: engreen''')
self.assert_sriov({'rebind.service': '''[Unit]
Description=(Re-)bind SR-IOV Virtual Functions to their driver
After=network.target
After=sys-subsystem-net-devices-enblue.device
After=sys-subsystem-net-devices-engreen.device
[Service]
Type=oneshot
ExecStart=/usr/sbin/netplan rebind enblue engreen
'''})

def test_rebind_not_delayed(self):
self.generate('''network:
version: 2
ethernets:
engreen:
embedded-switch-mode: switchdev
delay-virtual-functions-rebind: false
sriov_vf:
link: engreen''')
self.assert_sriov({})

def test_rebind_no_iface(self):
out = self.generate('''network:
version: 2
ethernets:
engreen:
match: {name: 'enp4f[1-3]'}
embedded-switch-mode: switchdev
delay-virtual-functions-rebind: true
sriov_vf:
link: engreen''')
self.assert_sriov({})
self.assertIn('engreen: Cannot rebind SR-IOV virtual functions, unknown interface name.', out)

def test_invalid_not_a_pf(self):
err = self.generate('''network:
Expand Down

0 comments on commit 9f1cdb6

Please sign in to comment.