Пример #1
0
 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)
Пример #2
0
 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)
Пример #3
0
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)
Пример #4
0
    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'])
Пример #5
0
    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"
                        }
                    }
                }
            }
        }
Пример #6
0
 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
Пример #7
0
    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)
Пример #8
0
    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
Пример #9
0
 def test_read_dict(self):
     task = Task().read_dict(self.task_d)
     self.assertEqual(task.data['dicom_info']['t1']['path'], "path")
Пример #10
0
 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__)