qemu/tests/functional
Daniel P. Berrangé 1456e90653 hw/virtio: reset virtio balloon stats on machine reset
When a machine is first booted, all virtio balloon stats are initialized
to their default value -1 (18446744073709551615 when represented as
unsigned).

They remain that way while the firmware is loading, and early phase of
guest OS boot, until the virtio-balloon driver is activated. Thereafter
the reported stats reflect the guest OS activity.

When a machine reset is performed, however, the virtio-balloon stats are
left unchanged by QEMU, despite the guest OS no longer updating them,
nor indeed even still existing.

IOW, the mgmt app keeps getting stale stats until the guest OS starts
once more and loads the virtio-balloon driver (if ever). At that point
the app will see a discontinuity in the reported values as they sudden
jump from the stale value to the new value. This jump is indigituishable
from a valid data update.

While there is an "last-updated" field to report on the freshness of
the stats, that does not unambiguously tell the mgmt app whether the
stats are still conceptually relevant to the current running workload.

It is more conceptually useful to reset the stats to their default
values on machine reset, given that the previous guest workload the
stats reflect no longer exists. The mgmt app can now clearly identify
that there are is no stats information available from the current
executing workload.

The 'last-updated' time is also reset back to 0.

IOW, on every machine reset, the virtio stats are in the same clean
state they were when the macine first powered on.

