aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Huth <thuth@redhat.com>2025-01-07 12:52:45 +0100
committerThomas Huth <thuth@redhat.com>2025-01-07 15:02:46 +0100
commitf69705f300f487936919359354925395105ec018 (patch)
treea76a679416e4e0a3e49b21e6e555f0f6b263dd0a
parent5cd37fe6dd278302ed6ceb86727526a38f410314 (diff)
downloadqemu-f69705f300f487936919359354925395105ec018.zip
qemu-f69705f300f487936919359354925395105ec018.tar.gz
qemu-f69705f300f487936919359354925395105ec018.tar.bz2
tests/functional/test_x86_64_hotplug_cpu: Fix race condition during unplug
When unplugging the CPU, the test tries to check for a successful unplug by changing to the /sys/devices/system/cpu/cpu1 directory to see whether that fails. However, the "cd" could be faster than the unplug operation in the kernel, so there is a race condition and the test sometimes fails here. Fix it by trying to change the directory in a loop until the the CPU has really been unplugged. While we're at it, also add a "cd .." before unplugging to make the console output a little bit less confusing (since the path is echoed in the shell prompt). Reported-by: Stefan Hajnoczi <stefanha@gmail.com> Message-ID: <20250107115245.52755-1-thuth@redhat.com> Signed-off-by: Thomas Huth <thuth@redhat.com>
-rwxr-xr-xtests/functional/test_x86_64_hotplug_cpu.py6
1 files changed, 4 insertions, 2 deletions
diff --git a/tests/functional/test_x86_64_hotplug_cpu.py b/tests/functional/test_x86_64_hotplug_cpu.py
index b1d5156..7b9200a 100755
--- a/tests/functional/test_x86_64_hotplug_cpu.py
+++ b/tests/functional/test_x86_64_hotplug_cpu.py
@@ -59,11 +59,13 @@ class HotPlugCPU(LinuxKernelTest):
'cd /sys/devices/system/cpu/cpu1',
'cpu1#')
+ exec_command_and_wait_for_pattern(self, 'cd ..', prompt)
self.vm.cmd('device_del', id='c1')
exec_command_and_wait_for_pattern(self,
- 'cd /sys/devices/system/cpu/cpu1',
- 'No such file or directory')
+ 'while cd /sys/devices/system/cpu/cpu1 ;'
+ ' do sleep 0.2 ; done',
+ 'No such file or directory')
if __name__ == '__main__':
LinuxKernelTest.main()