diff mbox series

tests: parallel-vm: allow running without curses

Message ID 1579088923-I72c5d0fedaf675a79b9f7f9d14a7c328e42e6cbe@changeid
State Accepted
Headers show
Series tests: parallel-vm: allow running without curses | expand

Commit Message

Johannes Berg Jan. 15, 2020, 11:48 a.m. UTC
From: Johannes Berg <johannes.berg@intel.com>

Allow running without curses, in which case the log is
simply written to stdout instead of a file. This is
useful for automated (but parallel) testing. Note that
in most cases, you'd want to specify --debug, and so I
added a .rstrip() there on the lines to clean that up
a bit.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
 tests/hwsim/vm/parallel-vm.py | 25 ++++++++++++++++++++++---
 1 file changed, 22 insertions(+), 3 deletions(-)

Comments

Jouni Malinen Jan. 20, 2020, 7:37 p.m. UTC | #1
On Wed, Jan 15, 2020 at 12:48:43PM +0100, Johannes Berg wrote:
> Allow running without curses, in which case the log is
> simply written to stdout instead of a file. This is
> useful for automated (but parallel) testing. Note that
> in most cases, you'd want to specify --debug, and so I
> added a .rstrip() there on the lines to clean that up
> a bit.

Thanks, applied.
diff mbox series

Patch

diff --git a/tests/hwsim/vm/parallel-vm.py b/tests/hwsim/vm/parallel-vm.py
index 47972d0dbac8..d509a041ef90 100755
--- a/tests/hwsim/vm/parallel-vm.py
+++ b/tests/hwsim/vm/parallel-vm.py
@@ -104,7 +104,7 @@  def vm_read_stdout(vm, test_queue):
         if e.errno == errno.EAGAIN:
             return False
         raise
-    logger.debug("VM[%d] stdout.read[%s]" % (vm['idx'], out))
+    logger.debug("VM[%d] stdout.read[%s]" % (vm['idx'], out.rstrip()))
     pending = vm['pending'] + out
     lines = []
     while True:
@@ -389,6 +389,8 @@  def main():
                    help="run tests under valgrind")
     p.add_argument('--telnet', dest='telnet', metavar='<baseport>', type=int,
                    help="enable telnet server inside VMs, specify the base port here")
+    p.add_argument('--nocurses', dest='nocurses', action='store_const',
+                   const=True, default=False, help="Don't use curses for output")
     p.add_argument('params', nargs='*')
     args = p.parse_args()
 
@@ -452,7 +454,10 @@  def main():
         tests = [t for t in tests if t not in long_tests]
 
     logger.setLevel(debug_level)
-    log_handler = logging.FileHandler('parallel-vm.log')
+    if not args.nocurses:
+        log_handler = logging.FileHandler('parallel-vm.log')
+    else:
+        log_handler = logging.StreamHandler(sys.stdout)
     log_handler.setLevel(debug_level)
     fmt = "%(asctime)s %(levelname)s %(message)s"
     log_formatter = logging.Formatter(fmt)
@@ -481,7 +486,21 @@  def main():
         vm[i]['skip_reason'] = []
     print('')
 
-    curses.wrapper(show_progress)
+    if not args.nocurses:
+        curses.wrapper(show_progress)
+    else:
+        class FakeScreen:
+            def leaveok(self, n):
+                pass
+            def refresh(self):
+                pass
+            def addstr(self, *args, **kw):
+                pass
+            def move(self, x, y):
+                pass
+            def clrtoeol(self):
+                pass
+        show_progress(FakeScreen())
 
     with open('{}/{}-parallel.log'.format(dir, timestamp), 'w') as f:
         for i in range(0, num_servers):