# Based on qmp.py.
#
-import errno
import socket
+import os
+import qemu
+
class QEMUQtestProtocol(object):
def __init__(self, address, server=False):
def settimeout(self, timeout):
self._sock.settimeout(timeout)
+
+
+class QEMUQtestMachine(qemu.QEMUMachine):
+ '''A QEMU VM'''
+
+ def __init__(self, binary, args=None, name=None, test_dir="/var/tmp",
+ socket_scm_helper=None):
+ if name is None:
+ name = "qemu-%d" % os.getpid()
+ super(QEMUQtestMachine,
+ self).__init__(binary, args, name=name, test_dir=test_dir,
+ socket_scm_helper=socket_scm_helper)
+ self._qtest = None
+ self._qtest_path = os.path.join(test_dir, name + "-qtest.sock")
+
+ def _base_args(self):
+ args = super(QEMUQtestMachine, self)._base_args()
+ args.extend(['-qtest', 'unix:path=' + self._qtest_path,
+ '-machine', 'accel=qtest'])
+ return args
+
+ def _pre_launch(self):
+ super(QEMUQtestMachine, self)._pre_launch()
+ self._qtest = QEMUQtestProtocol(self._qtest_path, server=True)
+
+ def _post_launch(self):
+ super(QEMUQtestMachine, self)._post_launch()
+ self._qtest.accept()
+
+ def _post_shutdown(self):
+ super(QEMUQtestMachine, self)._post_shutdown()
+ self._remove_if_exists(self._qtest_path)
+
+ def qtest(self, cmd):
+ '''Send a qtest command to guest'''
+ return self._qtest.cmd(cmd)