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)
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)
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)
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)
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)
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))
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)
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)
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)
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)
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)
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)