From 1635ae8e4e5a312708c2cca17f703dbb2209417e Mon Sep 17 00:00:00 2001 From: Zack Cerza Date: Mon, 8 Aug 2016 13:45:50 -0600 Subject: [PATCH] misc.sh(): Don't capture stderr by default If not capturing it, log it. Signed-off-by: Zack Cerza --- teuthology/misc.py | 12 +++++++----- teuthology/test/test_misc.py | 4 +++- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/teuthology/misc.py b/teuthology/misc.py index 7fad219c9b..798209424b 100644 --- a/teuthology/misc.py +++ b/teuthology/misc.py @@ -1331,19 +1331,21 @@ def is_in_dict(searchkey, searchval, d): return searchval == val -def sh(command, log_limit=1024): +def sh(command, log_limit=1024, include_stderr=False): """ - Run the shell command and return the output in ascii (stderr and - stdout). If the command fails, raise an exception. The command - and its output are logged, on success and on error. + Run the shell command and return the output in ascii (stdout and optionally + stderr). If the command fails, raise an exception. The command and its + output are logged, on success and on error. """ log.debug(":sh: " + command) proc = subprocess.Popen( args=command, stdout=subprocess.PIPE, - stderr=subprocess.STDOUT, + stderr=subprocess.STDOUT if include_stderr else subprocess.PIPE, shell=True, bufsize=1) + if include_stderr is False: + log.debug("stderr: %s", proc.stderr.read()) lines = [] truncated = False with proc.stdout: diff --git a/teuthology/test/test_misc.py b/teuthology/test/test_misc.py index 464c90488e..e021c4872e 100644 --- a/teuthology/test/test_misc.py +++ b/teuthology/test/test_misc.py @@ -34,8 +34,9 @@ def test_sh_fail(caplog): assert ('replay full' in record.message or 'ABC\n' == record.message) + def test_sh_progress(caplog): - misc.sh("echo AB ; sleep 5 ; /bin/echo C", 2) == "ABC\n" + misc.sh("echo AB ; sleep 5 ; /bin/echo C", 2, include_stderr=True) == "ABC\n" records = caplog.records() assert ':sh: ' in records[0].message assert 'AB' == records[1].message @@ -49,6 +50,7 @@ def test_sh_progress(caplog): t2 = datetime.strptime(records[2].asctime.split(',')[0], "%Y-%m-%d %H:%M:%S") assert (t2 - t1).total_seconds() > 2 + def test_wait_until_osds_up(): ctx = argparse.Namespace() remote = FakeRemote() -- 2.39.5