Esempio n. 1
0
    def test_run(self, mock_duration):
        runner = serial.SerialScenarioRunner(mock.MagicMock(),
                                             mock.MagicMock())

        runner._run_scenario = mock.MagicMock()

        scenario_name = "NovaServers.boot_server_from_volume_and_delete"
        config_kwargs = {"image": {"id": 1}, "flavor": {"id": 1}}

        context_obj = {
            "task": runner.task,
            "scenario_name": scenario_name,
            "admin": {
                "endpoint": mock.MagicMock()
            },
            "config": {
                "cleanup": ["nova", "cinder"],
                "some_ctx": 2,
                "users": {}
            }
        }

        result = runner.run(scenario_name, context_obj, config_kwargs)

        self.assertEqual(result, mock_duration.return_value)
        self.assertEqual(list(runner.result_queue), [])

        cls_name, method_name = scenario_name.split(".", 1)
        cls = scenario_base.Scenario.get_by_name(cls_name)

        expected_config_kwargs = {"image": 1, "flavor": 1}
        runner._run_scenario.assert_called_once_with(cls, method_name,
                                                     context_obj,
                                                     expected_config_kwargs)
Esempio n. 2
0
 def test_runner_send_result_exception(self):
     runner = serial.SerialScenarioRunner(
         mock.MagicMock(),
         self.fake_endpoints,
         mock.MagicMock())
     self.assertRaises(
         jsonschema.ValidationError,
         lambda: runner._send_result(mock.MagicMock()))
Esempio n. 3
0
    def test__join_processes(self, mock_send_result):
        process = mock.MagicMock(is_alive=mock.MagicMock(return_value=False))
        processes = 10
        process_pool = collections.deque([process] * processes)
        mock_result_queue = mock.MagicMock(empty=mock.MagicMock(
            return_value=True))

        runner = serial.SerialScenarioRunner(mock.MagicMock(),
                                             mock.MagicMock())

        runner._join_processes(process_pool, mock_result_queue)

        self.assertEqual(processes, process.join.call_count)
        mock_result_queue.close.assert_called_once_with()
Esempio n. 4
0
    def test_run_scenario(self, mock_run_once):
        times = 5
        result = {"duration": 10, "idle_duration": 0, "error": [],
                  "scenario_output": {}, "atomic_actions": {}}
        mock_run_once.return_value = result
        expected_results = [result for i in range(times)]

        runner = serial.SerialScenarioRunner(mock.MagicMock(),
                                             {"times": times})
        runner._run_scenario(fakes.FakeScenario, "do_it",
                             fakes.FakeUserContext({}).context, {})
        self.assertEqual(len(runner.result_queue), times)
        results = list(runner.result_queue)
        self.assertEqual(results, expected_results)
Esempio n. 5
0
    def test__create_process_pool(self):
        runner = serial.SerialScenarioRunner(mock.MagicMock(),
                                             mock.MagicMock())

        processes_to_start = 10

        def worker_process(i):
            pass

        counter = ((i, ) for i in range(100))

        process_pool = runner._create_process_pool(processes_to_start,
                                                   worker_process, counter)
        self.assertEqual(processes_to_start, len(process_pool))
        for process in process_pool:
            self.assertIsInstance(process, multiprocessing.Process)
Esempio n. 6
0
 def test_abort(self):
     runner = serial.SerialScenarioRunner(mock.MagicMock(), {"times": 5})
     self.assertFalse(runner.aborted.is_set())
     runner.abort()
     self.assertTrue(runner.aborted.is_set())
Esempio n. 7
0
 def test__run_scenario_aborted(self):
     runner = serial.SerialScenarioRunner(mock.MagicMock(), {"times": 5})
     runner.abort()
     runner._run_scenario(fakes.FakeScenario, "do_it",
                          fakes.FakeUserContext({}).context, {})
     self.assertEqual(len(runner.result_queue), 0)