def create_transfer(started, finished, vm): return TransferLog(started=started, finished=finished, vm=vm, id='123', job_id='before_1', direction='UPLOAD', file_id='transferred.txt')
def test_should_fail_if_download_instead_of_upload(self): dag = self._prepare_file_transfer_dag() dag.id = '1' tasks = [ TaskLog(id='before_1', workflow='1', task_id='before', started=0.0, finished=10.0, vm=1, result='OK'), TaskLog(id='after_1', workflow='1', task_id='after', started=13.0, finished=18.0, vm=1, result='OK')] transfers = [ TransferLog(id='123', job_id='before_1', vm=1, started=10.0, finished=12.0, direction='DOWNLOAD', file_id='transferred.txt'), TransferLog(id='234', job_id='after_1', vm=1, started=12.0, finished=13.0, direction='DOWNLOAD', file_id='transferred.txt')] result = order_validator.validate_transfers(dag, tasks, transfers) self.assertFalse(result.is_valid)
def test_should_pass_if_transfers_are_ok(self): dag = self._prepare_file_transfer_dag() dag.id = '1' tasks = [ TaskLog(id='before_1', workflow='1', task_id='before', started=0.0, finished=10.0, vm=1, result='OK'), TaskLog(id='after_1', workflow='1', task_id='after', started=13.0, finished=18.0, vm=1, result='OK')] transfers = [ TransferLog(id='123', job_id='before_1', vm=1, started=10.0, finished=12.0, direction='UPLOAD', file_id='transferred.txt'), TransferLog(id='234', job_id='after_1', vm=1, started=12.0, finished=13.0, direction='DOWNLOAD', file_id='transferred.txt')] result = order_validator.validate_transfers(dag, tasks, transfers) self.assertTrue(result.is_valid) self.assertListEqual([], result.errors)
def read_log(file_content): lines = file_content.splitlines() current_line = 0 deadline, budget, vm_cost_per_hour = map(float, lines[current_line].split()) current_line += 1 settings = ExperimentSettings(deadline, budget, vm_cost_per_hour) vm_number = int(lines[current_line]) current_line += 1 vms = {} for i in xrange(0, vm_number): vm_info = lines[current_line].split() vm = VMLog(id=vm_info[0], started=float_or_none(vm_info[1]), finished=float_or_none(vm_info[2])) vms[vm.id] = vm current_line += 1 workflows_number = int(lines[current_line]) current_line += 1 workflows = {} for i in xrange(0, workflows_number): workflow_info = lines[current_line].split() workflow = Workflow(id=workflow_info[0], priority=int(workflow_info[1]), filename=workflow_info[2]) workflows[workflow.id] = workflow current_line += 1 tasks_number = int(lines[current_line]) current_line += 1 tasks = [] for i in xrange(0, tasks_number): task_info = lines[current_line].split() task = TaskLog(id=task_info[0], workflow=task_info[1], task_id=task_info[2], vm=task_info[3], started=float_or_none(task_info[4]), finished=float_or_none(task_info[5]), result=task_info[6]) tasks.append(task) current_line += 1 transfers_number = int(lines[current_line]) current_line += 1 transfers = [] for i in xrange(0, transfers_number): transfer_info = lines[current_line].split() transfer = TransferLog(id=transfer_info[0], vm=transfer_info[1], started=float_or_none(transfer_info[2]), finished=float_or_none(transfer_info[3]), direction=transfer_info[4], job_id=transfer_info[5], file_id=transfer_info[6]) transfers.append(transfer) current_line += 1 execution_log = ExecutionLog() execution_log.settings = settings for task in tasks: execution_log.add_event(EventType.TASK, task) for transfer in transfers: execution_log.add_event(EventType.TRANSFER, transfer) for vm in vms.values(): execution_log.add_event(EventType.VM, vm) for workflow in workflows.values(): execution_log.add_workflow(workflow) return execution_log