qemu.machine.qtest module

QEMU qtest library

qtest offers the QEMUQtestProtocol and QEMUQTestMachine classes, which offer a connection to QEMU’s qtest protocol socket, and a qtest-enabled subclass of QEMUMachine, respectively.

class qemu.machine.qtest.QEMUQtestMachine(binary: str, args: Sequence[str] = (), wrapper: Sequence[str] = (), name: Optional[str] = None, base_temp_dir: str = '/var/tmp', socket_scm_helper: Optional[str] = None, sock_dir: Optional[str] = None, qmp_timer: Optional[float] = None)[source]

Bases: qemu.machine.machine.QEMUMachine

A QEMU VM, with a qtest socket available.

qtest(cmd: str)str[source]

Send a qtest command to the guest.

Parameters

cmd – qtest command to send

Returns

qtest server response

class qemu.machine.qtest.QEMUQtestProtocol(address: Union[Tuple[str, int], str], server: bool = False)[source]

Bases: object

QEMUQtestProtocol implements a connection to a qtest socket.

Parameters
  • address – QEMU address, can be either a unix socket path (string) or a tuple in the form ( address, port ) for a TCP connection

  • server – server mode, listens on the socket (bool)

Raises

socket.error – on socket connection errors

Note

No conection is estabalished by __init__(), this is done by the connect() or accept() methods.

accept()None[source]

Await connection from QEMU.

@raise socket.error on socket connection errors

close()None[source]

Close this socket.

cmd(qtest_cmd: str)str[source]

Send a qtest command on the wire.

@param qtest_cmd: qtest command text to be sent

connect()None[source]

Connect to the qtest socket.

@raise socket.error on socket connection errors

settimeout(timeout: Optional[float])None[source]

Set a timeout, in seconds.