Esempio n. 1
0
        def assertions(driver, task_id, sandbox_directory):

            logging.info('Statuses: {}'.format(driver.statuses))
            self.assertEqual(2, len(driver.statuses))

            actual_status_0 = driver.statuses[0]
            expected_status_0 = {
                'task_id': {
                    'value': task_id
                },
                'state': cook.TASK_STARTING
            }
            assert_status(self, expected_status_0, actual_status_0)

            actual_status_1 = driver.statuses[1]
            expected_status_1 = {
                'task_id': {
                    'value': task_id
                },
                'state': cook.TASK_ERROR
            }
            assert_status(self, expected_status_1, actual_status_1)

            logging.info('Messages: {}'.format(driver.messages))
            self.assertEqual(1, len(driver.messages))

            actual_encoded_message_0 = driver.messages[0]
            expected_message_0 = {
                'sandbox-directory': sandbox_directory,
                'task-id': task_id
            }
            assert_message(self, expected_message_0, actual_encoded_message_0)
Esempio n. 2
0
        def assertions(driver, task_id, sandbox_location):

            logging.info('Statuses: {}'.format(driver.statuses))
            self.assertEqual(3, len(driver.statuses))

            actual_status_0 = driver.statuses[0]
            expected_status_0 = {'task_id': {'value': task_id}, 'state': cook.TASK_STARTING}
            assert_status(self, expected_status_0, actual_status_0)

            actual_status_1 = driver.statuses[1]
            expected_status_1 = {'task_id': {'value': task_id}, 'state': cook.TASK_RUNNING}
            assert_status(self, expected_status_1, actual_status_1)

            actual_status_2 = driver.statuses[2]
            expected_status_2 = {'task_id': {'value': task_id}, 'state': cook.TASK_KILLED}
            assert_status(self, expected_status_2, actual_status_2)

            logging.info('Messages: {}'.format(driver.messages))
            self.assertEqual(2, len(driver.messages))

            actual_encoded_message_0 = driver.messages[0]
            expected_message_0 = {'sandbox-location': sandbox_location, 'task-id': task_id}
            assert_message(self, expected_message_0, actual_encoded_message_0)

            actual_encoded_message_1 = driver.messages[1]
            expected_message_1 = {'exit-code': -15, 'task-id': task_id}
            assert_message(self, expected_message_1, actual_encoded_message_1)
Esempio n. 3
0
    def test_send_progress_does_not_trim_unknown_field(self):
        driver = tu.FakeMesosExecutorDriver()
        task_id = tu.get_random_task_id()
        max_message_length = 30
        poll_interval_ms = 10

        send_progress_message = self.send_progress_message_helper(
            driver, max_message_length)
        progress_updater = cp.ProgressUpdater(task_id, max_message_length,
                                              poll_interval_ms,
                                              send_progress_message)
        progress_data_0 = {
            'progress-message':
            b' pm',
            'progress-sequence':
            1,
            'unknown':
            'Unknown field has a really long lorem ipsum dolor sit amet exceed limit text'
        }
        progress_updater.send_progress_update(progress_data_0)

        self.assertEqual(1, len(driver.messages))
        actual_encoded_message_0 = driver.messages[0]
        expected_message_0 = {
            'progress-message':
            'pm',
            'progress-sequence':
            1,
            'task-id':
            task_id,
            'unknown':
            'Unknown field has a really long lorem ipsum dolor sit amet exceed limit text'
        }
        tu.assert_message(self, expected_message_0, actual_encoded_message_0)
Esempio n. 4
0
    def test_send_progress_update_trims_progress_message(self):
        driver = tu.FakeMesosExecutorDriver()
        task_id = tu.get_random_task_id()
        max_message_length = 30
        poll_interval_ms = 10

        send_progress_message = self.send_progress_message_helper(
            driver, max_message_length)
        progress_updater = cp.ProgressUpdater(task_id, max_message_length,
                                              poll_interval_ms,
                                              send_progress_message)
        progress_data_0 = {
            'progress-message':
            b' Progress message-0 is really long lorem ipsum dolor sit amet text',
            'progress-sequence': 1
        }
        progress_updater.send_progress_update(progress_data_0)

        self.assertEqual(1, len(driver.messages))
        actual_encoded_message_0 = driver.messages[0]
        expected_message_0 = {
            'progress-message': 'Progress message-0 is reall...',
            'progress-sequence': 1,
            'task-id': task_id
        }
        tu.assert_message(self, expected_message_0, actual_encoded_message_0)
