예제 #1
0
 def test_ready(self):
     task = Task(uuid="abcdefg",
                 name="tasks.add")
     task.on_received(timestamp=time())
     self.assertFalse(task.ready)
     task.on_succeeded(timestamp=time())
     self.assertTrue(task.ready)
예제 #2
0
파일: test_state.py 프로젝트: aidan/celery
 def test_ready(self):
     task = Task(uuid='abcdefg',
                 name='tasks.add')
     task.event('received', time(), time())
     self.assertFalse(task.ready)
     task.event('succeeded', time(), time())
     self.assertTrue(task.ready)
예제 #3
0
def test_listener_set_task_event(task_state_type, bool1, listener):
    with mock.patch.object(listener, '_derive_task_result') as mock_dtr:
        mock_dtr.return_value = 1, 2
        listener.memory.tasks.get.return_value = Task(
            'uuid', state='pre_state') if bool1 else None
        task = Task('uuid', state=task_state_type)
        listener.memory.event.return_value = (task, ''), ''

        # noinspection PyProtectedMember
        gen = listener._set_task_event(dict(uuid='uuid'))
        assert task == next(gen)

    listener.memory.event.assert_called_once_with(dict(uuid='uuid'))
    if task_state_type == SUCCESS:
        mock_dtr.assert_called_once_with(task)

    with mock.patch.object(listener, 'gen_task_states') as ts_through:
        ts_through.states_through.return_value = (x for x in 'abc')

        states = list(gen)
        if not bool1:
            if task_state_type == PENDING:
                assert states == ['']
            else:
                assert states == [task_state_type]
        else:
            ts_through.states_through.assert_called_once_with(
                'pre_state', task_state_type)
            assert states == ['a', 'b', 'c']
예제 #4
0
    def test_info(self):
        task = Task(
            uuid="abcdefg",
            name="tasks.add",
            args="(2, 2)",
            kwargs="{}",
            retries=2,
            result=42,
            eta=1,
            runtime=0.0001,
            expires=1,
            foo=None,
            exception=1,
            received=time() - 10,
            started=time() - 8,
            exchange="celery",
            routing_key="celery",
            succeeded=time(),
        )
        self.assertEqual(sorted(list(task._info_fields)), sorted(task.info().keys()))

        self.assertEqual(sorted(list(task._info_fields + ("received",))), sorted(task.info(extra=("received",))))

        self.assertEqual(sorted(["args", "kwargs"]), sorted(task.info(["args", "kwargs"]).keys()))
        self.assertFalse(list(task.info("foo")))
예제 #5
0
    def test_info(self):
        task = Task(uuid='abcdefg',
                    name='tasks.add',
                    args='(2, 2)',
                    kwargs='{}',
                    retries=2,
                    result=42,
                    eta=1,
                    runtime=0.0001,
                    expires=1,
                    parent_id='bdefc',
                    root_id='dedfef',
                    foo=None,
                    exception=1,
                    received=time() - 10,
                    started=time() - 8,
                    exchange='celery',
                    routing_key='celery',
                    succeeded=time())
        assert sorted(list(task._info_fields)) == sorted(task.info().keys())

        assert (sorted(list(task._info_fields + ('received',))) ==
                sorted(task.info(extra=('received',))))

        assert (sorted(['args', 'kwargs']) ==
                sorted(task.info(['args', 'kwargs']).keys()))
        assert not list(task.info('foo'))
예제 #6
0
 def test_ready(self):
     task = Task(uuid='abcdefg',
                 name='tasks.add')
     task.event('received', time(), time())
     assert not task.ready
     task.event('succeeded', time(), time())
     assert task.ready
예제 #7
0
 def test_merge(self):
     task = Task()
     task.on_failed(timestamp=time())
     task.on_started(timestamp=time())
     task.on_received(timestamp=time(), name="tasks.add", args=(2, 2))
     self.assertEqual(task.state, states.FAILURE)
     self.assertEqual(task.name, "tasks.add")
     self.assertTupleEqual(task.args, (2, 2))
     task.on_retried(timestamp=time())
     self.assertEqual(task.state, states.RETRY)
예제 #8
0
 def test_merge(self):
     task = Task()
     task.event('failed', time(), time())
     task.event('started', time(), time())
     task.event('received', time(), time(), {
         'name': 'tasks.add', 'args': (2, 2),
     })
     assert task.state == states.FAILURE
     assert task.name == 'tasks.add'
     assert task.args == (2, 2)
     task.event('retried', time(), time())
     assert task.state == states.RETRY
예제 #9
0
 def test_merge(self):
     task = Task()
     task.event('failed', time(), time())
     task.event('started', time(), time())
     task.event('received', time(), time(), {
         'name': 'tasks.add', 'args': (2, 2),
     })
     self.assertEqual(task.state, states.FAILURE)
     self.assertEqual(task.name, 'tasks.add')
     self.assertTupleEqual(task.args, (2, 2))
     task.event('retried', time(), time())
     self.assertEqual(task.state, states.RETRY)
예제 #10
0
 def test_merge(self):
     task = Task()
     task.on_failed(timestamp=time())
     task.on_started(timestamp=time())
     task.on_received(timestamp=time(), name='tasks.add', args=(2, 2))
     self.assertEqual(task.state, states.FAILURE)
     self.assertEqual(task.name, 'tasks.add')
     self.assertTupleEqual(task.args, (2, 2))
     task.on_retried(timestamp=time())
     self.assertEqual(task.state, states.RETRY)
예제 #11
0
 def test_merge(self):
     task = Task()
     task.event("failed", time(), time())
     task.event("started", time(), time())
     task.event("received", time(), time(), {"name": "tasks.add", "args": (2, 2)})
     self.assertEqual(task.state, states.FAILURE)
     self.assertEqual(task.name, "tasks.add")
     self.assertTupleEqual(task.args, (2, 2))
     task.event("retried", time(), time())
     self.assertEqual(task.state, states.RETRY)
예제 #12
0
파일: test_state.py 프로젝트: aidan/celery
 def test_merge(self):
     task = Task()
     task.event('failed', time(), time())
     task.event('started', time(), time())
     task.event('received', time(), time(), {
         'name': 'tasks.add', 'args': (2, 2),
     })
     self.assertEqual(task.state, states.FAILURE)
     self.assertEqual(task.name, 'tasks.add')
     self.assertTupleEqual(task.args, (2, 2))
     task.event('retried', time(), time())
     self.assertEqual(task.state, states.RETRY)
예제 #13
0
 def test_merge(self):
     task = Task()
     task.event('failed', time(), time())
     task.event('started', time(), time())
     task.event('received', time(), time(), {
         'name': 'tasks.add', 'args': (2, 2),
     })
     assert task.state == states.FAILURE
     assert task.name == 'tasks.add'
     assert task.args == (2, 2)
     task.event('retried', time(), time())
     assert task.state == states.RETRY
예제 #14
0
 def test_equality(self):
     self.assertEqual(Task(uuid='foo').uuid, 'foo')
     self.assertEqual(
         Task(uuid='foo'), Task(uuid='foo'),
     )
     self.assertNotEqual(
         Task(uuid='foo'), Task(uuid='bar'),
     )
     self.assertEqual(
         hash(Task(uuid='foo')), hash(Task(uuid='foo')),
     )
     self.assertNotEqual(
         hash(Task(uuid='foo')), hash(Task(uuid='bar')),
     )
예제 #15
0
def test_listener_process_task(bool1, bool2, task_state_type, listener):
    with mock.patch.object(listener.memory.tasks, 'get') as tg, \
            mock.patch.object(listener.memory, 'event') as mev, \
            mock.patch('clearly.event_core.event_listener.immutable_task') as it, \
            mock.patch('clearly.event_core.event_listener.EventListener.compile_task_result') as ctr:
        tg.return_value = Task('uuid', state='pre_state') if bool1 else None
        task = Task('uuid', state=task_state_type, result='ok')
        mev.return_value = (task, ''), ''
        if bool2:
            ctr.side_effect = SyntaxError

        listener._process_task_event(dict(uuid='uuid'))

    if task_state_type == states.SUCCESS:
        ctr.assert_called_once_with(task)
        if bool2:
            listener._app.AsyncResult.assert_called_once_with('uuid')
    it.assert_called_once_with(task, task_state_type,
                               'pre_state' if bool1 else states.PENDING,
                               not bool1)
