Skip to content

Add offline-cpu-vcpu plug_unplug-kdump test variant - #35

Open
Anushree-Mathur wants to merge 1 commit into
lop-devops:KVMCIfrom
Anushree-Mathur:cpu_offline_kdump_new
Open

Add offline-cpu-vcpu plug_unplug-kdump test variant#35
Anushree-Mathur wants to merge 1 commit into
lop-devops:KVMCIfrom
Anushree-Mathur:cpu_offline_kdump_new

Conversation

@Anushree-Mathur

Copy link
Copy Markdown

Offline a guest CPU, run virsh setvcpus (hotplug or unplug), then trigger kdump to verify guest kernel stability with an offline CPU under a changing vCPU count.

libvirt/tests/cfg/libvirt_vcpu_plug_unplug.cfg:
Add offline_cpu_kdump variant inside positive_test.vcpu_set as a
peer of with_maxvcpu, restricted to live + ppc64le/ppc64.
Three sub-variants:

  • offline_hotplug_kdump: offline cpu1, plug 4->8, kdump, vmcore
  • offline_unplug_kdump: offline cpu1, unplug 8->4, kdump, vmcore
  • offline_plug_and_unplug_kdump: both in sequence
    on_crash=restart so the guest reboots after kdump capture and the
    test can log back in to verify the new vmcore.

libvirt/tests/src/libvirt_vcpu_plug_unplug.py:

  • Import utils_kdump for trigger_crash() and get_vmcores().
  • Read offline_cpu_before_setvcpus, offline_cpu_list, kdump_after_plug_unplug and crash_dir params.
  • Add offline_guest_cpus() helper: for each CPU id in offline_cpu_list, writes 0 to /sys/devices/system/cpu/cpuN/online inside the guest.
  • Before plug setvcpus: call offline_guest_cpus() if requested.
  • Before unplug setvcpus: same.
  • Reduce expected online CPU count by offline_count when CPUs are offlined, so check_if_vm_vcpu_match() does not false-fail (offlined CPUs are not counted by /proc/cpuinfo).
  • After hotplug and after unplug: call utils_kdump.trigger_crash(session, wait_time=120) with an explicit session (timeout=240) so the internal session.cmd() has enough time on ppc64le for the guest to die cleanly. Verify vmcore via utils_kdump.get_vmcores().
  • Guard uptime reboot check with 'if not kdump_after_plug_unplug' since kdump intentionally reboots the guest.

Signed-off-by: Anushree-Mathur anushree.mathur@linux.ibm.com

Offline a guest CPU, run virsh setvcpus (hotplug or unplug), then
trigger kdump to verify guest kernel stability with an offline CPU
under a changing vCPU count.

libvirt/tests/cfg/libvirt_vcpu_plug_unplug.cfg:
  Add offline_cpu_kdump variant inside positive_test.vcpu_set as a
  peer of with_maxvcpu, restricted to live + ppc64le/ppc64.
  Three sub-variants:
  - offline_hotplug_kdump:      offline cpu1, plug 4->8, kdump, vmcore
  - offline_unplug_kdump:       offline cpu1, unplug 8->4, kdump, vmcore
  - offline_plug_and_unplug_kdump: both in sequence
  on_crash=restart so the guest reboots after kdump capture and the
  test can log back in to verify the new vmcore.

libvirt/tests/src/libvirt_vcpu_plug_unplug.py:
  - Import utils_kdump for trigger_crash() and get_vmcores().
  - Read offline_cpu_before_setvcpus, offline_cpu_list,
    kdump_after_plug_unplug and crash_dir params.
  - Add offline_guest_cpus() helper: for each CPU id in
    offline_cpu_list, writes 0 to
    /sys/devices/system/cpu/cpuN/online inside the guest.
  - Before plug setvcpus: call offline_guest_cpus() if requested.
  - Before unplug setvcpus: same.
  - Reduce expected online CPU count by offline_count when CPUs are
    offlined, so check_if_vm_vcpu_match() does not false-fail
    (offlined CPUs are not counted by /proc/cpuinfo).
  - After hotplug and after unplug: call
    utils_kdump.trigger_crash(session, wait_time=120) with an explicit
    session (timeout=240) so the internal session.cmd() has enough
    time on ppc64le for the guest to die cleanly. Verify vmcore via
    utils_kdump.get_vmcores().
  - Guard uptime reboot check with 'if not kdump_after_plug_unplug'
    since kdump intentionally reboots the guest.
