Skip to content

Commit

Permalink
python: qemu: add timer parameter for qmp.accept socket
Browse files Browse the repository at this point in the history
Also add a new _qmp_timer field to the QEMUMachine class.

Let's change the default socket timeout to None, so that if
a subclass needs to add a timer, it can be done by modifying
this private field.

At the same time, restore the timer to be 15 seconds in iotests.py, to
give an upper bound to the QMP monitor test command execution.

Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: John Snow <jsnow@redhat.com>
Acked-by: John Snow <jsnow@redhat.com>
Reviewed-by: Max Reitz <mreitz@redhat.com>
Message-Id: <20210809090114.64834-2-eesposit@redhat.com>
Signed-off-by: Hanna Reitz <hreitz@redhat.com>
  • Loading branch information
esposem authored and XanClic committed Sep 1, 2021
1 parent ec397e9 commit e2f948a
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 5 deletions.
7 changes: 5 additions & 2 deletions python/qemu/machine/machine.py
Expand Up @@ -97,7 +97,8 @@ def __init__(self,
sock_dir: Optional[str] = None,
drain_console: bool = False,
console_log: Optional[str] = None,
log_dir: Optional[str] = None):
log_dir: Optional[str] = None,
qmp_timer: Optional[float] = None):
'''
Initialize a QEMUMachine
Expand All @@ -112,6 +113,7 @@ def __init__(self,
@param drain_console: (optional) True to drain console socket to buffer
@param console_log: (optional) path to console log file
@param log_dir: where to create and keep log files
@param qmp_timer: (optional) default QMP socket timeout
@note: Qemu process is not started until launch() is used.
'''
# pylint: disable=too-many-arguments
Expand All @@ -121,6 +123,7 @@ def __init__(self,
self._binary = binary
self._args = list(args)
self._wrapper = wrapper
self._qmp_timer = qmp_timer

self._name = name or "qemu-%d" % os.getpid()
self._base_temp_dir = base_temp_dir
Expand Down Expand Up @@ -343,7 +346,7 @@ def _pre_launch(self) -> None:

def _post_launch(self) -> None:
if self._qmp_connection:
self._qmp.accept()
self._qmp.accept(self._qmp_timer)

def _post_shutdown(self) -> None:
"""
Expand Down
5 changes: 3 additions & 2 deletions python/qemu/machine/qtest.py
Expand Up @@ -115,7 +115,8 @@ def __init__(self,
name: Optional[str] = None,
base_temp_dir: str = "/var/tmp",
socket_scm_helper: Optional[str] = None,
sock_dir: Optional[str] = None):
sock_dir: Optional[str] = None,
qmp_timer: Optional[float] = None):
# pylint: disable=too-many-arguments

if name is None:
Expand All @@ -124,7 +125,7 @@ def __init__(self,
sock_dir = base_temp_dir
super().__init__(binary, args, name=name, base_temp_dir=base_temp_dir,
socket_scm_helper=socket_scm_helper,
sock_dir=sock_dir)
sock_dir=sock_dir, qmp_timer=qmp_timer)
self._qtest: Optional[QEMUQtestProtocol] = None
self._qtest_path = os.path.join(sock_dir, name + "-qtest.sock")

Expand Down
3 changes: 2 additions & 1 deletion tests/qemu-iotests/iotests.py
Expand Up @@ -570,10 +570,11 @@ class VM(qtest.QEMUQtestMachine):

def __init__(self, path_suffix=''):
name = "qemu%s-%d" % (path_suffix, os.getpid())
timer = 15.0
super().__init__(qemu_prog, qemu_opts, name=name,
base_temp_dir=test_dir,
socket_scm_helper=socket_scm_helper,
sock_dir=sock_dir)
sock_dir=sock_dir, qmp_timer=timer)
self._num_drives = 0

def add_object(self, opts):
Expand Down

0 comments on commit e2f948a

Please sign in to comment.