Exemple #1
0
    def test_manage_task_successful_exit_despite_faulty_driver(self):
        def assertions(driver, task_id, sandbox_directory):
            expected_statuses = [{
                'task_id': {
                    'value': task_id
                },
                'state': cook.TASK_STARTING
            }, {
                'task_id': {
                    'value': task_id
                },
                'state': cook.TASK_RUNNING
            }, {
                'task_id': {
                    'value': task_id
                },
                'state': cook.TASK_FINISHED
            }]
            tu.assert_statuses(self, expected_statuses, driver.statuses)

            expected_core_messages = [{
                'sandbox-directory': sandbox_directory,
                'task-id': task_id,
                'type': 'directory'
            }, {
                'exit-code': 0,
                'task-id': task_id
            }]
            expected_progress_messages = [
                {
                    'progress-message': 'ninety percent',
                    'progress-percent': 90,
                    'progress-sequence': 1,
                    'task-id': task_id
                },
                # retried because the previous send fails
                {
                    'progress-message': 'ninety percent',
                    'progress-percent': 90,
                    'progress-sequence': 1,
                    'task-id': task_id
                }
            ]
            tu.assert_messages(self, expected_core_messages,
                               expected_progress_messages, driver.messages)

        test_file_name = tu.ensure_directory('build/file.' +
                                             tu.get_random_task_id())
        command = ('echo "^^^^JOB-PROGRESS: 90 ninety percent"'.format(
            test_file_name))
        socket_error = OSError(
            'socket.error')  # socket.error is an alias of OSError
        self.manage_task_runner(
            command,
            assertions,
            driver=tu.ErrorMesosExecutorDriver(socket_error))
Exemple #2
0
    def test_send_message_handles_generic_exception(self):
        exception_handler_calls = []
        exception_handler = functools.partial(tu.store_exception_handler,
                                              exception_handler_calls)
        exception = Exception('Generic Exception')
        driver = tu.ErrorMesosExecutorDriver(exception)
        task_id = tu.get_random_task_id()
        message = {'task-id': task_id, 'message': 'test-message'}

        result = ce.send_message(driver, exception_handler, message)

        self.assertEqual([], exception_handler_calls)
        self.assertFalse(result)
        self.assertEqual(1, len(driver.messages))
Exemple #3
0
    def test_send_message_handles_os_error_non_memory(self):
        exception_handler_calls = []
        exception_handler = functools.partial(tu.store_exception_handler,
                                              exception_handler_calls)
        exception = OSError(errno.EACCES, 'Permission denied')
        driver = tu.ErrorMesosExecutorDriver(exception)
        task_id = tu.get_random_task_id()
        message = {'task-id': task_id, 'message': 'test-message'}

        result = ce.send_message(driver, exception_handler, message)

        self.assertEqual([], exception_handler_calls)
        self.assertFalse(result)
        self.assertEqual(1, len(driver.messages))