Beispiel #1
0
    def test__worker_process_called_with_cfg(self):
        self.scenario_cfg["runner"] = {"sampled": True, "duration": 0.1}
        proxduration._worker_process(mock.Mock(), self.benchmark_cls,
                                     'my_method', self.scenario_cfg, {},
                                     multiprocessing.Event(), mock.Mock())

        self._assert_defaults__worker_run_setup_and_teardown()
Beispiel #2
0
    def test__worker_process_queue_on_sla_validation_error_monitor(
            self, *args):
        self.scenario_cfg['sla'] = {'action': 'monitor'}
        self.scenario_cfg["runner"] = {"sampled": True, "duration": 0.1}
        self.benchmark.my_method = self.MyMethod(
            side_effect=self.MyMethod.SLA_VALIDATION_ERROR_SIDE_EFFECT)
        queue = mock.Mock()
        proxduration._worker_process(queue, self.benchmark_cls, 'my_method',
                                     self.scenario_cfg, {},
                                     multiprocessing.Event(), mock.Mock())

        self._assert_defaults__worker_run_setup_and_teardown()
        benchmark_output = {
            'timestamp':
            mock.ANY,
            'sequence':
            1,
            'data': {
                'my_key': 102
            },
            'errors': ('My Case SLA validation failed. '
                       'Error: my error message', )
        }
        queue.put.assert_has_calls(
            [mock.call(benchmark_output, True, constants.QUEUE_PUT_TIMEOUT)])
Beispiel #3
0
    def test__worker_process_runner_id(self, mock_os_getpid):
        mock_os_getpid.return_value = 101
        self.scenario_cfg["runner"] = {"sampled": True, "duration": 0.1}
        proxduration._worker_process(mock.Mock(), self.benchmark_cls,
                                     'my_method', self.scenario_cfg, {},
                                     multiprocessing.Event(), mock.Mock())

        self.assertEqual(101, self.scenario_cfg['runner']['runner_id'])
Beispiel #4
0
    def test__worker_process_broad_exception(self, *args):
        self.benchmark.my_method = mock.Mock(
            side_effect=y_exc.YardstickException)
        self.scenario_cfg["runner"] = {"sampled": True, "duration": 0.1}
        proxduration._worker_process(mock.Mock(), self.benchmark_cls,
                                     'my_method', self.scenario_cfg, {},
                                     multiprocessing.Event(), mock.Mock())

        self._assert_defaults__worker_run_setup_and_teardown()
Beispiel #5
0
    def test__worker_process_except_sla_validation_error_no_sla_cfg(self):
        self.benchmark.my_method = mock.Mock(
            side_effect=y_exc.SLAValidationError)
        self.scenario_cfg["runner"] = {"sampled": True, "duration": 0.1}
        proxduration._worker_process(mock.Mock(), self.benchmark_cls,
                                     'my_method', self.scenario_cfg, {},
                                     multiprocessing.Event(), mock.Mock())

        self._assert_defaults__worker_run_setup_and_teardown()
Beispiel #6
0
    def test__worker_process_output_queue(self):
        self.benchmark.my_method = mock.Mock(return_value='my_result')
        self.scenario_cfg["runner"] = {"sampled": True, "duration": 0.1}
        output_queue = mock.Mock()
        proxduration._worker_process(mock.Mock(), self.benchmark_cls,
                                     'my_method', self.scenario_cfg, {},
                                     multiprocessing.Event(), output_queue)

        self._assert_defaults__worker_run_setup_and_teardown()
        output_queue.put.assert_has_calls(
            [mock.call('my_result', True, constants.QUEUE_PUT_TIMEOUT)])
Beispiel #7
0
    def test__worker_process_called_without_cfg(self):
        scenario_cfg = {'runner': {}}
        aborted = multiprocessing.Event()
        aborted.set()
        proxduration._worker_process(mock.Mock(), self.benchmark_cls,
                                     'my_method', scenario_cfg, {}, aborted,
                                     mock.Mock())

        self.benchmark_cls.assert_called_once_with(scenario_cfg, {})
        self.benchmark.setup.assert_called_once()
        self.benchmark.teardown.assert_called_once()
Beispiel #8
0
    def test__worker_process_output_queue(self):
        self.benchmark.my_method = mock.Mock(return_value='my_result')
        self.scenario_cfg["runner"] = {"sampled": True, "duration": 1}
        output_queue = multiprocessing.Queue()
        proxduration._worker_process(mock.Mock(), self.benchmark_cls,
                                     'my_method', self.scenario_cfg, {},
                                     multiprocessing.Event(), output_queue)
        time.sleep(0.1)

        self._assert_defaults__worker_run_setup_and_teardown()
        self.assertEquals(output_queue.get(), 'my_result')
Beispiel #9
0
    def test__worker_process_benchmark_teardown_on_broad_exception(
            self, *args):
        self.benchmark.teardown = mock.Mock(
            side_effect=y_exc.YardstickException)
        self.scenario_cfg["runner"] = {"sampled": True, "duration": 0.1}

        with self.assertRaises(SystemExit) as raised:
            proxduration._worker_process(mock.Mock(), self.benchmark_cls,
                                         'my_method', self.scenario_cfg, {},
                                         multiprocessing.Event(), mock.Mock())
        self.assertEqual(1, raised.exception.code)
        self._assert_defaults__worker_run_setup_and_teardown()