예제 #16
0
    def test_info(self):
        task = Task(uuid="abcdefg",
                    name="tasks.add",
                    args="(2, 2)",
                    kwargs="{}",
                    retries=2,
                    result=42,
                    eta=1,
                    runtime=0.0001,
                    expires=1,
                    exception=1,
                    received=time() - 10,
                    started=time() - 8,
                    succeeded=time())
        self.assertItemsEqual(list(task._info_fields), task.info().keys())

        self.assertItemsEqual(list(task._info_fields + ("received", )),
                              task.info(extra=("received", )))

        self.assertItemsEqual(["args", "kwargs"],
                              task.info(["args", "kwargs"]).keys())
예제 #17
0
 def test_ready(self):
     task = Task(uuid='abcdefg',
                 name='tasks.add')
     task.event('received', time(), time())
     self.assertFalse(task.ready)
     task.event('succeeded', time(), time())
     self.assertTrue(task.ready)
예제 #18
0
    def test_info(self):
        task = Task(uuid='abcdefg',
                    name='tasks.add',
                    args='(2, 2)',
                    kwargs='{}',
                    retries=2,
                    result=42,
                    eta=1,
                    runtime=0.0001,
                    expires=1,
                    parent_id='bdefc',
                    root_id='dedfef',
                    foo=None,
                    exception=1,
                    received=time() - 10,
                    started=time() - 8,
                    exchange='celery',
                    routing_key='celery',
                    succeeded=time())
        assert sorted(list(task._info_fields)) == sorted(task.info().keys())

        assert (sorted(list(task._info_fields + ('received', ))) == sorted(
            task.info(extra=('received', ))))

        assert (sorted(['args', 'kwargs'
                        ]) == sorted(task.info(['args', 'kwargs']).keys()))
        assert not list(task.info('foo'))
예제 #19
0
 def test_ready(self):
     task = Task(uuid="abcdefg",
                 name="tasks.add")
     task.on_received(timestamp=time())
     self.assertFalse(task.ready)
     task.on_succeeded(timestamp=time())
     self.assertTrue(task.ready)
예제 #20
0
 def test_ready(self):
     task = Task(uuid='abcdefg',
                 name='tasks.add')
     task.event('received', time(), time())
     assert not task.ready
     task.event('succeeded', time(), time())
     assert task.ready
예제 #21
0
    def test_info(self):
        task = Task(uuid='abcdefg',
                    name='tasks.add',
                    args='(2, 2)',
                    kwargs='{}',
                    retries=2,
                    result=42,
                    eta=1,
                    runtime=0.0001,
                    expires=1,
                    exception=1,
                    received=time() - 10,
                    started=time() - 8,
                    succeeded=time())
        self.assertEqual(sorted(list(task._info_fields)),
                         sorted(task.info().keys()))

        self.assertEqual(sorted(list(task._info_fields + ('received', ))),
                         sorted(task.info(extra=('received', ))))

        self.assertEqual(sorted(['args', 'kwargs']),
                         sorted(task.info(['args', 'kwargs']).keys()))
예제 #22
0
    def test_info(self):
        task = Task(uuid='abcdefg',
                    name='tasks.add',
                    args='(2, 2)',
                    kwargs='{}',
                    retries=2,
                    result=42,
                    eta=1,
                    runtime=0.0001,
                    expires=1,
                    exception=1,
                    received=time() - 10,
                    started=time() - 8,
                    succeeded=time())
        self.assertEqual(sorted(list(task._info_fields)),
                              sorted(task.info().keys()))

        self.assertEqual(sorted(list(task._info_fields + ('received', ))),
                              sorted(task.info(extra=('received', ))))

        self.assertEqual(sorted(['args', 'kwargs']),
                         sorted(task.info(['args', 'kwargs']).keys()))
