[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 22/32] iotests: connect stdin to /dev/null when running tests
From: |
Alex Bennée |
Subject: |
[PATCH v2 22/32] iotests: connect stdin to /dev/null when running tests |
Date: |
Wed, 15 Mar 2023 17:43:21 +0000 |
From: Daniel P. Berrangé <berrange@redhat.com>
Currently the tests have their stdin inherited from the test harness,
meaning they are connected to a TTY. The QEMU processes spawned by
certain tests, however, modify TTY settings and if the test exits
abnormally the settings might not be restored.
The python test harness thus has some logic which will capture the
initial TTY settings and restore them once all tests are finished.
This does not, however, take into account the possibility of many
copies of the 'check' program running in parallel. With parallel
execution, a later invokation may save the TTY state that QEMU has
already modified, and thus restore bad state leaving the TTY
non-functional.
None of the I/O tests shnould actually be interactive requiring
user input and so they should not require a TTY at all. To avoid
this while TTY save/restore complexity we can connect the test
stdin to /dev/null instead.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Acked-by: Hanna Czenczek <hreitz@redhat.com>
Tested-by: Thomas Huth <thuth@redhat.com>
Message-Id: <20230303160727.3977246-6-berrange@redhat.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
tests/qemu-iotests/testrunner.py | 22 ++--------------------
1 file changed, 2 insertions(+), 20 deletions(-)
diff --git a/tests/qemu-iotests/testrunner.py b/tests/qemu-iotests/testrunner.py
index e734800b3d..81519ed6e2 100644
--- a/tests/qemu-iotests/testrunner.py
+++ b/tests/qemu-iotests/testrunner.py
@@ -24,12 +24,10 @@
import subprocess
import contextlib
import json
-import termios
import shutil
import sys
from multiprocessing import Pool
-from contextlib import contextmanager
-from typing import List, Optional, Iterator, Any, Sequence, Dict, \
+from typing import List, Optional, Any, Sequence, Dict, \
ContextManager
from testenv import TestEnv
@@ -56,22 +54,6 @@ def file_diff(file1: str, file2: str) -> List[str]:
return res
-# We want to save current tty settings during test run,
-# since an aborting qemu call may leave things screwed up.
-@contextmanager
-def savetty() -> Iterator[None]:
- isterm = sys.stdin.isatty()
- if isterm:
- fd = sys.stdin.fileno()
- attr = termios.tcgetattr(fd)
-
- try:
- yield
- finally:
- if isterm:
- termios.tcsetattr(fd, termios.TCSADRAIN, attr)
-
-
class LastElapsedTime(ContextManager['LastElapsedTime']):
""" Cache for elapsed time for tests, to show it during new test run
@@ -169,7 +151,6 @@ def __enter__(self) -> 'TestRunner':
self._stack = contextlib.ExitStack()
self._stack.enter_context(self.env)
self._stack.enter_context(self.last_elapsed)
- self._stack.enter_context(savetty())
return self
def __exit__(self, exc_type: Any, exc_value: Any, traceback: Any) -> None:
@@ -294,6 +275,7 @@ def do_run_test(self, test: str, mp: bool) -> TestResult:
t0 = time.time()
with f_bad.open('w', encoding="utf-8") as f:
with subprocess.Popen(args, cwd=str(f_test.parent), env=env,
+ stdin=subprocess.DEVNULL,
stdout=f, stderr=subprocess.STDOUT) as proc:
try:
proc.wait()
--
2.39.2
- [PATCH v2 09/32] include/exec: fix kerneldoc definition, (continued)
- [PATCH v2 09/32] include/exec: fix kerneldoc definition, Alex Bennée, 2023/03/15
- [PATCH v2 28/32] contrib/gitdm: add Amazon to the domain map, Alex Bennée, 2023/03/15
- [PATCH v2 29/32] contrib/gitdm: add Alibaba to the domain-map, Alex Bennée, 2023/03/15
- [PATCH v2 08/32] tests/tcg: disable pauth for aarch64 gdb tests, Alex Bennée, 2023/03/15
- [PATCH v2 13/32] include/qemu/plugin: Remove QEMU_PLUGIN_ASSERT, Alex Bennée, 2023/03/15
- [PATCH v2 11/32] tcg: Clear plugin_mem_cbs on TB exit, Alex Bennée, 2023/03/15
- [PATCH v2 25/32] iotests: remove the check-block.sh script, Alex Bennée, 2023/03/15
- [PATCH v2 22/32] iotests: connect stdin to /dev/null when running tests,
Alex Bennée <=