Esempio n. 5
0
    def test_send_message(self):
        driver = tu.FakeMesosExecutorDriver()
        task_id = tu.get_random_task_id()
        expected_message = {'task-id': task_id, 'message': 'test-message'}

        result = ce.send_message(driver, tu.fake_os_error_handler,
                                 expected_message)

        self.assertTrue(result)
        self.assertEqual(1, len(driver.messages))
        actual_encoded_message = driver.messages[0]
        tu.assert_message(self, expected_message, actual_encoded_message)
Esempio n. 6
0
        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)

            logging.info('Messages: {}'.format(driver.messages))
            self.assertLess(2, len(driver.messages))

            actual_encoded_message_0 = driver.messages[0]
            expected_message_0 = {
                'sandbox-directory': sandbox_directory,
                'task-id': task_id,
                'type': 'directory'
            }
            tu.assert_message(self, expected_message_0,
                              actual_encoded_message_0)

            found_exit_message = False
            for index in range(1, len(driver.messages)):
                actual_encoded_message = driver.messages[index]
                actual_message = tu.parse_message(actual_encoded_message)
                if 'exit-code' in actual_message:
                    found_exit_message = True
                    expected_message = {'exit-code': 0, 'task-id': task_id}
                    tu.assert_message(self, expected_message,
                                      actual_encoded_message)
                    break
            self.assertTrue(found_exit_message)

            stderr_name = tu.ensure_directory('build/stderr.' + str(task_id))
            if os.path.isfile(stderr_name):
                with open(stderr_name) as f:
                    file_contents = f.read()
                    self.assertEqual(num_iterations * 25,
                                     file_contents.count('X'))
            else:
                self.fail('{} does not exist.'.format(stderr_name))
Esempio n. 7
0
    def test_send_message(self):
        driver = FakeMesosExecutorDriver()
        task_id = get_random_task_id()
        expected_message = {'task-id': task_id, 'message': 'test-message'}
        message = json.dumps(expected_message)
        max_message_length = 512

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

        self.assertTrue(result)
        self.assertEqual(1, len(driver.messages))
        actual_encoded_message = driver.messages[0]
        assert_message(self, expected_message, actual_encoded_message)
Esempio n. 8
0
        def assertions(driver, task_id, sandbox_location):
            
            logging.info('Statuses: {}'.format(driver.statuses))
            self.assertEqual(3, len(driver.statuses))

            actual_status_0 = driver.statuses[0]
            expected_status_0 = {'task_id': {'value': task_id}, 'state': cook.TASK_STARTING}
            assert_status(self, expected_status_0, actual_status_0)

            actual_status_1 = driver.statuses[1]
            expected_status_1 = {'task_id': {'value': task_id}, 'state': cook.TASK_RUNNING}
            assert_status(self, expected_status_1, actual_status_1)

            actual_status_2 = driver.statuses[2]
            expected_status_2 = {'task_id': {'value': task_id}, 'state': cook.TASK_FINISHED}
            assert_status(self, expected_status_2, actual_status_2)

            logging.info('Messages: {}'.format(driver.messages))
            self.assertEqual(4, len(driver.messages))

            actual_encoded_message_0 = driver.messages[0]
            expected_message_0 = {'sandbox-location': sandbox_location, 'task-id': task_id}
            assert_message(self, expected_message_0, actual_encoded_message_0)

            actual_encoded_message_1 = driver.messages[1]
            expected_message_1 = {'progress-message': 'Fifty percent', 'progress-percent': 50, 'task-id': task_id}
            assert_message(self, expected_message_1, actual_encoded_message_1)

            actual_encoded_message_2 = driver.messages[2]
            expected_message_2 = {'progress-message': 'Fifty-five percent', 'progress-percent': 55, 'task-id': task_id}
            assert_message(self, expected_message_2, actual_encoded_message_2)

            actual_encoded_message_3 = driver.messages[3]
            expected_message_3 = {'exit-code': 0, 'task-id': task_id}
            assert_message(self, expected_message_3, actual_encoded_message_3)
Esempio n. 9
0
    def test_send_progress_update(self):
        driver = tu.FakeMesosExecutorDriver()
        task_id = tu.get_random_task_id()
        max_message_length = 30
        poll_interval_ms = 100

        send_progress_message = self.send_progress_message_helper(
            driver, max_message_length)
        progress_updater = cp.ProgressUpdater(task_id, max_message_length,
                                              poll_interval_ms,
                                              send_progress_message)
        progress_data_0 = {
            'progress-message': b' Progress message-0',
            'progress-sequence': 1
        }
        progress_updater.send_progress_update(progress_data_0)

        self.assertEqual(1, len(driver.messages))
        actual_encoded_message_0 = driver.messages[0]
        expected_message_0 = {
            'progress-message': 'Progress message-0',
            'progress-sequence': 1,
            'task-id': task_id
        }
        tu.assert_message(self, expected_message_0, actual_encoded_message_0)

        progress_data_1 = {
            'progress-message': b' Progress message-1',
            'progress-sequence': 2
        }
        progress_updater.send_progress_update(progress_data_1)

        self.assertEqual(1, len(driver.messages))

        time.sleep(poll_interval_ms / 1000.0)
        progress_data_2 = {
            'progress-message': b' Progress message-2',
            'progress-sequence': 3
        }
        progress_updater.send_progress_update(progress_data_2)

        self.assertEqual(2, len(driver.messages))
        actual_encoded_message_2 = driver.messages[1]
        expected_message_2 = {
            'progress-message': 'Progress message-2',
            'progress-sequence': 3,
            'task-id': task_id
        }
        tu.assert_message(self, expected_message_2, actual_encoded_message_2)