예제 #23
0
def test_listener_derive_task_result(compile_res, use_rb, result_backend,
                                     expected, listener):
    with mock.patch('clearly.server.event_listener.EventListener.compile_task_result') as ctr, \
            mock.patch.object(listener, 'use_result_backend', use_rb):
        ctr.side_effect = (compile_res, )
        type(listener.app.AsyncResult()).result = PropertyMock(
            side_effect=(result_backend, ))

        task = Task(result='original')
        # noinspection PyProtectedMember
        result = listener._derive_task_result(task)

    assert result == expected
예제 #24
0
    def test_info(self):
        task = Task(uuid="abcdefg",
                    name="tasks.add",
                    args="(2, 2)",
                    kwargs="{}",
                    retries=2,
                    result=42,
                    eta=1,
                    runtime=0.0001,
                    expires=1,
                    exception=1,
                    received=time() - 10,
                    started=time() - 8,
                    succeeded=time())
        self.assertItemsEqual(list(task._info_fields),
                              task.info().keys())

        self.assertItemsEqual(list(task._info_fields + ("received", )),
                              task.info(extra=("received", )))

        self.assertItemsEqual(["args", "kwargs"],
                              task.info(["args", "kwargs"]).keys())
예제 #25
0
파일: test_state.py 프로젝트: aidan/celery
 def test_sent(self):
     task = Task(uuid='abcdefg',
                 name='tasks.add')
     task.event('sent', time(), time())
     self.assertEqual(task.state, states.PENDING)
예제 #26
0
 def create_task(self, worker, **kwargs):
     d = dict(uuid=gen_unique_id(),
              name='django_celery_monitor.test.task{0}'.format(next(_ids)),
              worker=worker)
     return Task(**dict(d, **kwargs))
예제 #27
0
            traceback='traceback',
            result_meta='meta')

WORKER = dict(hostname='hostname',
              pid=12000,
              sw_sys='sw_sys',
              sw_ident='sw_ident',
              sw_ver='sw_ver',
              loadavg=[1., 2., 3.],
              processed=789789,
              freq=5,
              heartbeats=[1])


@pytest.mark.parametrize('obj, to_type, data', [
    (Task(**TASK), TaskMessage, TASK),
    (Worker(**WORKER), WorkerMessage, WORKER),
])
def test_server_obj_to_message_valid(obj, to_type, data):
    obj.timestamp, obj.state = 123.1, 'state'
    message = obj_to_message(obj, to_type)
    assert all(getattr(message, k) == v for k, v in data.items())


