Fix execute_command function to show all the output 99/17399/3
authorjose.lausuch <jose.lausuch@ericsson.com>
Fri, 22 Jul 2016 09:23:41 +0000 (11:23 +0200)
committerjose.lausuch <jose.lausuch@ericsson.com>
Fri, 22 Jul 2016 09:29:02 +0000 (11:29 +0200)
This function wasn't showing anything for some commands,
like 'rally show images' and 'rally show flavors'

JIRA: FUNCTEST-348

Change-Id: I75bf5f3504ea8ffea42c2fb237d6863c655259e1
Signed-off-by: jose.lausuch <jose.lausuch@ericsson.com>
utils/functest_utils.py

index b51a1c8..b46dc7d 100644 (file)
@@ -243,11 +243,8 @@ def execute_command(cmd, logger=None,
         else:
             print(msg_exec)
     p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
-    while True:
-        output = p.stdout.readline()
-        line = output.replace('\n', '')
-        if not line:
-            break
+    for line in iter(p.stdout.readline, b''):
+        line = line.replace('\n', '')
         if logger:
             if info:
                 logger.info(line)
@@ -255,8 +252,9 @@ def execute_command(cmd, logger=None,
                 logger.debug(line)
         else:
             print line
-    p.communicate()
-    if p.returncode != 0:
+    p.stdout.close()
+    returncode = p.wait()
+    if returncode != 0:
         if verbose:
             if logger:
                 logger.error(error_msg)
@@ -265,7 +263,7 @@ def execute_command(cmd, logger=None,
         if exit_on_error:
             sys.exit(1)
 
-    return p.returncode
+    return returncode
 
 
 def get_deployment_dir(logger=None):