Signed-off-by: Anushree-Mathur <anushree.mathur@linux.ibm.com>
Signed-off-by: Anushree-Mathur <anushree.mathur@linux.ibm.com>
@Anushree-Mathur

Copy link
Copy Markdown
Author
 python3 avocado-setup.py --run-suite guest_cpu_offline_kdump --guest-os SLES.16.1.ppc64le --only-filter 'virtio_scsi virtio_net qcow2' --no-download
20:46:13 INFO    : Env Config: /home/Anu/tests/config/wrapper/env.conf
20:46:13 INFO    : No Run Config: /home/Anu/tests/config/wrapper/no_run_tests.conf
20:46:13 WARNING : Overriding user setting and enabling kvm bootstrap as guest tests are requested
20:46:13 INFO    : Check for environment
20:46:15 INFO    : Creating temporary mux dir
20:46:15 INFO    :
20:46:15 INFO    : Running Guest Tests Suite cpu_offline_kdump
20:46:15 INFO    : Running: /usr/local/bin/avocado run --vt-type libvirt --vt-config /home/Anu/tests/data/avocado-vt/backends/libvirt/cfg/cpu_offline_kdump.cfg                 --force-job-id 4bfdb617ce674814e8a0c42f068c601deac8e228                 --job-results-dir /home/Anu/tests/results  --vt-only-filter                                             "virtio_scsi virtio_net qcow2 SLES.16.1.ppc64le"
/usr/local/lib/python3.13/site-packages/avocado/core/__init__.py:18: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81.
  import pkg_resources