Beispiel #10
0
    def test__worker_process_output_queue_multiple_iterations(self):
        self.scenario_cfg["runner"] = {"sampled": True, "duration": 0.1}
        self.benchmark.my_method = self.MyMethod()
        output_queue = mock.Mock()
        proxduration._worker_process(mock.Mock(), self.benchmark_cls,
                                     'my_method', self.scenario_cfg, {},
                                     multiprocessing.Event(), output_queue)

        self._assert_defaults__worker_run_setup_and_teardown()
        for idx in range(102, 101 + len(output_queue.method_calls)):
            output_queue.put.assert_has_calls(
                [mock.call(idx, True, constants.QUEUE_PUT_TIMEOUT)])
Beispiel #11
0
    def test__worker_process_raise_sla_validation_error_sla_cfg_default(self):
        self.scenario_cfg['sla'] = {}
        self.scenario_cfg["runner"] = {"sampled": True, "duration": 0.1}
        self.benchmark.my_method = mock.Mock(
            side_effect=y_exc.SLAValidationError)
        with self.assertRaises(y_exc.SLAValidationError):
            proxduration._worker_process(mock.Mock(), self.benchmark_cls,
                                         'my_method', self.scenario_cfg, {},
                                         multiprocessing.Event(), mock.Mock())

        self.benchmark_cls.assert_called_once_with(self.scenario_cfg, {})
        self.benchmark.setup.assert_called_once()
        self.benchmark.my_method.assert_called_once_with({})
Beispiel #12
0
    def test__worker_process_queue(self):
        self.benchmark.my_method = self.MyMethod()
        self.scenario_cfg["runner"] = {"sampled": True, "duration": 1}
        queue = multiprocessing.Queue()
        timestamp = time.time()
        proxduration._worker_process(queue, self.benchmark_cls, 'my_method',
                                     self.scenario_cfg, {},
                                     multiprocessing.Event(), mock.Mock())
        time.sleep(0.1)

        self._assert_defaults__worker_run_setup_and_teardown()

        result = queue.get()
        self.assertGreater(result['timestamp'], timestamp)
        self.assertEqual(result['errors'], '')
        self.assertEqual(result['data'], {'my_key': 102})
        self.assertEqual(result['sequence'], 1)
Beispiel #13
0
    def test__worker_process_output_queue_multiple_iterations(self):
        self.scenario_cfg["runner"] = {"sampled": True, "duration": 1}
        self.benchmark.my_method = self.MyMethod()

        output_queue = multiprocessing.Queue()
        proxduration._worker_process(mock.Mock(), self.benchmark_cls,
                                     'my_method', self.scenario_cfg, {},
                                     multiprocessing.Event(), output_queue)
        time.sleep(0.1)

        self._assert_defaults__worker_run_setup_and_teardown()
        self.assertGreater(self.benchmark.my_method.count, 103)

        count = 101
        while not output_queue.empty():
            count += 1
            self.assertEquals(output_queue.get(), count)
Beispiel #14
0
    def test__worker_process_queue_on_broad_exception(self, *args):
        self.benchmark.my_method = self.MyMethod(
            side_effect=self.MyMethod.BROAD_EXCEPTION_SIDE_EFFECT)
        self.scenario_cfg["runner"] = {"sampled": True, "duration": 0.1}
        queue = mock.Mock()
        proxduration._worker_process(queue, self.benchmark_cls, 'my_method',
                                     self.scenario_cfg, {},
                                     multiprocessing.Event(), mock.Mock())

        benchmark_output = {
            'timestamp': mock.ANY,
            'sequence': 1,
            'data': {
                'my_key': 102
            },
            'errors': mock.ANY
        }
        queue.put.assert_has_calls(
            [mock.call(benchmark_output, True, constants.QUEUE_PUT_TIMEOUT)])
Beispiel #15
0
    def test__worker_process_queue(self):
        self.benchmark.my_method = self.MyMethod()
        self.scenario_cfg["runner"] = {"sampled": True, "duration": 0.1}
        queue = mock.Mock()
        proxduration._worker_process(queue, self.benchmark_cls, 'my_method',
                                     self.scenario_cfg, {},
                                     multiprocessing.Event(), mock.Mock())

        self._assert_defaults__worker_run_setup_and_teardown()
        benchmark_output = {
            'timestamp': mock.ANY,
            'sequence': 1,
            'data': {
                'my_key': 102
            },
            'errors': ''
        }
        queue.put.assert_has_calls(
            [mock.call(benchmark_output, True, constants.QUEUE_PUT_TIMEOUT)])
Beispiel #16
0
    def test__worker_process_queue_on_sla_validation_error_monitor(self):
        self.scenario_cfg['sla'] = {'action': 'monitor'}
        self.scenario_cfg["runner"] = {"sampled": True, "duration": 1}
        self.benchmark.my_method = self.MyMethod(
            side_effect=self.MyMethod.SLA_VALIDATION_ERROR_SIDE_EFFECT)

        queue = multiprocessing.Queue()
        timestamp = time.time()
        proxduration._worker_process(queue, self.benchmark_cls, 'my_method',
                                     self.scenario_cfg, {},
                                     multiprocessing.Event(), mock.Mock())
        time.sleep(0.1)

        self._assert_defaults__worker_run_setup_and_teardown()

        result = queue.get()
        self.assertGreater(result['timestamp'], timestamp)
        self.assertEqual(result['errors'], ('My Case SLA validation failed. '
                                            'Error: my error message', ))
        self.assertEqual(result['data'], {'my_key': 102})
        self.assertEqual(result['sequence'], 1)