A functional test is added to validate this behaviour with a real
world guest OS.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-Id: <20250204094202.2183262-1-berrange@redhat.com>
Acked-by: David Hildenbrand <david@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2025-02-21 07:18:42 -05:00
..
acpi-bits tests/functional: Convert the acpi-bits test into a standalone test 2024-09-04 11:14:33 +02:00
qemu_test tests/functional: update tuxruntest to use uncompress utility 2025-01-10 11:18:32 +00:00
aspeed.py tests/functional: Introduce a specific test for ast2500 SoC 2024-12-11 07:25:53 +01:00
meson.build hw/virtio: reset virtio balloon stats on machine reset 2025-02-21 07:18:42 -05:00
test_aarch64_aspeed.py tests/functional: convert tests to new archive_extract helper 2024-12-17 19:39:53 +01:00
test_aarch64_raspi3.py tests/functional: convert tests to new archive_extract helper 2024-12-17 19:39:53 +01:00
test_aarch64_raspi4.py tests/functional: convert tests to new uncompress helper 2024-12-17 19:39:53 +01:00
test_aarch64_rme_sbsaref.py tests/functional/aarch64: add tests for FEAT_RME 2025-01-10 11:17:56 +00:00
test_aarch64_rme_virt.py tests/functional/aarch64: add tests for FEAT_RME 2025-01-10 11:17:56 +00:00
test_aarch64_sbsaref.py * Lots of functional test improvements (clean-ups, don't fail on 2024-12-18 20:24:51 -05:00
test_aarch64_sbsaref_alpine.py tests/functional: remove many unused imports 2024-12-17 19:39:53 +01:00
test_aarch64_sbsaref_freebsd.py tests/functional: remove many unused imports 2024-12-17 19:39:53 +01:00
test_aarch64_tcg_plugins.py tests/functional: Convert the tcg_plugins test 2024-11-04 14:16:12 +01:00
test_aarch64_tuxrun.py tests/functional: update the aarch64 tuxrun tests 2024-11-25 10:27:02 +00:00
test_aarch64_virt.py tests/functional: extend test_aarch64_virt with vulkan test 2025-01-11 11:21:59 +00:00
test_aarch64_xlnx_versal.py tests/functional: Convert the xlnx_versal_virt avocado test 2024-12-11 09:18:39 +01:00
test_acpi_bits.py tests/functional: convert tests to new archive_extract helper 2024-12-17 19:39:53 +01:00
test_alpha_clipper.py tests/functional: convert tests to new uncompress helper 2024-12-17 19:39:53 +01:00
test_arm_aspeed_ast1030.py tests/functional: convert tests to new archive_extract helper 2024-12-17 19:39:53 +01:00
test_arm_aspeed_ast2500.py tests/functional: convert tests to new archive_extract helper 2024-12-17 19:39:53 +01:00
test_arm_aspeed_ast2600.py tests/functional: convert tests to new archive_extract helper 2024-12-17 19:39:53 +01:00
test_arm_aspeed_palmetto.py tests/functional: add execute permission to aspeed tests 2024-12-17 19:39:53 +01:00
test_arm_aspeed_rainier.py tests/functional: convert tests to new archive_extract helper 2024-12-17 19:39:53 +01:00
test_arm_aspeed_romulus.py tests/functional: add execute permission to aspeed tests 2024-12-17 19:39:53 +01:00
test_arm_bflt.py tests/functional: convert tests to new archive_extract helper 2024-12-17 19:39:53 +01:00
test_arm_bpim2u.py tests/functional: convert tests to new uncompress helper 2024-12-17 19:39:53 +01:00
test_arm_canona1100.py tests/functional: convert tests to new archive_extract helper 2024-12-17 19:39:53 +01:00
test_arm_collie.py tests/functional: remove many unused imports 2024-12-17 19:39:53 +01:00
test_arm_cubieboard.py tests/functional: convert tests to new uncompress helper 2024-12-17 19:39:53 +01:00
test_arm_emcraft_sf2.py tests/functional: switch over to using self.scratch_file() 2024-12-17 19:39:53 +01:00
test_arm_integratorcp.py tests/functional: switch over to using self.scratch_file() 2024-12-17 19:39:53 +01:00
test_arm_orangepi.py tests/functional: convert tests to new uncompress helper 2024-12-17 19:39:53 +01:00
test_arm_quanta_gsj.py tests/functional/test_arm_quanta_gsj: Fix broken test 2025-01-02 09:16:42 +01:00
test_arm_raspi2.py tests/functional: convert tests to new uncompress helper 2024-12-17 19:39:53 +01:00
test_arm_smdkc210.py tests/functional: convert tests to new uncompress helper 2024-12-17 19:39:53 +01:00
test_arm_sx1.py tests/functional: remove many unused imports 2024-12-17 19:39:53 +01:00
test_arm_tuxrun.py tests/functional: update the arm tuxrun tests 2025-01-10 11:16:47 +00:00
test_arm_vexpress.py tests/functional: convert tests to new archive_extract helper 2024-12-17 19:39:53 +01:00
test_arm_virt.py tests/functional: Convert the arm virt avocado test 2024-12-17 20:29:03 +01:00
test_avr_mega2560.py tests/functional: Convert some tests that download files via fetch_asset() 2024-09-04 11:11:31 +02:00
test_cpu_queries.py tests/functional: Convert simple avocado tests into standalone python tests 2024-09-04 10:52:29 +02:00
test_empty_cpu_model.py tests/functional: Convert simple avocado tests into standalone python tests 2024-09-04 10:52:29 +02:00
test_hppa_seabios.py tests: Add functional tests for HPPA machines 2025-01-13 17:16:04 +01:00
test_i386_tuxrun.py tests/functional: update the i386 tuxrun tests 2025-01-10 11:16:52 +00:00
test_info_usernet.py tests/functional: Add a helper function for retrieving the hostfwd port 2024-12-17 20:33:29 +01:00
test_intel_iommu.py tests/functional: Convert the intel_iommu avocado test 2024-12-17 20:48:01 +01:00
test_linux_initrd.py tests/functional: switch to new test skip decorators 2024-12-17 19:39:53 +01:00
test_loongarch64_virt.py tests/functional: Fix the running test case causes loongarch64 to hang 2024-11-27 09:17:15 +01:00
test_m68k_mcf5208evb.py tests/functional: convert tests to new archive_extract helper 2024-12-17 19:39:53 +01:00
test_m68k_nextcube.py tests/functional: switch over to using self.scratch_file() 2024-12-17 19:39:53 +01:00
test_m68k_q800.py tests/functional: convert tests to new archive_extract helper 2024-12-17 19:39:53 +01:00
test_m68k_tuxrun.py tests/functional: add a m68k tuxrun tests 2025-01-10 11:16:59 +00:00
test_mem_addr_space.py tests/functional: Convert simple avocado tests into standalone python tests 2024-09-04 10:52:29 +02:00
test_microblaze_s3adsp1800.py tests/functional: convert tests to new archive_extract helper 2024-12-17 19:39:53 +01:00
test_microblazeel_s3adsp1800.py tests/functional: convert tests to new archive_extract helper 2024-12-17 19:39:53 +01:00
test_mips64_tuxrun.py tests/functional: update the mips64 tuxrun tests 2025-01-10 11:17:14 +00:00
test_mips64el_fuloong2e.py tests/functional: convert tests to new archive_extract helper 2024-12-17 19:39:53 +01:00
test_mips64el_loongson3v.py tests/functional: switch to new test skip decorators 2024-12-17 19:39:53 +01:00
test_mips64el_malta.py tests/functional: convert tests to new uncompress helper 2024-12-17 19:39:53 +01:00
test_mips64el_tuxrun.py tests/functional: update the mips64el tuxrun tests 2025-01-10 11:17:19 +00:00
test_mips_malta.py tests/functional: convert tests to new uncompress helper 2024-12-17 19:39:53 +01:00
test_mips_tuxrun.py tests/functional: update the mips32 tuxrun tests 2025-01-10 11:17:03 +00:00
test_mipsel_malta.py tests/functional: convert tests to new uncompress helper 2024-12-17 19:39:53 +01:00
test_mipsel_tuxrun.py tests/functional: update the mips32el tuxrun tests 2025-01-10 11:17:10 +00:00
test_multiprocess.py tests/functional: Convert the multiprocess avocado test into a standalone test 2024-09-11 09:49:12 +02:00
test_netdev_ethtool.py tests/functional: Correct typo in test_netdev_ethtool.py SPDX tag 2024-09-20 10:11:59 +03:00
test_or1k_sim.py tests/functional: convert tests to new archive_extract helper 2024-12-17 19:39:53 +01:00
test_pc_cpu_hotplug_props.py tests/functional: Convert simple avocado tests into standalone python tests 2024-09-04 10:52:29 +02:00
test_ppc64_e500.py tests/functional: convert tests to new archive_extract helper 2024-12-17 19:39:53 +01:00
test_ppc64_hv.py tests/functional/test_ppc64_hv: Update to Alpine 3.21.0 2025-01-02 08:58:08 +01:00
test_ppc64_powernv.py tests/functional: Convert the powernv tests from boot_linux_console.py 2024-09-24 13:45:06 +02:00
test_ppc64_pseries.py tests/functional: Convert most ppc avocado tests into standalone tests 2024-09-04 11:14:33 +02:00
test_ppc64_tuxrun.py tests/functional: update the ppc64 tuxrun tests 2025-01-10 11:17:28 +00:00
test_ppc_40p.py tests/functional: switch to new test skip decorators 2024-12-17 19:39:53 +01:00
test_ppc_74xx.py tests/functional: Convert avocado tests that just need a small adjustment 2024-09-04 10:52:29 +02:00
test_ppc_405.py tests/functional: Convert some tests that download files via fetch_asset() 2024-09-04 11:11:31 +02:00
test_ppc_amiga.py tests/functional: convert tests to new archive_extract helper 2024-12-17 19:39:53 +01:00
test_ppc_bamboo.py tests/functional: convert tests to new archive_extract helper 2024-12-17 19:39:53 +01:00
test_ppc_mac.py tests/functional: convert tests to new archive_extract helper 2024-12-17 19:39:53 +01:00
test_ppc_mpc8544ds.py tests/functional: convert tests to new archive_extract helper 2024-12-17 19:39:53 +01:00
test_ppc_tuxrun.py tests/functional: update the ppc32 tuxrun tests 2025-01-10 11:17:22 +00:00
test_ppc_virtex_ml507.py tests/functional: convert tests to new archive_extract helper 2024-12-17 19:39:53 +01:00
test_riscv32_tuxrun.py tests/functional: update the riscv32 tuxrun tests 2025-01-10 11:17:37 +00:00
test_riscv64_tuxrun.py tests/functional: update the riscv64 tuxrun tests 2025-01-10 11:17:41 +00:00
test_riscv_opensbi.py tests/functional: Convert the riscv_opensbi avocado test into a standalone test 2024-11-08 06:13:34 +01:00
test_rx_gdbsim.py tests/functional/test_rx_gdbsim: Use stable URL for test_linux_sash 2025-01-02 08:58:08 +01:00
test_s390x_ccw_virtio.py tests/functional: convert tests to new uncompress helper 2024-12-17 19:39:53 +01:00
test_s390x_topology.py tests/functional: convert tests to new uncompress helper 2024-12-17 19:39:53 +01:00
test_s390x_tuxrun.py tests/functional: update the s390x tuxrun tests 2025-01-10 11:17:45 +00:00
test_sh4_r2d.py tests/functional: convert tests to new archive_extract helper 2024-12-17 19:39:53 +01:00
test_sh4_tuxrun.py tests/functional: remove unused system imports 2024-12-11 09:18:39 +01:00
test_sh4eb_r2d.py tests/functional: convert tests to new archive_extract helper 2024-12-17 19:39:53 +01:00
test_sparc64_sun4u.py tests/functional: convert tests to new archive_extract helper 2024-12-17 19:39:53 +01:00
test_sparc64_tuxrun.py tests/functional: update the sparc64 tuxrun tests 2025-01-10 11:17:49 +00:00
test_sparc_sun4m.py tests/functional: convert tests to new archive_extract helper 2024-12-17 19:39:53 +01:00
test_version.py tests/functional: Convert avocado tests that just need a small adjustment 2024-09-04 10:52:29 +02:00
test_virtio_balloon.py hw/virtio: reset virtio balloon stats on machine reset 2025-02-21 07:18:42 -05:00
test_virtio_gpu.py tests/functional: switch over to using self.build_file(...) 2024-12-17 19:39:53 +01:00
test_virtio_version.py tests/functional: remove unused system imports 2024-12-11 09:18:39 +01:00
test_vnc.py tests/functional: Extract the find_free_ports() function into a helper file 2025-01-02 08:58:08 +01:00
test_x86_64_hotplug_cpu.py tests/functional/test_x86_64_hotplug_cpu: Fix race condition during unplug 2025-01-07 15:02:46 +01:00
test_x86_64_tuxrun.py tests/functional: update the x86_64 tuxrun tests 2025-01-10 11:17:52 +00:00
test_x86_cpu_model_versions.py tests/functional: Convert the x86_cpu_model_versions test 2024-09-04 11:14:33 +02:00
test_xtensa_lx60.py tests/functional: convert tests to new archive_extract helper 2024-12-17 19:39:53 +01:00