[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 17/32] system/qtest: properly feedback results of clock_[step|set]
From: |
Alex Bennée |
Subject: |
[PULL 17/32] system/qtest: properly feedback results of clock_[step|set] |
Date: |
Fri, 10 Jan 2025 13:17:39 +0000 |
Time will not advance if the system is paused or there are no timer
events set for the future. In absence of pending timer events
advancing time would make no difference the system state. Attempting
to do so would be a bug and the test or device under test would need
fixing.
Tighten up the result reporting to `FAIL` if time was not advanced.
Reviewed-by: Fabiano Rosas <farosas@suse.de>
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2687
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20250108121054.1126164-18-alex.bennee@linaro.org>
diff --git a/system/qtest.c b/system/qtest.c
index 99ef2042f6..e68ed0f2a8 100644
--- a/system/qtest.c
+++ b/system/qtest.c
@@ -78,6 +78,11 @@ static void *qtest_server_send_opaque;
* let you adjust the value of the clock (monotonically). All the commands
* return the current value of the clock in nanoseconds.
*
+ * If the commands FAIL then time wasn't advanced which is likely
+ * because the machine was in a paused state or no timer events exist
+ * in the future. This will cause qtest to abort and the test will
+ * need to check its assumptions.
+ *
* .. code-block:: none
*
* > clock_step
@@ -710,7 +715,8 @@ static void qtest_process_command(CharBackend *chr, gchar
**words)
qtest_sendf(chr, "OK little\n");
}
} else if (qtest_enabled() && strcmp(words[0], "clock_step") == 0) {
- int64_t ns;
+ int64_t old_ns = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL);
+ int64_t ns, new_ns;
if (words[1]) {
int ret = qemu_strtoi64(words[1], NULL, 0, &ns);
@@ -719,11 +725,10 @@ static void qtest_process_command(CharBackend *chr, gchar
**words)
ns = qemu_clock_deadline_ns_all(QEMU_CLOCK_VIRTUAL,
QEMU_TIMER_ATTR_ALL);
}
- qemu_clock_advance_virtual_time(
- qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + ns);
+ new_ns = qemu_clock_advance_virtual_time(old_ns + ns);
qtest_send_prefix(chr);
- qtest_sendf(chr, "OK %"PRIi64"\n",
- (int64_t)qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL));
+ qtest_sendf(chr, "%s %"PRIi64"\n",
+ new_ns > old_ns ? "OK" : "FAIL", new_ns);
} else if (strcmp(words[0], "module_load") == 0) {
Error *local_err = NULL;
int rv;
@@ -740,16 +745,16 @@ static void qtest_process_command(CharBackend *chr, gchar
**words)
qtest_sendf(chr, "FAIL\n");
}
} else if (qtest_enabled() && strcmp(words[0], "clock_set") == 0) {
- int64_t ns;
+ int64_t ns, new_ns;
int ret;
g_assert(words[1]);
ret = qemu_strtoi64(words[1], NULL, 0, &ns);
g_assert(ret == 0);
- qemu_clock_advance_virtual_time(ns);
+ new_ns = qemu_clock_advance_virtual_time(ns);
qtest_send_prefix(chr);
- qtest_sendf(chr, "OK %"PRIi64"\n",
- (int64_t)qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL));
+ qtest_sendf(chr, "%s %"PRIi64"\n",
+ new_ns == ns ? "OK" : "FAIL", new_ns);
} else if (process_command_cb && process_command_cb(chr, words)) {
/* Command got consumed by the callback handler */
} else {
--
2.39.5
- [PULL 18/32] tests/functional: remove hacky sleep from the tests, (continued)
- [PULL 18/32] tests/functional: remove hacky sleep from the tests, Alex Bennée, 2025/01/10
- [PULL 31/32] dockerfiles: Remove 'MAINTAINER' entry in debian-tricore-cross.docker, Alex Bennée, 2025/01/10
- [PULL 11/32] tests/functional: update the riscv64 tuxrun tests, Alex Bennée, 2025/01/10
- [PULL 27/32] tests/vm: fix build_path based path, Alex Bennée, 2025/01/10
- [PULL 25/32] tests/docker: move riscv64 cross container from sid to trixie, Alex Bennée, 2025/01/10
- [PULL 23/32] tests/functional: extend test_aarch64_virt with vulkan test, Alex Bennée, 2025/01/10
- [PULL 32/32] MAINTAINERS: Remove myself from reviewers, Alex Bennée, 2025/01/10
- [PULL 16/32] tests/qtest: remove clock_steps from virtio tests, Alex Bennée, 2025/01/10
- [PULL 20/32] tests/functional: update tuxruntest to use uncompress utility, Alex Bennée, 2025/01/10
- [PULL 19/32] tests/functional: add zstd support to uncompress utility, Alex Bennée, 2025/01/10
- [PULL 17/32] system/qtest: properly feedback results of clock_[step|set],
Alex Bennée <=
- [PULL 26/32] tests/lcitool: remove temp workaround for debian mips64el, Alex Bennée, 2025/01/10
- [PULL 21/32] tests/functional: remove unused kernel_command_line, Alex Bennée, 2025/01/10
- [PULL 29/32] tests/vm: allow interactive login as root, Alex Bennée, 2025/01/10
- [PULL 22/32] tests/functional: bail aarch64_virt tests early if missing TCG, Alex Bennée, 2025/01/10
- [PULL 28/32] tests/vm: partially un-tabify help output, Alex Bennée, 2025/01/10
- [PULL 30/32] pc-bios: ensure keymaps dependencies set vnc tests, Alex Bennée, 2025/01/10
- Re: [PULL 00/32] testing updates for 10.0 (tuxrun, libvirt, dockerfiles, misc), Stefan Hajnoczi, 2025/01/10