1
0
mirror of https://github.com/systemd/systemd.git synced 2025-01-25 10:04:04 +03:00

test-network: add testcases for configuring SR-IOV by .link file

This commit is contained in:
Yu Watanabe 2022-01-15 09:26:32 +09:00
parent a03ff4c0fe
commit 1e8e9730d2
3 changed files with 136 additions and 0 deletions

View File

@ -0,0 +1,7 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Match]
Name=eni99np1
[Network]
Address=192.168.100.100/24
IPv6AcceptRA=no

View File

@ -0,0 +1,40 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Match]
Driver=netdevsim
[Link]
NamePolicy=keep kernel database onboard slot path
AlternativeNamesPolicy=database onboard slot path mac
MACAddressPolicy=persistent
[SR-IOV]
VirtualFunction=0
VLANId=5
VLANProtocol=802.1ad
QualityOfService=1
MACSpoofCheck=yes
QueryReceiveSideScaling=yes
Trust=yes
LinkState=yes
MACAddress=00:11:22:33:44:55
[SR-IOV]
VirtualFunction=1
VLANId=6
VLANProtocol=802.1Q
QualityOfService=2
MACSpoofCheck=no
QueryReceiveSideScaling=no
Trust=no
LinkState=no
MACAddress=00:11:22:33:44:56
[SR-IOV]
VirtualFunction=2
VLANId=7
QualityOfService=3
MACSpoofCheck=no
QueryReceiveSideScaling=no
Trust=no
LinkState=auto
MACAddress=00:11:22:33:44:57

View File

@ -3974,6 +3974,8 @@ class NetworkdBridgeTests(unittest.TestCase, Utilities):
class NetworkdSRIOVTests(unittest.TestCase, Utilities):
units = [
'25-sriov-udev.network',
'25-sriov.link',
'25-sriov.network',
]
@ -4010,6 +4012,93 @@ class NetworkdSRIOVTests(unittest.TestCase, Utilities):
'vf 2 .*00:11:22:33:44:57.*vlan 7, qos 3, spoof checking off, link-state auto, trust off, query_rss off'
)
@expectedFailureIfNetdevsimWithSRIOVIsNotAvailable()
def test_sriov_udev(self):
call('modprobe netdevsim', stderr=subprocess.DEVNULL)
copy_unit_to_networkd_unit_path('25-sriov.link', '25-sriov-udev.network')
call('udevadm control --reload')
with open('/sys/bus/netdevsim/new_device', mode='w') as f:
f.write('99 1')
start_networkd()
self.wait_online(['eni99np1:routable'])
output = check_output('ip link show dev eni99np1')
print(output)
self.assertRegex(output,
'vf 0 .*00:11:22:33:44:55.*vlan 5, qos 1, vlan protocol 802.1ad, spoof checking on, link-state enable, trust on, query_rss on\n *'
'vf 1 .*00:11:22:33:44:56.*vlan 6, qos 2, spoof checking off, link-state disable, trust off, query_rss off\n *'
'vf 2 .*00:11:22:33:44:57.*vlan 7, qos 3, spoof checking off, link-state auto, trust off, query_rss off'
)
self.assertNotIn('vf 3', output)
self.assertNotIn('vf 4', output)
with open(os.path.join(network_unit_file_path, '25-sriov.link'), mode='a') as f:
f.write('[Link]\nSR-IOVVirtualFunctions=4\n')
call('udevadm control --reload')
call('udevadm trigger --action add --settle /sys/devices/netdevsim99/net/eni99np1')
output = check_output('ip link show dev eni99np1')
print(output)
self.assertRegex(output,
'vf 0 .*00:11:22:33:44:55.*vlan 5, qos 1, vlan protocol 802.1ad, spoof checking on, link-state enable, trust on, query_rss on\n *'
'vf 1 .*00:11:22:33:44:56.*vlan 6, qos 2, spoof checking off, link-state disable, trust off, query_rss off\n *'
'vf 2 .*00:11:22:33:44:57.*vlan 7, qos 3, spoof checking off, link-state auto, trust off, query_rss off\n *'
'vf 3'
)
self.assertNotIn('vf 4', output)
with open(os.path.join(network_unit_file_path, '25-sriov.link'), mode='a') as f:
f.write('[Link]\nSR-IOVVirtualFunctions=\n')
call('udevadm control --reload')
call('udevadm trigger --action add --settle /sys/devices/netdevsim99/net/eni99np1')
output = check_output('ip link show dev eni99np1')
print(output)
self.assertRegex(output,
'vf 0 .*00:11:22:33:44:55.*vlan 5, qos 1, vlan protocol 802.1ad, spoof checking on, link-state enable, trust on, query_rss on\n *'
'vf 1 .*00:11:22:33:44:56.*vlan 6, qos 2, spoof checking off, link-state disable, trust off, query_rss off\n *'
'vf 2 .*00:11:22:33:44:57.*vlan 7, qos 3, spoof checking off, link-state auto, trust off, query_rss off\n *'
'vf 3'
)
self.assertNotIn('vf 4', output)
with open(os.path.join(network_unit_file_path, '25-sriov.link'), mode='a') as f:
f.write('[Link]\nSR-IOVVirtualFunctions=2\n')
call('udevadm control --reload')
call('udevadm trigger --action add --settle /sys/devices/netdevsim99/net/eni99np1')
output = check_output('ip link show dev eni99np1')
print(output)
self.assertRegex(output,
'vf 0 .*00:11:22:33:44:55.*vlan 5, qos 1, vlan protocol 802.1ad, spoof checking on, link-state enable, trust on, query_rss on\n *'
'vf 1 .*00:11:22:33:44:56.*vlan 6, qos 2, spoof checking off, link-state disable, trust off, query_rss off'
)
self.assertNotIn('vf 2', output)
self.assertNotIn('vf 3', output)
self.assertNotIn('vf 4', output)
with open(os.path.join(network_unit_file_path, '25-sriov.link'), mode='a') as f:
f.write('[Link]\nSR-IOVVirtualFunctions=\n')
call('udevadm control --reload')
call('udevadm trigger --action add --settle /sys/devices/netdevsim99/net/eni99np1')
output = check_output('ip link show dev eni99np1')
print(output)
self.assertRegex(output,
'vf 0 .*00:11:22:33:44:55.*vlan 5, qos 1, vlan protocol 802.1ad, spoof checking on, link-state enable, trust on, query_rss on\n *'
'vf 1 .*00:11:22:33:44:56.*vlan 6, qos 2, spoof checking off, link-state disable, trust off, query_rss off\n *'
'vf 2 .*00:11:22:33:44:57.*vlan 7, qos 3, spoof checking off, link-state auto, trust off, query_rss off'
)
self.assertNotIn('vf 3', output)
self.assertNotIn('vf 4', output)
class NetworkdLLDPTests(unittest.TestCase, Utilities):
links = ['veth99']