@pytest.mark.parametrize('obj, to_type', [
    (1, TaskMessage),
    (1, WorkerMessage),
    ('wrong', TaskMessage),
    ('wrong', WorkerMessage),
    ({
        'wrong': True
예제 #28
0
 def test_sent(self):
     task = Task(uuid="abcdefg", name="tasks.add")
     task.on_sent(timestamp=time())
     self.assertEqual(task.state, states.PENDING)
예제 #29
0
 def test_sent(self):
     task = Task(uuid='abcdefg', name='tasks.add')
     task.event('sent', time(), time())
     assert task.state == states.PENDING
예제 #30
0
 def test_sent(self):
     task = Task(uuid="abcdefg", name="tasks.add")
     task.event("sent", time(), time())
     self.assertEqual(task.state, states.PENDING)
예제 #31
0
T_DATA_PB = dict(name='name', routing_key='routing_key', uuid='uuid', retries=5,
                 args='args', kwargs='kwargs', result='result', traceback='traceback',
                 timestamp=123, state='state')
T_DATA = copy.copy(T_DATA_PB)
T_DATA.update(pre_state='other', created=False)  # miss you py3.5
W_DATA_PB = dict(hostname='hostname', pid=12000, sw_sys='sw_sys', sw_ident='sw_ident',
                 sw_ver='sw_ver', loadavg=[1, 2, 3], processed=789789,
                 freq=5)
W_DATA = copy.copy(W_DATA_PB)
W_DATA.update(state='state', pre_state='other', created=False, alive=True, last_heartbeat=1)  # miss you py3.5


@pytest.mark.parametrize('event, key, data', [
    (TaskData(**T_DATA), 'task', T_DATA_PB),
    (Task(**T_DATA_PB), 'task', T_DATA_PB),
    (WorkerData(**W_DATA), 'worker', W_DATA_PB),
    (Worker(**W_DATA_PB), 'worker', W_DATA_PB),
])
def test_server_event_to_pb_valid(event, key, data, mocked_server):
    result_key, result_obj = mocked_server._event_to_pb(event)
    assert result_key == key
    assert all(getattr(result_obj, k) == v
               for k, v in data.items())


@pytest.mark.parametrize('event, key', [
    (1, ValueError),
    ('wrong', ValueError),
    ({'wrong': True}, ValueError),
])
예제 #32
0
 def test_sent(self):
     task = Task(uuid='abcdefg',
                 name='tasks.add')
     task.on_sent(timestamp=time())
     self.assertEqual(task.state, states.PENDING)
예제 #33
0
def create_task(worker, **kwargs):
    d = dict(uuid=gen_unique_id(),
             name='djcelery.unittest.task{0}'.format(next(_ids)),
             worker=worker)
    return Task(**dict(d, **kwargs))
예제 #34
0
 def test_repr(self):
     self.assertTrue(repr(Task(uuid='xxx', name='tasks.add')))
예제 #35
0
 def test_ready(self):
     task = Task(uuid="abcdefg", name="tasks.add")
     task.event("received", time(), time())
     self.assertFalse(task.ready)
     task.event("succeeded", time(), time())
     self.assertTrue(task.ready)
예제 #36
0
 def test_reduce_direct(self):
     task = Task(uuid='uuid', name='tasks.add', args='(2, 2)')
     fun, args = task.__reduce__()
     task2 = fun(*args)
     assert task == task2
예제 #37
0
def test_accept_workers():
    pattern = re.compile('pattern')
    with mock.patch('clearly.utils.data._accept') as mock_accept, \
            mock.patch('clearly.utils.data.WORKER_OP') as mock_op:
        accept_worker(pattern, True, Task(**TASK))
    mock_accept.assert_called_once_with(pattern, True, mock_op())
예제 #38
0
 def test_sent(self):
     task = Task(uuid='abcdefg',
                 name='tasks.add')
     task.event('sent', time(), time())
     assert task.state == states.PENDING
예제 #39
0
def create_task(worker, **kwargs):
    d = dict(uuid=gen_unique_id(),
             name='djcelery.unittest.task%s' % (_next_id(), ),
             worker=worker)
    return Task(**dict(d, **kwargs))
예제 #40
0
 def test_equality(self):
     assert Task(uuid='foo').uuid == 'foo'
     assert Task(uuid='foo') == Task(uuid='foo')
     assert Task(uuid='foo') != Task(uuid='bar')
     assert hash(Task(uuid='foo')) == hash(Task(uuid='foo'))
     assert hash(Task(uuid='foo')) != hash(Task(uuid='bar'))
예제 #41
0
 def test_repr(self):
     self.assertTrue(repr(Task(uuid="xxx", name="tasks.add")))
예제 #42
0
 def test_reduce_direct(self):
     task = Task(uuid='uuid', name='tasks.add', args='(2, 2)')
     fun, args = task.__reduce__()
     task2 = fun(*args)
     assert task == task2
예제 #43
0
 def test_sent(self):
     task = Task(uuid='abcdefg',
                 name='tasks.add')
     task.event('sent', time(), time())
     self.assertEqual(task.state, states.PENDING)
예제 #44
0
 def test_repr(self):
     assert repr(Task(uuid='xxx', name='tasks.add'))
예제 #45
0
 def get_task_by_id(events, task_id):
     from celery.events.state import Task
     return Task()