No python imaging library installed. Screendump and Windows guest BSOD detection are disabled. In order to enable it, please install python-imaging or the equivalent for your distro.
No python imaging library installed. PPM image conversion to JPEG disabled. In order to enable it, please install python-imaging or the equivalent for your distro.
No python imaging library installed. Screendump and Windows guest BSOD detection are disabled. In order to enable it, please install python-imaging or the equivalent for your distro.
No python imaging library installed. PPM image conversion to JPEG disabled. In order to enable it, please install python-imaging or the equivalent for your distro.
JOB ID     : 4bfdb617ce674814e8a0c42f068c601deac8e228
JOB LOG    : /home/Anu/tests/results/job-2026-08-13T20.46-4bfdb61/job.log
 (01/35) io-github-autotest-qemu.unattended_install.import.import.default_install.aio_native: STARTED
 (01/35) io-github-autotest-qemu.unattended_install.import.import.default_install.aio_native: PASS (55.42 s)
 (02/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_hotplug_kdump: STARTED
 (02/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_hotplug_kdump: PASS (202.79 s)
 (03/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_unplug_kdump: STARTED
 (03/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_unplug_kdump: PASS (203.12 s)
 (04/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_plug_and_unplug_kdump: STARTED
 (04/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_plug_and_unplug_kdump: PASS (372.57 s)
 (05/35) io-github-autotest-libvirt.remove_guest.without_disk: STARTED
 (05/35) io-github-autotest-libvirt.remove_guest.without_disk: PASS (5.17 s)
 (06/35) io-github-autotest-qemu.unattended_install.import.import.default_install.aio_native: STARTED
 (06/35) io-github-autotest-qemu.unattended_install.import.import.default_install.aio_native: PASS (55.99 s)
 (07/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_hotplug_kdump: STARTED
 (07/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_hotplug_kdump: PASS (202.84 s)
 (08/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_unplug_kdump: STARTED
 (08/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_unplug_kdump: PASS (203.36 s)
 (09/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_plug_and_unplug_kdump: STARTED
 (09/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_plug_and_unplug_kdump: PASS (372.61 s)
 (10/35) io-github-autotest-libvirt.remove_guest.without_disk: STARTED
 (10/35) io-github-autotest-libvirt.remove_guest.without_disk: PASS (5.16 s)
 (11/35) io-github-autotest-qemu.unattended_install.import.import.default_install.aio_native: STARTED
 (11/35) io-github-autotest-qemu.unattended_install.import.import.default_install.aio_native: PASS (55.49 s)
 (12/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_hotplug_kdump: STARTED
 (12/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_hotplug_kdump: PASS (202.32 s)
 (13/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_unplug_kdump: STARTED
 (13/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_unplug_kdump: PASS (203.04 s)
 (14/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_plug_and_unplug_kdump: STARTED
 (14/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_plug_and_unplug_kdump: PASS (372.66 s)
 (15/35) io-github-autotest-libvirt.remove_guest.without_disk: STARTED
 (15/35) io-github-autotest-libvirt.remove_guest.without_disk: PASS (5.18 s)
 (16/35) io-github-autotest-qemu.unattended_install.import.import.default_install.aio_native: STARTED
 (16/35) io-github-autotest-qemu.unattended_install.import.import.default_install.aio_native: PASS (56.17 s)
 (17/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_hotplug_kdump: STARTED
 (17/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_hotplug_kdump: PASS (202.52 s)
 (18/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_unplug_kdump: STARTED
 (18/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_unplug_kdump: PASS (203.03 s)
 (19/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_plug_and_unplug_kdump: STARTED
 (19/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_plug_and_unplug_kdump: PASS (372.09 s)
 (20/35) io-github-autotest-libvirt.remove_guest.without_disk: STARTED
 (20/35) io-github-autotest-libvirt.remove_guest.without_disk: PASS (5.17 s)
 (21/35) io-github-autotest-qemu.unattended_install.import.import.default_install.aio_native: STARTED
 (21/35) io-github-autotest-qemu.unattended_install.import.import.default_install.aio_native: PASS (54.72 s)
 (22/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_hotplug_kdump: STARTED
 (22/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_hotplug_kdump: PASS (200.75 s)
 (23/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_unplug_kdump: STARTED
 (23/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_unplug_kdump: PASS (201.04 s)
 (24/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_plug_and_unplug_kdump: STARTED
 (24/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_plug_and_unplug_kdump: PASS (370.94 s)
 (25/35) io-github-autotest-libvirt.remove_guest.without_disk: STARTED
 (25/35) io-github-autotest-libvirt.remove_guest.without_disk: PASS (4.24 s)
 (26/35) io-github-autotest-qemu.unattended_install.import.import.default_install.aio_native: STARTED
 (26/35) io-github-autotest-qemu.unattended_install.import.import.default_install.aio_native: PASS (48.90 s)
 (27/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_hotplug_kdump: STARTED
 (27/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_hotplug_kdump: PASS (200.71 s)
 (28/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_unplug_kdump: STARTED
 (28/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_unplug_kdump: ERROR: Failures occurred while postprocess:\nCommand 'ps -o comm 1' failed.\nstdout: b''\nstderr: b''\nadditional_info: None (200.68 s)
 (29/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_plug_and_unplug_kdump: STARTED
 (29/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_plug_and_unplug_kdump: PASS (371.69 s)
 (30/35) io-github-autotest-libvirt.remove_guest.without_disk: STARTED
 (30/35) io-github-autotest-libvirt.remove_guest.without_disk: PASS (4.23 s)
 (31/35) io-github-autotest-qemu.unattended_install.import.import.default_install.aio_native: STARTED
 (31/35) io-github-autotest-qemu.unattended_install.import.import.default_install.aio_native: PASS (56.32 s)
 (32/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_hotplug_kdump: STARTED
 (32/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_hotplug_kdump: PASS (201.03 s)
 (33/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_unplug_kdump: STARTED
 (33/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_unplug_kdump: PASS (201.03 s)
 (34/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_plug_and_unplug_kdump: STARTED
 (34/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_plug_and_unplug_kdump: PASS (368.96 s)
 (35/35) io-github-autotest-libvirt.remove_guest.without_disk: STARTED
 (35/35) io-github-autotest-libvirt.remove_guest.without_disk: PASS (5.17 s)
RESULTS    : PASS 34 | ERROR 1 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 | CANCEL 0
JOB HTML   : /home/Anu/tests/results/job-2026-08-13T20.46-4bfdb61/results.html
JOB TIME   : 5930.30 s

Test summary:
28-type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.offline_cpu_kdump.offline_unplug_kdump: ERROR
22:25:08 INFO    :
22:25:08 INFO    : Summary of test results can be found below:
TestSuite                                                                                 TestRun    Summary

guest_cpu_offline_kdump                                                                   Run        Successfully executed
/home/Anu/tests/results/job-2026-08-13T20.46-4bfdb61/job.log
| PASS 34 || CANCEL 0 || ERRORS 1 || FAILURES 0 || SKIP 0 || WARN 0 || INTERRUPT 0 |

Test suites status:

TOTAL                1
RUN                  1
NOT_RUN              0
CANT_RUN             0

Final count summary for tests run:

TOTAL                35
PASS                 34
CANCEL               0
ERRORS               1
FAILURES             0
SKIP                 0
WARN                 0
INTERRUPT            0
22:25:08 INFO    : Removing temporary mux dir

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant