Remove explicit Rally task validation 51/60851/1
authorJuha Kosonen <juha.kosonen@nokia.com>
Fri, 10 Aug 2018 13:43:24 +0000 (16:43 +0300)
committerJuha Kosonen <juha.kosonen@nokia.com>
Fri, 10 Aug 2018 13:43:24 +0000 (16:43 +0300)
Utilize the output of Rally task execution since it internally
validates the task.

Use Popen.communicate to get the output from the running Rally task.

Change-Id: I9b1299bc26129ff4f89adccec611c78195a3ab02
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 efee15a..4a63629 100644 (file)
@@ -168,14 +168,6 @@ class RallyBase(singlevm.VmReady1):
 
         return False
 
-    @staticmethod
-    def get_cmd_output(proc):
-        """Get command stdout."""
-        result = ""
-        for line in proc.stdout:
-            result += line
-        return result
-
     @staticmethod
     def excl_scenario():
         """Exclude scenario."""
@@ -345,23 +337,15 @@ class RallyBase(singlevm.VmReady1):
                 task_file, "--task-args",
                 str(self._build_task_args(test_name))])
         LOGGER.debug('running command: %s', cmd)
-
         proc = subprocess.Popen(cmd, stdout=subprocess.PIPE,
                                 stderr=subprocess.STDOUT)
-        output = self.get_cmd_output(proc)
-        task_id = self.get_task_id(output)
+        output = proc.communicate()[0]
 
+        task_id = self.get_task_id(output)
         LOGGER.debug('task_id : %s', task_id)
-
         if task_id is None:
-            LOGGER.error('Failed to retrieve task_id, validating task...')
-            cmd = (["rally", "task", "validate", "--task", task_file,
-                    "--task-args", str(self._build_task_args(test_name))])
-            LOGGER.debug('running command: %s', cmd)
-            proc = subprocess.Popen(cmd, stdout=subprocess.PIPE,
-                                    stderr=subprocess.STDOUT)
-            output = self.get_cmd_output(proc)
-            LOGGER.error("Task validation result:" + "\n" + output)
+            LOGGER.error("Failed to retrieve task_id")
+            LOGGER.error("Result:\n%s", output)
             raise Exception("Failed to retrieve task id")
 
         self._save_results(test_name, task_id)
index b49fe62..1a43e56 100644 (file)
@@ -104,12 +104,6 @@ class OSRallyTesting(unittest.TestCase):
         self.assertEqual(self.rally_base.task_succeed(json_raw),
                          True)
 
-    def test_get_cmd_output(self):
-        proc = mock.Mock()
-        proc.stdout.__iter__ = mock.Mock(return_value=iter(['line1', 'line2']))
-        self.assertEqual(self.rally_base.get_cmd_output(proc),
-                         'line1line2')
-
     @mock.patch('six.moves.builtins.open', mock.mock_open())
     @mock.patch('functest.opnfv_tests.openstack.rally.rally.yaml.safe_load',
                 return_value={'scenario': [
@@ -222,8 +216,6 @@ class OSRallyTesting(unittest.TestCase):
                 '_build_task_args', return_value={})
     @mock.patch('functest.opnfv_tests.openstack.rally.rally.RallyBase.'
                 'get_task_id', return_value=None)
-    @mock.patch('functest.opnfv_tests.openstack.rally.rally.RallyBase.'
-                'get_cmd_output', return_value='')
     @mock.patch('functest.opnfv_tests.openstack.rally.rally.os.path.exists',
                 return_value=True)
     @mock.patch('functest.opnfv_tests.openstack.rally.rally.subprocess.Popen')
@@ -232,7 +224,7 @@ class OSRallyTesting(unittest.TestCase):
         # pylint: disable=unused-argument
         with self.assertRaises(Exception):
             self.rally_base._run_task('test_name')
-        text = 'Failed to retrieve task_id, validating task...'
+        text = 'Failed to retrieve task_id'
         mock_logger_error.assert_any_call(text)
 
     @mock.patch('six.moves.builtins.open', mock.mock_open())
@@ -244,8 +236,6 @@ class OSRallyTesting(unittest.TestCase):
                 '_build_task_args', return_value={})
     @mock.patch('functest.opnfv_tests.openstack.rally.rally.RallyBase.'
                 'get_task_id', return_value='1')
-    @mock.patch('functest.opnfv_tests.openstack.rally.rally.RallyBase.'
-                'get_cmd_output', return_value='')
     @mock.patch('functest.opnfv_tests.openstack.rally.rally.RallyBase.'
                 'task_succeed', return_value=True)
     @mock.patch('functest.opnfv_tests.openstack.rally.rally.os.path.exists',
@@ -264,12 +254,9 @@ class OSRallyTesting(unittest.TestCase):
     @mock.patch('six.moves.builtins.open', mock.mock_open())
     @mock.patch('functest.opnfv_tests.openstack.rally.rally.RallyBase.'
                 'task_succeed', return_value=True)
-    @mock.patch('functest.opnfv_tests.openstack.rally.rally.RallyBase.'
-                'get_cmd_output', return_value='')
     @mock.patch('functest.opnfv_tests.openstack.rally.rally.os.path.exists',
                 return_value=True)
     @mock.patch('subprocess.check_output')
-    @mock.patch('functest.opnfv_tests.openstack.rally.rally.subprocess.Popen')
     @mock.patch('functest.opnfv_tests.openstack.rally.rally.os.makedirs')
     @mock.patch('functest.opnfv_tests.openstack.rally.rally.LOGGER.info')
     @mock.patch('functest.opnfv_tests.openstack.rally.rally.LOGGER.debug')