From: Zack Cerza Date: Mon, 8 Aug 2016 19:45:50 +0000 (-0600) Subject: misc.sh(): Don't capture stderr by default X-Git-Tag: 1.1.0~555^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F925%2Fhead;p=teuthology.git misc.sh(): Don't capture stderr by default If not capturing it, log it. Signed-off-by: Zack Cerza --- diff --git a/teuthology/misc.py b/teuthology/misc.py index 7fad219c9..798209424 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 464c90488..e021c4872 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()