mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-02-04 02:30:24 +01:00
test-client: fix race in test_monitor() test
During srv_shutdown() we do p.stdin.close() p.kill() Usually, the kill wins and the service just drops off the bus: libnm-dbus[3201919]: <debug> [438617.45324] nmclient[40f7938626f3f5f0]: name owner changed: ":1.1" -> (null) libnm-dbus[3201919]: <debug> [438617.45332] nmclient[40f7938626f3f5f0]: release all at which point all objects in NMClient get destroyed and the signals get emitted in the order: libnm-dbus[3201919]: <trace> [438617.45574] nmclient[40f7938626f3f5f0]: [nmclient] emit "device-removed" signal for /org/freedesktop/NetworkManager/Devices/1 nmcli[out]: eth0: device removed libnm-dbus[3201919]: <trace> [438617.45590] nmclient[40f7938626f3f5f0]: [nmclient] emit "any-device-removed" signal for /org/freedesktop/NetworkManager/Devices/1 libnm-dbus[3201919]: <trace> [438617.45593] nmclient[40f7938626f3f5f0]: [nmclient] emit "connection-removed" signal for /org/freedesktop/NetworkManager/Settings/Connectio> nmcli[out]: con-1: connection profile removed However, sometimes the stub service notices that stdin was closed and it sends signals about shutting down: libnm-dbus[3201061]: <trace> [438226.44965] nmclient[401639659459c316]: interfaces-removed: [/org/freedesktop/NetworkManager/Settings] receive interface remove event for > libnm-dbus[3201061]: <trace> [438226.44966] nmclient[401639659459c316]: [/org/freedesktop/NetworkManager/Settings]: changed-type 0x01 linked libnm-dbus[3201061]: <trace> [438226.44967] nmclient[401639659459c316]: [/org/freedesktop/NetworkManager/Settings]: changed-type 0x01 consumed libnm-dbus[3201061]: <trace> [438226.44968] nmclient[401639659459c316]: [/org/freedesktop/NetworkManager/Settings]: changed-type 0x02 linked libnm-dbus[3201061]: <trace> [438226.44969] nmclient[401639659459c316]: [/org/freedesktop/NetworkManager/Settings]: unregister NMClient from D-Bus object libnm-dbus[3201061]: <trace> [438226.44971] nmclient[401639659459c316]: [/org/freedesktop/NetworkManager/Settings]: drop D-Bus instance libnm-dbus[3201061]: <trace> [438226.44971] nmclient[401639659459c316]: [/org/freedesktop/NetworkManager/Settings]: set D-Bus object state unlinked libnm-dbus[3201061]: <trace> [438226.44972] nmclient[401639659459c316]: [nmclient] emit "connection-removed" signal for /org/freedesktop/NetworkManager/Settings/Connectio> nmcli[out]: con-1: connection profile removed libnm-dbus[3201061]: <trace> [438226.44992] nmclient[401639659459c316]: interfaces-removed: [/org/freedesktop/NetworkManager] receive interface remove event for interface> libnm-dbus[3201061]: <trace> [438226.44994] nmclient[401639659459c316]: [/org/freedesktop/NetworkManager]: changed-type 0x01 linked libnm-dbus[3201061]: <trace> [438226.44995] nmclient[401639659459c316]: [/org/freedesktop/NetworkManager]: changed-type 0x01 consumed libnm-dbus[3201061]: <trace> [438226.44996] nmclient[401639659459c316]: [/org/freedesktop/NetworkManager]: changed-type 0x02 linked libnm-dbus[3201061]: <trace> [438226.44998] nmclient[401639659459c316]: [/org/freedesktop/NetworkManager]: unregister NMClient from D-Bus object libnm-dbus[3201061]: <trace> [438226.44999] nmclient[401639659459c316]: [/org/freedesktop/NetworkManager]: drop D-Bus instance libnm-dbus[3201061]: <trace> [438226.45000] nmclient[401639659459c316]: [/org/freedesktop/NetworkManager]: set D-Bus object state unlinked libnm-dbus[3201061]: <trace> [438226.45001] nmclient[401639659459c316]: [nmclient] emit "device-removed" signal for /org/freedesktop/NetworkManager/Devices/1 nmcli[out]: eth0: device removed libnm-dbus[3201061]: <trace> [438226.45005] nmclient[401639659459c316]: [nmclient] emit "any-device-removed" signal for /org/freedesktop/NetworkManager/Devices/1 nmcli[out]: NetworkManager is stopped libnm-dbus[3201061]: <debug> [438226.45545] nmclient[401639659459c316]: name owner changed: ":1.1" -> (null) libnm-dbus[3201061]: <debug> [438226.45550] nmclient[401639659459c316]: release all The fix is to accept the events in any order.
This commit is contained in:
parent
fc282d5e05
commit
8548ab29ee
1 changed files with 15 additions and 2 deletions
|
|
@ -512,6 +512,16 @@ class Util:
|
|||
|
||||
os.remove(name)
|
||||
|
||||
@staticmethod
|
||||
def pexpect_expect_all(pexp, *pattern_list):
|
||||
# This will call "pexpect.expect()" on pattern_list,
|
||||
# expecting all entries to match exactly once, in any
|
||||
# order.
|
||||
pattern_list = list(pattern_list)
|
||||
while pattern_list:
|
||||
idx = pexp.expect(pattern_list)
|
||||
del pattern_list[idx]
|
||||
|
||||
|
||||
###############################################################################
|
||||
|
||||
|
|
@ -2071,8 +2081,11 @@ class TestNmcli(unittest.TestCase):
|
|||
|
||||
nmc = start_mon(self)
|
||||
self.srv_shutdown()
|
||||
nmc.pexp.expect("eth0: device removed")
|
||||
nmc.pexp.expect("con-1: connection profile removed")
|
||||
Util.pexpect_expect_all(
|
||||
nmc.pexp,
|
||||
"con-1: connection profile removed",
|
||||
"eth0: device removed",
|
||||
)
|
||||
nmc.pexp.expect("NetworkManager is stopped")
|
||||
end_mon(self, nmc)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue