All of lore.kernel.org
 help / color / mirror / Atom feed
From: John Snow <jsnow@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Kevin Wolf" <kwolf@redhat.com>,
	"Peter Maydell" <peter.maydell@linaro.org>,
	"Thomas Huth" <thuth@redhat.com>,
	"Eduardo Habkost" <ehabkost@redhat.com>,
	qemu-block@nongnu.org, "Alex Bennée" <alex.bennee@linaro.org>,
	"Philippe Mathieu-Daudé" <philmd@redhat.com>,
	"Philippe Mathieu-Daudé" <f4bug@amsat.org>,
	"Wainer dos Santos Moschetta" <wainersm@redhat.com>,
	"Max Reitz" <mreitz@redhat.com>,
	"Willian Rampazzo" <willianr@redhat.com>,
	"Cleber Rosa" <crosa@redhat.com>, "John Snow" <jsnow@redhat.com>,
	"Aurelien Jarno" <aurelien@aurel32.net>
Subject: [PULL 01/44] Python: expose QEMUMachine's temporary directory
Date: Thu, 27 May 2021 22:31:37 -0400	[thread overview]
Message-ID: <20210528023220.417057-2-jsnow@redhat.com> (raw)
In-Reply-To: <20210528023220.417057-1-jsnow@redhat.com>

From: Cleber Rosa <crosa@redhat.com>

Each instance of qemu.machine.QEMUMachine currently has a "test
directory", which may not have any relation to a "test", and it's
really a temporary directory.

Users instantiating the QEMUMachine class will be able to set the
location of the directory that will *contain* the QEMUMachine unique
temporary directory, so that parameter name has been changed from
test_dir to base_temp_dir.

A property has been added to allow users to access it without using
private attributes, and with that, the directory is created on first
use of the property.

Signed-off-by: Cleber Rosa <crosa@redhat.com>
Message-Id: <20210211220146.2525771-3-crosa@redhat.com>
Reviewed-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
Signed-off-by: Cleber Rosa <crosa@redhat.com>
Signed-off-by: John Snow <jsnow@redhat.com>
---
 python/qemu/machine.py        | 24 ++++++++++++++++--------
 python/qemu/qtest.py          |  6 +++---
 tests/qemu-iotests/iotests.py |  2 +-
 3 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/python/qemu/machine.py b/python/qemu/machine.py
index 6e44bda337e..b379fcbe726 100644
--- a/python/qemu/machine.py
+++ b/python/qemu/machine.py
@@ -84,7 +84,7 @@ def __init__(self,
                  args: Sequence[str] = (),
                  wrapper: Sequence[str] = (),
                  name: Optional[str] = None,
-                 test_dir: str = "/var/tmp",
+                 base_temp_dir: str = "/var/tmp",
                  monitor_address: Optional[SocketAddrT] = None,
                  socket_scm_helper: Optional[str] = None,
                  sock_dir: Optional[str] = None,
@@ -97,10 +97,10 @@ def __init__(self,
         @param args: list of extra arguments
         @param wrapper: list of arguments used as prefix to qemu binary
         @param name: prefix for socket and log file names (default: qemu-PID)
-        @param test_dir: where to create socket and log file
+        @param base_temp_dir: default location where temporary files are created
         @param monitor_address: address for QMP monitor
         @param socket_scm_helper: helper program, required for send_fd_scm()
-        @param sock_dir: where to create socket (overrides test_dir for sock)
+        @param sock_dir: where to create socket (defaults to base_temp_dir)
         @param drain_console: (optional) True to drain console socket to buffer
         @param console_log: (optional) path to console log file
         @note: Qemu process is not started until launch() is used.
@@ -112,8 +112,8 @@ def __init__(self,
         self._wrapper = wrapper
 
         self._name = name or "qemu-%d" % os.getpid()
-        self._test_dir = test_dir
-        self._sock_dir = sock_dir or self._test_dir
+        self._base_temp_dir = base_temp_dir
+        self._sock_dir = sock_dir or self._base_temp_dir
         self._socket_scm_helper = socket_scm_helper
 
         if monitor_address is not None:
@@ -303,9 +303,7 @@ def _base_args(self) -> List[str]:
         return args
 
     def _pre_launch(self) -> None:
-        self._temp_dir = tempfile.mkdtemp(prefix="qemu-machine-",
-                                          dir=self._test_dir)
-        self._qemu_log_path = os.path.join(self._temp_dir, self._name + ".log")
+        self._qemu_log_path = os.path.join(self.temp_dir, self._name + ".log")
         self._qemu_log_file = open(self._qemu_log_path, 'wb')
 
         if self._console_set:
@@ -744,3 +742,13 @@ def console_socket(self) -> socket.socket:
                 file=self._console_log_path,
                 drain=self._drain_console)
         return self._console_socket
+
+    @property
+    def temp_dir(self) -> str:
+        """
+        Returns a temporary directory to be used for this machine
+        """
+        if self._temp_dir is None:
+            self._temp_dir = tempfile.mkdtemp(prefix="qemu-machine-",
+                                              dir=self._base_temp_dir)
+        return self._temp_dir
diff --git a/python/qemu/qtest.py b/python/qemu/qtest.py
index 39a0cf62fe9..78b97d13cf0 100644
--- a/python/qemu/qtest.py
+++ b/python/qemu/qtest.py
@@ -112,14 +112,14 @@ def __init__(self,
                  binary: str,
                  args: Sequence[str] = (),
                  name: Optional[str] = None,
-                 test_dir: str = "/var/tmp",
+                 base_temp_dir: str = "/var/tmp",
                  socket_scm_helper: Optional[str] = None,
                  sock_dir: Optional[str] = None):
         if name is None:
             name = "qemu-%d" % os.getpid()
         if sock_dir is None:
-            sock_dir = test_dir
-        super().__init__(binary, args, name=name, test_dir=test_dir,
+            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)
         self._qtest: Optional[QEMUQtestProtocol] = None
diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
index 777fa2ec0e8..92681907ed9 100644
--- a/tests/qemu-iotests/iotests.py
+++ b/tests/qemu-iotests/iotests.py
@@ -571,7 +571,7 @@ class VM(qtest.QEMUQtestMachine):
     def __init__(self, path_suffix=''):
         name = "qemu%s-%d" % (path_suffix, os.getpid())
         super().__init__(qemu_prog, qemu_opts, name=name,
-                         test_dir=test_dir,
+                         base_temp_dir=test_dir,
                          socket_scm_helper=socket_scm_helper,
                          sock_dir=sock_dir)
         self._num_drives = 0
-- 
2.31.1



  reply	other threads:[~2021-05-28  2:34 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-28  2:31 [PULL 00/44] Python patches John Snow
2021-05-28  2:31 ` John Snow [this message]
2021-05-28  2:31 ` [PULL 02/44] tests/acceptance/virtiofs_submounts.py: add missing accel tag John Snow
2021-05-28  2:31 ` [PULL 03/44] tests/acceptance/virtiofs_submounts.py: evaluate string not length John Snow
2021-05-28  2:31 ` [PULL 04/44] Python: add utility function for retrieving port redirection John Snow
2021-05-28  2:31 ` [PULL 05/44] Acceptance Tests: move useful ssh methods to base class John Snow
2021-05-28  2:31 ` [PULL 06/44] Acceptance Tests: add port redirection for ssh by default John Snow
2021-05-28  2:31 ` [PULL 07/44] Acceptance Tests: make username/password configurable John Snow
2021-05-28  2:31 ` [PULL 08/44] Acceptance Tests: set up SSH connection by default after boot for LinuxTest John Snow
2021-05-28  2:31 ` [PULL 09/44] tests/acceptance/virtiofs_submounts.py: remove launch_vm() John Snow
2021-05-28  2:31 ` [PULL 10/44] Acceptance Tests: add basic documentation on LinuxTest base class John Snow
2021-05-28  2:31 ` [PULL 11/44] Acceptance Tests: introduce CPU hotplug test John Snow
2021-05-28  2:31 ` [PULL 12/44] tests/acceptance/virtiofs_submounts.py: fix setup of SSH pubkey John Snow
2021-05-28  2:31 ` [PULL 13/44] acceptance tests: bump Avocado version to 88.1 John Snow
2021-05-28  2:31 ` [PULL 14/44] python/console_socket: avoid one-letter variable John Snow
2021-05-28  2:31 ` [PULL 15/44] python/machine: use subprocess.DEVNULL instead of open(os.path.devnull) John Snow
2021-05-28  2:31 ` [PULL 16/44] python/machine: use subprocess.run instead of subprocess.Popen John Snow
2021-05-28  2:31 ` [PULL 17/44] python/console_socket: Add a pylint ignore John Snow
2021-05-28  2:31 ` [PULL 18/44] python/machine: Disable pylint warning for open() in _pre_launch John Snow
2021-05-28  2:31 ` [PULL 19/44] python/machine: disable warning for Popen in _launch() John Snow
2021-05-28  2:31 ` [PULL 20/44] python/machine: Trim line length to below 80 chars John Snow
2021-05-28  2:31 ` [PULL 21/44] iotests/297: add --namespace-packages to mypy arguments John Snow
2021-05-28  2:31 ` [PULL 22/44] python: create qemu packages John Snow
2021-05-28  2:31 ` [PULL 23/44] python: add qemu package installer John Snow
2021-05-28  2:32 ` [PULL 24/44] python: add VERSION file John Snow
2021-05-28  2:32 ` [PULL 25/44] python: add directory structure README.rst files John Snow
2021-05-28  2:32 ` [PULL 26/44] python: add MANIFEST.in John Snow
2021-05-28  2:32 ` [PULL 27/44] python: Add pipenv support John Snow
2021-05-28  2:32 ` [PULL 28/44] python: add pylint import exceptions John Snow
2021-05-28  2:32 ` [PULL 29/44] python: move pylintrc into setup.cfg John Snow
2021-05-28  2:32 ` [PULL 30/44] python: add pylint to pipenv John Snow
2021-05-28  2:32 ` [PULL 31/44] python: move flake8 config to setup.cfg John Snow
2021-05-28  2:32 ` [PULL 32/44] python: add excluded dirs to flake8 config John Snow
2021-05-28  2:32 ` [PULL 33/44] python: Add flake8 to pipenv John Snow
2021-05-28  2:32 ` [PULL 34/44] python: move mypy.ini into setup.cfg John Snow
2021-05-28  2:32 ` [PULL 35/44] python: add mypy to pipenv John Snow
2021-05-28  2:32 ` [PULL 36/44] python: move .isort.cfg into setup.cfg John Snow
2021-05-28  2:32 ` [PULL 37/44] python/qemu: add isort to pipenv John Snow
2021-05-28  2:32 ` [PULL 38/44] python/qemu: add qemu package itself " John Snow
2021-05-28  2:32 ` [PULL 39/44] python: add devel package requirements to setuptools John Snow
2021-05-28  2:32 ` [PULL 40/44] python: add avocado-framework and tests John Snow
2021-05-28  2:32 ` [PULL 41/44] python: add Makefile for some common tasks John Snow
2021-05-28  2:32 ` [PULL 42/44] python: add .gitignore John Snow
2021-05-28  2:32 ` [PULL 43/44] python: add tox support John Snow
2021-05-28  2:32 ` [PULL 44/44] gitlab: add python linters to CI John Snow
2021-05-30 19:09 ` [PULL 00/44] Python patches Peter Maydell
2021-05-30 19:22   ` John Snow
2021-05-31  8:10     ` Philippe Mathieu-Daudé
2021-06-01 10:36     ` Peter Maydell
2021-06-01 23:48       ` John Snow
2021-06-01 15:45 ` [PATCH 0/1] VM tests: account for changes in qemu.utils.get_info_usernet_hostfwd_port() Cleber Rosa
2021-06-01 15:45   ` [PATCH 1/1] " Cleber Rosa
2021-06-01 17:36     ` Willian Rampazzo
2021-06-01 17:56       ` John Snow
2021-06-01 18:07       ` Willian Rampazzo
2021-06-01 18:21         ` Philippe Mathieu-Daudé

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210528023220.417057-2-jsnow@redhat.com \
    --to=jsnow@redhat.com \
    --cc=alex.bennee@linaro.org \
    --cc=aurelien@aurel32.net \
    --cc=crosa@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=f4bug@amsat.org \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=philmd@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=thuth@redhat.com \
    --cc=wainersm@redhat.com \
    --cc=willianr@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.