Merge "Separate out test_parse_to_value_exception()"
[yardstick.git] / yardstick / tests / unit / benchmark / core / test_task.py
index e7d2c70..e1414c2 100644 (file)
@@ -9,14 +9,17 @@
 
 import copy
 import io
 
 import copy
 import io
+import logging
 import os
 import sys
 
 import mock
 import six
 import os
 import sys
 
 import mock
 import six
+from six.moves import builtins
 import unittest
 import uuid
 
 import unittest
 import uuid
 
+from yardstick.benchmark.contexts import base
 from yardstick.benchmark.contexts import dummy
 from yardstick.benchmark.core import task
 from yardstick.common import constants as consts
 from yardstick.benchmark.contexts import dummy
 from yardstick.benchmark.core import task
 from yardstick.common import constants as consts
@@ -27,7 +30,7 @@ from yardstick.common import utils
 
 class TaskTestCase(unittest.TestCase):
 
 
 class TaskTestCase(unittest.TestCase):
 
-    @mock.patch.object(task, 'Context')
+    @mock.patch.object(base, 'Context')
     def test_parse_nodes_with_context_same_context(self, mock_context):
         scenario_cfg = {
             "nodes": {
     def test_parse_nodes_with_context_same_context(self, mock_context):
         scenario_cfg = {
             "nodes": {
@@ -68,7 +71,7 @@ class TaskTestCase(unittest.TestCase):
                                                            dispatcher2])
         self.assertIsNone(t._do_output(output_config, {}))
 
                                                            dispatcher2])
         self.assertIsNone(t._do_output(output_config, {}))
 
-    @mock.patch.object(task, 'Context')
+    @mock.patch.object(base, 'Context')
     def test_parse_networks_from_nodes(self, mock_context):
         nodes = {
             'node1': {
     def test_parse_networks_from_nodes(self, mock_context):
         nodes = {
             'node1': {
@@ -132,7 +135,7 @@ class TaskTestCase(unittest.TestCase):
         self.assertEqual(mock_context.get_network.call_count, expected_get_network_calls)
         self.assertDictEqual(networks, expected)
 
         self.assertEqual(mock_context.get_network.call_count, expected_get_network_calls)
         self.assertDictEqual(networks, expected)
 
-    @mock.patch.object(task, 'Context')
+    @mock.patch.object(base, 'Context')
     @mock.patch.object(task, 'base_runner')
     def test_run(self, mock_base_runner, *args):
         scenario = {
     @mock.patch.object(task, 'base_runner')
     def test_run(self, mock_base_runner, *args):
         scenario = {
@@ -155,6 +158,31 @@ class TaskTestCase(unittest.TestCase):
         t._run([scenario], False, "yardstick.out")
         runner.run.assert_called_once()
 
         t._run([scenario], False, "yardstick.out")
         runner.run.assert_called_once()
 
+    @mock.patch.object(base, 'Context')
+    @mock.patch.object(task, 'base_runner')
+    def test_run_ProxDuration(self, mock_base_runner, *args):
+        scenario = {
+            'host': 'athena.demo',
+            'target': 'ares.demo',
+            'runner': {
+                'duration': 60,
+                'interval': 1,
+                'sampled': 'yes',
+                'confirmation': 1,
+                'type': 'ProxDuration'
+            },
+            'type': 'Ping'
+        }
+
+        t = task.Task()
+        runner = mock.Mock()
+        runner.join.return_value = 0
+        runner.get_output.return_value = {}
+        runner.get_result.return_value = []
+        mock_base_runner.Runner.get.return_value = runner
+        t._run([scenario], False, "yardstick.out")
+        runner.run.assert_called_once()
+
     @mock.patch.object(os, 'environ')
     def test_check_precondition(self, mock_os_environ):
         cfg = {
     @mock.patch.object(os, 'environ')
     def test_check_precondition(self, mock_os_environ):
         cfg = {
@@ -296,9 +324,9 @@ class TaskTestCase(unittest.TestCase):
         actual_result = t._parse_options(options)
         self.assertEqual(expected_result, actual_result)
 
         actual_result = t._parse_options(options)
         self.assertEqual(expected_result, actual_result)
 
-    @mock.patch('six.moves.builtins.open', side_effect=mock.mock_open())
+    @mock.patch.object(builtins, 'open', side_effect=mock.mock_open())
     @mock.patch.object(task, 'utils')
     @mock.patch.object(task, 'utils')
-    @mock.patch('logging.root')
+    @mock.patch.object(logging, 'root')
     def test_set_log(self, mock_logging_root, *args):
         task_obj = task.Task()
         task_obj.task_id = 'task_id'
     def test_set_log(self, mock_logging_root, *args):
         task_obj = task.Task()
         task_obj.task_id = 'task_id'
@@ -358,9 +386,10 @@ key2:
             }
 
     @staticmethod
             }
 
     @staticmethod
-    def _remove_context(context):
-        if context:
+    def _remove_contexts():
+        for context in base.Context.list:
             context._delete_context()
             context._delete_context()
+        base.Context.list = []
 
     def test__change_node_names(self):
 
 
     def test__change_node_names(self):
 
@@ -376,7 +405,7 @@ key2:
             }
 
         my_context = dummy.DummyContext()
             }
 
         my_context = dummy.DummyContext()
-        self.addCleanup(self._remove_context, my_context)
+        self.addCleanup(self._remove_contexts)
         my_context.init(ctx_attrs)
 
         expected_scenario = {
         my_context.init(ctx_attrs)
 
         expected_scenario = {
@@ -419,7 +448,7 @@ key2:
             }
 
         my_context = dummy.DummyContext()
             }
 
         my_context = dummy.DummyContext()
-        self.addCleanup(self._remove_context, my_context)
+        self.addCleanup(self._remove_contexts)
         my_context.init(ctx_attrs)
 
         scenario = copy.deepcopy(self.scenario)
         my_context.init(ctx_attrs)
 
         scenario = copy.deepcopy(self.scenario)
@@ -435,7 +464,7 @@ key2:
         }
 
         my_context = dummy.DummyContext()
         }
 
         my_context = dummy.DummyContext()
-        self.addCleanup(self._remove_context, my_context)
+        self.addCleanup(self._remove_contexts)
         my_context.init(ctx_attrs)
         scenario = copy.deepcopy(self.scenario)
         scenario['options'] = None
         my_context.init(ctx_attrs)
         scenario = copy.deepcopy(self.scenario)
         scenario['options'] = None
@@ -450,7 +479,7 @@ key2:
         }
 
         my_context = dummy.DummyContext()
         }
 
         my_context = dummy.DummyContext()
-        self.addCleanup(self._remove_context, my_context)
+        self.addCleanup(self._remove_contexts)
         my_context.init(ctx_attrs)
         scenario = copy.deepcopy(self.scenario)
         scenario['options']['server_name'] = None
         my_context.init(ctx_attrs)
         scenario = copy.deepcopy(self.scenario)
         scenario['options']['server_name'] = None
@@ -534,7 +563,8 @@ key2:
         mock_open.assert_has_calls([mock.call('args_file'),
                                     mock.call('task_file')])
 
         mock_open.assert_has_calls([mock.call('args_file'),
                                     mock.call('task_file')])
 
-    def test__render_task_error_arguments(self):
+    @mock.patch.object(builtins, 'print')
+    def test__render_task_error_arguments(self, *args):
         with self.assertRaises(exceptions.TaskRenderArgumentError):
             task.TaskParser('task_file')._render_task('value1="var3"', None)
 
         with self.assertRaises(exceptions.TaskRenderArgumentError):
             task.TaskParser('task_file')._render_task('value1="var3"', None)