Esempio n. 10
0
    def test_send_progress_update(self):
        driver = FakeMesosExecutorDriver()
        task_id = get_random_task_id()
        max_message_length = 100
        poll_interval_ms = 100

        progress_updater = cp.ProgressUpdater(driver, task_id,
                                              max_message_length,
                                              poll_interval_ms,
                                              ce.send_message)
        progress_data_0 = {'progress-message': 'Progress message-0'}
        progress_updater.send_progress_update(progress_data_0)

        self.assertEqual(1, len(driver.messages))
        actual_encoded_message_0 = driver.messages[0]
        expected_message_0 = {
            'progress-message': 'Progress message-0',
            'task-id': task_id
        }
        assert_message(self, expected_message_0, actual_encoded_message_0)

        progress_data_1 = {'progress-message': 'Progress message-1'}
        progress_updater.send_progress_update(progress_data_1)

        self.assertEqual(1, len(driver.messages))

        time.sleep(poll_interval_ms / 1000.0)
        progress_data_2 = {'progress-message': 'Progress message-2'}
        progress_updater.send_progress_update(progress_data_2)

        self.assertEqual(2, len(driver.messages))
        actual_encoded_message_2 = driver.messages[1]
        expected_message_2 = {
            'progress-message': 'Progress message-2',
            'task-id': task_id
        }
        assert_message(self, expected_message_2, actual_encoded_message_2)
Esempio n. 11
0
    def test_send_progress_update_trims_progress_message(self):
        driver = FakeMesosExecutorDriver()
        task_id = get_random_task_id()
        max_message_length = 100
        poll_interval_ms = 10

        progress_updater = cp.ProgressUpdater(driver, task_id,
                                              max_message_length,
                                              poll_interval_ms,
                                              ce.send_message)
        progress_data_0 = {
            'progress-message':
            'Progress message-0 is really long lorem ipsum dolor sit amet text'
        }
        progress_updater.send_progress_update(progress_data_0)

        self.assertEqual(1, len(driver.messages))
        actual_encoded_message_0 = driver.messages[0]
        expected_message_0 = {
            'progress-message':
            'Progress message-0 is really long lorem ipsum dolor...',
            'task-id': task_id
        }
        assert_message(self, expected_message_0, actual_encoded_message_0)
Esempio n. 12
0
        def assertions(driver, task_id, sandbox_directory):

            logging.info('Statuses: {}'.format(driver.statuses))
            self.assertEqual(3, len(driver.statuses))

            actual_status_0 = driver.statuses[0]
            expected_status_0 = {
                'task_id': {
                    'value': task_id
                },
                'state': cook.TASK_STARTING
            }
            assert_status(self, expected_status_0, actual_status_0)

            actual_status_1 = driver.statuses[1]
            expected_status_1 = {
                'task_id': {
                    'value': task_id
                },
                'state': cook.TASK_RUNNING
            }
            assert_status(self, expected_status_1, actual_status_1)

            actual_status_2 = driver.statuses[2]
            expected_status_2 = {
                'task_id': {
                    'value': task_id
                },
                'state': cook.TASK_FINISHED
            }
            assert_status(self, expected_status_2, actual_status_2)

            logging.info('Messages: {}'.format(driver.messages))
            self.assertEqual(3, len(driver.messages))

            actual_encoded_message_0 = driver.messages[0]
            expected_message_0 = {
                'sandbox-directory': sandbox_directory,
                'task-id': task_id
            }
            assert_message(self, expected_message_0, actual_encoded_message_0)

            actual_encoded_message_1 = driver.messages[1]
            expected_message_1 = {
                'progress-message': 'line count is 20',
                'progress-percent': 90,
                'task-id': task_id
            }
            assert_message(self, expected_message_1, actual_encoded_message_1)

            actual_encoded_message_2 = driver.messages[2]
            expected_message_2 = {'exit-code': 0, 'task-id': task_id}
            assert_message(self, expected_message_2, actual_encoded_message_2)