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_KILLED }] tu.assert_statuses(self, expected_statuses, driver.statuses) expected_message_0 = { 'sandbox-directory': sandbox_directory, 'task-id': task_id, 'type': 'directory' } expected_message_1 = {'exit-code': -15, 'task-id': task_id} tu.assert_messages(self, [expected_message_0, expected_message_1], [], driver.messages)
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': 'line count is 20', 'progress-percent': 90, 'progress-sequence': 1, 'task-id': task_id }] tu.assert_messages(self, expected_core_messages, expected_progress_messages, driver.messages)
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': 'Fifty percent in progress file', 'progress-percent': 50, 'progress-sequence': 1, 'task-id': task_id }, { 'progress-message': 'Fifty-five percent in stdout', 'progress-percent': 55, 'progress-sequence': 2, 'task-id': task_id }, { 'progress-message': 'Sixty percent in stderr', 'progress-percent': 60, 'progress-sequence': 3, 'task-id': task_id }, { 'progress-message': 'Sixty-five percent in stdout wit...', 'progress-percent': 65, 'progress-sequence': 4, 'task-id': task_id }] tu.assert_messages(self, expected_core_messages, expected_progress_messages, driver.messages)
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_message_0 = { 'sandbox-directory': sandbox_directory, 'task-id': task_id, 'type': 'directory' } expected_message_1 = {'exit-code': 0, 'task-id': task_id} tu.assert_messages(self, [expected_message_0, expected_message_1], [], driver.messages) stdout_name = tu.ensure_directory('build/stdout.' + str(task_id)) if os.path.isfile(stdout_name): with open(stdout_name) as f: file_contents = f.read() self.assertEqual(num_iterations * 25, file_contents.count('X')) else: self.fail('{} does not exist.'.format(stdout_name)) 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 assertions(driver, task_id, sandbox_directory): expected_statuses = [{ 'task_id': { 'value': task_id }, 'state': cook.TASK_STARTING }, { 'task_id': { 'value': task_id }, 'reason': cook.REASON_TASK_INVALID, 'state': cook.TASK_ERROR }] tu.assert_statuses(self, expected_statuses, driver.statuses) expected_message_0 = { 'sandbox-directory': sandbox_directory, 'task-id': task_id, 'type': 'directory' } tu.assert_messages(self, [expected_message_0], [], driver.messages)
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': '', 'progress-percent': 50, 'progress-sequence': 1, 'task-id': task_id }] tu.assert_messages(self, expected_core_messages, expected_progress_messages, driver.messages) stdout_name = tu.ensure_directory('build/stdout.' + str(task_id)) if not os.path.isfile(stdout_name): self.fail('{} does not exist.'.format(stdout_name))
def assertions(driver, task_id, _): 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_message_0 = { 'sandbox-directory': '/location/to/task/sandbox/{}'.format(task_id), 'task-id': task_id, 'type': 'directory' } expected_message_1 = {'exit-code': 0, 'task-id': task_id} tu.assert_messages(self, [expected_message_0, expected_message_1], [], driver.messages) stdout_name = tu.ensure_directory( 'build/stdout.{}'.format(task_id)) with open(stdout_name) as f: file_contents = f.read() self.assertTrue('FEE=FIE' in file_contents) self.assertTrue('FOO=BAR' in file_contents) self.assertTrue('PROGRESS_OUTPUT_FILE=foobar' in file_contents)
def test_executor_launch_task_and_disconnect(self): task_id = tu.get_random_task_id() stdout_name = tu.ensure_directory('build/stdout.{}'.format(task_id)) stderr_name = tu.ensure_directory('build/stderr.{}'.format(task_id)) output_name = tu.ensure_directory('build/output.' + str(task_id)) tu.redirect_stdout_to_file(stdout_name) tu.redirect_stderr_to_file(stderr_name) try: config = cc.ExecutorConfig() stop_signal = Event() executor = ce.CookExecutor(stop_signal, config) driver = tu.FakeMesosExecutorDriver() command = 'echo "Start" >> {}; sleep 100; echo "Done." >> {}; '.format( output_name, output_name) task = { 'task_id': { 'value': task_id }, 'data': pm.encode_data( json.dumps({ 'command': command }).encode('utf8')) } executor.launchTask(driver, task) # let the process run for up to 10 seconds for _ in range(1000): time.sleep(0.01) if os.path.isfile(output_name): with open(output_name) as f: content = f.read() if 'Start' in content: break executor.disconnected(driver) self.assertTrue(executor.disconnect_signal.isSet()) self.assertTrue(executor.stop_signal.isSet()) executor.await_completion() logging.info('Task completed') if os.path.isfile(output_name): with open(output_name) as f: file_contents = f.read() self.assertTrue('Start' in file_contents) self.assertTrue('Done' not in file_contents) else: self.fail('{} does not exist.'.format(stderr_name)) 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_KILLED }] tu.assert_statuses(self, expected_statuses, driver.statuses) expected_message_0 = { 'sandbox-directory': '', 'task-id': task_id, 'type': 'directory' } expected_message_1 = {'exit-code': -15, 'task-id': task_id} tu.assert_messages(self, [expected_message_0, expected_message_1], [], driver.messages) finally: tu.cleanup_output(stdout_name, stderr_name) tu.cleanup_file(output_name)