[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PULL 25/27] qtest.py: Wait for the result of qtest command
From: |
Kevin Wolf |
Subject: |
[Qemu-block] [PULL 25/27] qtest.py: Wait for the result of qtest commands |
Date: |
Fri, 1 Feb 2019 17:35:16 +0100 |
From: Alberto Garcia <address@hidden>
The cmd() method of the QEMUQtestProtocol class sends a qtest command
to QEMU but doesn't wait for the return message ("OK", "FAIL", "ERR").
Because of this, it can return control to the caller before the
command has actually finished.
In cases like clock_step or clock_set this means that cmd() can return
before all the timers triggered by the clock change have been fired.
This can be fixed by making cmd() wait for the output of the qtest
command.
This fixes iotests 093 and 136, which are flaky since commit
8258292e18c39480b64eba9f3551 when the machine is under heavy workload.
Signed-off-by: Alberto Garcia <address@hidden>
Reviewed-by: Stefan Hajnoczi <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>
---
scripts/qtest.py | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/scripts/qtest.py b/scripts/qtest.py
index adf1fe3f26..afac3fe900 100644
--- a/scripts/qtest.py
+++ b/scripts/qtest.py
@@ -31,6 +31,7 @@ class QEMUQtestProtocol(object):
"""
self._address = address
self._sock = self._get_sock()
+ self._sockfile = None
if server:
self._sock.bind(self._address)
self._sock.listen(1)
@@ -49,6 +50,7 @@ class QEMUQtestProtocol(object):
@raise socket.error on socket connection errors
"""
self._sock.connect(self._address)
+ self._sockfile = self._sock.makefile()
def accept(self):
"""
@@ -57,6 +59,7 @@ class QEMUQtestProtocol(object):
@raise socket.error on socket connection errors
"""
self._sock, _ = self._sock.accept()
+ self._sockfile = self._sock.makefile()
def cmd(self, qtest_cmd):
"""
@@ -65,9 +68,12 @@ class QEMUQtestProtocol(object):
@param qtest_cmd: qtest command text to be sent
"""
self._sock.sendall((qtest_cmd + "\n").encode('utf-8'))
+ resp = self._sockfile.readline()
+ return resp
def close(self):
self._sock.close()
+ self._sockfile.close()
def settimeout(self, timeout):
self._sock.settimeout(timeout)
--
2.20.1
- [Qemu-block] [PULL 23/27] iotests/236: fix transaction kwarg order, (continued)
- [Qemu-block] [PULL 23/27] iotests/236: fix transaction kwarg order, Kevin Wolf, 2019/02/01
- [Qemu-block] [PULL 24/27] block: Fix invalidate_cache error path for parent activation, Kevin Wolf, 2019/02/01
- [Qemu-block] [PULL 03/27] qcow2: Assert that refcount block offsets fit in the refcount table, Kevin Wolf, 2019/02/01
- [Qemu-block] [PULL 07/27] iotests: Make 234 stable, Kevin Wolf, 2019/02/01
- [Qemu-block] [PULL 08/27] vmdk: Refactor vmdk_create_extent, Kevin Wolf, 2019/02/01
- [Qemu-block] [PULL 15/27] uuid: Make qemu_uuid_bswap() take and return a QemuUUID, Kevin Wolf, 2019/02/01
- [Qemu-block] [PULL 21/27] virtio-scsi: Forbid devices with different iothreads sharing a blockdev, Kevin Wolf, 2019/02/01
- [Qemu-block] [PULL 09/27] vmdk: Implement .bdrv_co_create callback, Kevin Wolf, 2019/02/01
- [Qemu-block] [PULL 27/27] scsi-disk: Add device_id property, Kevin Wolf, 2019/02/01
- [Qemu-block] [PULL 26/27] scsi-disk: Don't use empty string as device id, Kevin Wolf, 2019/02/01
- [Qemu-block] [PULL 25/27] qtest.py: Wait for the result of qtest commands,
Kevin Wolf <=
- [Qemu-block] [PULL 18/27] block: Eliminate the S_1KiB, S_2KiB, ... macros, Kevin Wolf, 2019/02/01
- [Qemu-block] [PULL 14/27] block/vdi: Don't take address of fields in packed structs, Kevin Wolf, 2019/02/01
- [Qemu-block] [PULL 19/27] virtio-scsi: Move BlockBackend back to the main AioContext on unplug, Kevin Wolf, 2019/02/01
- [Qemu-block] [PULL 22/27] iotests: Filter second BLOCK_JOB_ERROR from 229, Kevin Wolf, 2019/02/01
- [Qemu-block] [PULL 04/27] qemu-iotests: add test case for dmg, Kevin Wolf, 2019/02/01
- Re: [Qemu-block] [Qemu-devel] [PULL 00/27] Block layer patches, no-reply, 2019/02/01
- Re: [Qemu-block] [Qemu-devel] [PULL 00/27] Block layer patches, no-reply, 2019/02/01
- Re: [Qemu-block] [Qemu-devel] [PULL 00/27] Block layer patches, no-reply, 2019/02/01
- Re: [Qemu-block] [PULL 00/27] Block layer patches, Peter Maydell, 2019/02/01
- Re: [Qemu-block] [Qemu-devel] [PULL 00/27] Block layer patches, no-reply, 2019/02/03