def test_child_does_not_influence_parent(self): task = Task().read_dict(self.task_d) new_tag = 'child_task' parent_task_data = deepcopy(task.data) child_task = task.create_child(new_tag) # change input of `child_task` child_task.data['out'] = 'bar' # this should not change output of parent task self.assertEqual(task.data, parent_task_data)
def test_create_child(self): task = Task().read_dict(self.task_d) new_tag = 'child_task' child_task = task.create_child(new_tag) self.assertEqual(child_task.t_id, task.t_id) self.assertEqual(child_task.user_id, task.user_id) self.assertEqual(child_task.tag, new_tag) self.assertEqual(child_task.timestamp, task.timestamp) self.assertNotEqual(child_task.update_timestamp, task.update_timestamp) self.assertGreaterEqual(child_task.update_timestamp, task.timestamp)
class TestTask(unittest.TestCase): def setUp(self): self.task = Task(tag='tag', error="an error") self.task_d = { "t_id": 1, "tag": "spm_lesion", "timestamp": 1530368396, "data": { "dicom_info": { "t1": { "path": "path", "header": { "PatientName": "Max" } } } } } def test_to_dict(self): d = self.task.to_dict() self.assertIn('tag', d) self.assertEqual(d['tag'], 'tag') self.assertEqual(d['error'], 'an error') def test_from_and_to_bytes(self): bytes_ = self.task.to_bytes() task_from_bytes = Task().read_bytes(bytes_) self.assertEqual(task_from_bytes.__dict__, self.task.__dict__) def test_read_dict(self): task = Task().read_dict(self.task_d) self.assertEqual(task.data['dicom_info']['t1']['path'], "path") def test_create_child(self): task = Task().read_dict(self.task_d) new_tag = 'child_task' child_task = task.create_child(new_tag) self.assertEqual(child_task.t_id, task.t_id) self.assertEqual(child_task.user_id, task.user_id) self.assertEqual(child_task.tag, new_tag) self.assertEqual(child_task.timestamp, task.timestamp) self.assertNotEqual(child_task.update_timestamp, task.update_timestamp) self.assertGreaterEqual(child_task.update_timestamp, task.timestamp) def test_child_does_not_influence_parent(self): task = Task().read_dict(self.task_d) new_tag = 'child_task' parent_task_data = deepcopy(task.data) child_task = task.create_child(new_tag) # change input of `child_task` child_task.data['out'] = 'bar' # this should not change output of parent task self.assertEqual(task.data, parent_task_data)
def test_log_runtime(self, mock_time): mock_time.return_value = 10 @base_logging_conf.log_task_runtime def process_task(task): pass task = Task(t_id=1, tag='stage_1', data={}) process_task(task) task.tag = 'stage_2' process_task(task) self.assertEqual([['stage_1', 0], ['stage_2', 0]], task.data['runtime'])
def setUp(self): self.task = Task(tag='tag', error="an error") self.task_d = { "t_id": 1, "tag": "spm_lesion", "timestamp": 1530368396, "data": { "dicom_info": { "t1": { "path": "path", "header": { "PatientName": "Max" } } } } }
def __init__(self): super().__init__("", None) self.serialized_task = Task(t_id=1, tag='tag', data={ 't1': 'foo', 't2': 'bar', 'out': 'foo' }).to_bytes() self.completed = False self.error_msg = None
def test_daemon_processing_error_with_t_id(self): self.foo_daemon = FooFailingDaemon(self.input_queue, self.result_queue, 60 * 30, 'foo', {'data_dir': self.data_dir}) self.transaction_failed = False self.foo_daemon.run_once() self.assertFalse(self.input_queue.completed) self.assertFalse(self.input_queue.error_msg) self.assertTrue( self.result_queue.put_item and Task().read_bytes(self.result_queue.put_item).error)
def wrapper(task: Task, *args, **kwargs): if not isinstance(task, Task): raise TypeError("First arguement of the decorated" "function must be a task object!") start_time = time.time() result = f(task, *args, **kwargs) end_time = time.time() runtime = round(end_time - start_time, 4) logger_transaction = logger_for_transaction('runtime_logger', task.t_id) logger_transaction.info("Finished in {} seconds.".format(runtime)) if task.data.get('runtime', []): task.data['runtime'].append([task.tag, runtime]) else: task.data['runtime'] = [[task.tag, runtime]] return result
def test_read_dict(self): task = Task().read_dict(self.task_d) self.assertEqual(task.data['dicom_info']['t1']['path'], "path")
def test_from_and_to_bytes(self): bytes_ = self.task.to_bytes() task_from_bytes = Task().read_bytes(bytes_) self.assertEqual(task_from_bytes.__dict__, self.task.__dict__)