Verify stdin data before doing encodeutils safe_encode 09/27109/5
authorDeepak S <deepak.s@linux.intel.com>
Tue, 17 Jan 2017 00:37:39 +0000 (06:07 +0530)
committerDeepak S <deepak.s@linux.intel.com>
Thu, 19 Jan 2017 00:55:22 +0000 (06:25 +0530)
Process running via ssh can return "None" or emtpy data from the
application. To avoid encodutils raise NoneType issue. Check the data before
encode.

JIRA: YARDSTICK-539

Change-Id: I7e86e6a17c0adc95d41714f6fec463dfadc2b81b
Signed-off-by: Deepak S <deepak.s@linux.intel.com>
yardstick/ssh.py

index 1cad8ee..cfbc3ca 100644 (file)
@@ -202,7 +202,7 @@ class SSH(object):
         start_time = time.time()
 
         # encode on transmit, decode on receive
-        data_to_send = encodeutils.safe_encode("")
+        data_to_send = encodeutils.safe_encode("", incoming='utf-8')
         stderr_data = None
 
         # If we have data to be sent to stdin then `select' should also
@@ -234,8 +234,11 @@ class SSH(object):
             if session.send_ready():
                 if stdin is not None and not stdin.closed:
                     if not data_to_send:
+                        stdin_txt = stdin.read(4096)
+                        if stdin_txt is None:
+                            stdin_txt = ''
                         data_to_send = encodeutils.safe_encode(
-                            stdin.read(4096), incoming='utf-8')
+                            stdin_txt, incoming='utf-8')
                         if not data_to_send:
                             # we may need to keep stdin open
                             if not keep_stdin_open: