tests: also use lsmod to check whether modules are available (#10634)
It's not entirely impossible to screw something up playing with kernel modules on a Saturday evening :-) This PR fixes a scenario where a module has been loaded into the kernel but the module itself has been removed from the disk. ``` $ lsmod | grep wireg wireguard 225280 0 ip6_udp_tunnel 16384 1 wireguard udp_tunnel 16384 1 wireguard $ modprobe wireguard modprobe: FATAL: Module wireguard not found in directory /lib/modules/4.18.16-200.fc28.x86_64 $ sudo ./systemd-networkd-tests.py NetworkdNetDevTests.test_wireguard ... modprobe: FATAL: Module wireguard not found in directory /lib/modules/4.18.16-200.fc28.x86_64 test_wireguard (__main__.NetworkdNetDevTests) ... unexpected success ---------------------------------------------------------------------- Ran 1 test in 5.152s FAILED (unexpected successes=1) ``` This is a follow-up to https://github.com/systemd/systemd/pull/10625.
This commit is contained in:
parent
aaa501859f
commit
201bf07f7c
|
@ -7,6 +7,7 @@ import sys
|
|||
import unittest
|
||||
import subprocess
|
||||
import time
|
||||
import re
|
||||
import shutil
|
||||
import signal
|
||||
import socket
|
||||
|
@ -23,7 +24,9 @@ dnsmasq_pid_file='/var/run/networkd-ci/test-test-dnsmasq.pid'
|
|||
dnsmasq_log_file='/var/run/networkd-ci/test-dnsmasq-log-file'
|
||||
|
||||
def is_module_available(module_name):
|
||||
return not subprocess.call(["modprobe", module_name])
|
||||
lsmod_output = subprocess.check_output('lsmod', universal_newlines=True)
|
||||
module_re = re.compile(r'^{0}\b'.format(re.escape(module_name)), re.MULTILINE)
|
||||
return module_re.search(lsmod_output) or not subprocess.call(["modprobe", module_name])
|
||||
|
||||
def expectedFailureIfModuleIsNotAvailable(module_name):
|
||||
def f(func):
|
||||
|
|
Loading…
Reference in New Issue