Fix Rally output retrieval
authorJuha Kosonen <juha.kosonen@nokia.com>
Tue, 16 Jan 2018 14:45:46 +0000 (16:45 +0200)
committerJuha Kosonen <juha.kosonen@nokia.com>
Tue, 16 Jan 2018 14:45:46 +0000 (16:45 +0200)
Read stdout until nothing left instead of stopping once the child
process is terminated.

Change-Id: I46a2eb93fd614e2e7ff676727eb9dc132c29d03f
Signed-off-by: Juha Kosonen <juha.kosonen@nokia.com>
functest/opnfv_tests/openstack/rally/rally.py
functest/tests/unit/openstack/rally/test_rally.py

index eefd3eb..103c3a7 100644 (file)
@@ -219,8 +219,7 @@ class RallyBase(testcase.TestCase):
     def get_cmd_output(proc):
         """Get command stdout."""
         result = ""
-        while proc.poll() is None:
-            line = proc.stdout.readline()
+        for line in proc.stdout:
             result += line
         return result
 
@@ -410,8 +409,7 @@ class RallyBase(testcase.TestCase):
         success = 0.0
         nb_totals = 0
 
-        while proc.poll() is None:
-            line = proc.stdout.readline()
+        for line in proc.stdout:
             if ("Load duration" in line or
                     "started" in line or
                     "finished" in line or
index 450eb85..6b50dae 100644 (file)
@@ -27,7 +27,6 @@ class OSRallyTesting(unittest.TestCase):
         with mock.patch('snaps.openstack.tests.openstack_tests.'
                         'get_credentials', return_value=os_creds) as m:
             self.rally_base = rally.RallyBase()
-            self.polling_iter = 2
         self.assertTrue(m.called)
 
     def test_build_task_args_missing_floating_network(self):
@@ -102,19 +101,11 @@ class OSRallyTesting(unittest.TestCase):
         self.assertEqual(self.rally_base.task_succeed(json_raw),
                          True)
 
-    def polling(self):
-        if self.polling_iter == 0:
-            return "something"
-        self.polling_iter -= 1
-        return None
-
     def test_get_cmd_output(self):
         proc = mock.Mock()
-        attrs = {'poll.side_effect': self.polling,
-                 'stdout.readline.return_value': 'line'}
-        proc.configure_mock(**attrs)
+        proc.stdout.__iter__ = mock.Mock(return_value=iter(['line1', 'line2']))
         self.assertEqual(self.rally_base.get_cmd_output(proc),
-                         'lineline')
+                         'line1line2')
 
     @mock.patch('__builtin__.open', mock.mock_open())
     @mock.patch('functest.opnfv_tests.openstack.rally.rally.yaml.safe_load',