示例#1
0
def test_immutable_task():
    task = get_dummy(name='name', routing_key='routing_key', uuid='uuid', retries='retries',
                     args='args', kwargs='kwargs', result='result', traceback='traceback',
                     timestamp=123.1, state='state')

    data = copy.copy(task.__dict__)
    data.update(state='new_state', pre_state='pre_state', created=True)
    expected = TaskData(**data)

    immutable = immutable_task(task, 'new_state', 'pre_state', True)
    assert immutable == expected
    assert immutable is not expected

    task.state = 'oops'
    assert immutable == expected
def test_dispatcher_generate_states(bool1, dispatcher):
    event_data = TaskData(created=bool1,
                          name='name',
                          routing_key='routing_key',
                          uuid='uuid',
                          retries=5,
                          args='args',
                          kwargs='kwargs',
                          result='result',
                          traceback='traceback',
                          timestamp=123.1,
                          state='state',
                          pre_state='other')
    with mock.patch.object(dispatcher.task_states, 'states_through') as st:
        st.return_value = ('middle', )
        gen = StreamingDispatcher.generate_states(event_data,
                                                  dispatcher.task_states)
        if bool1:
            assert next(gen)['state'] == '-'
        assert next(gen)['state'] == 'middle'
        with pytest.raises(StopIteration):
            next(gen)
                                     bool2) as q_client:
        assert dispatcher.observers[-1].queue == q_client
        assert dispatcher.observers[-1].task_regex == re.compile('tasks_regex')
        assert dispatcher.observers[-1].worker_regex == re.compile(
            'workers_regex')
        assert dispatcher.observers[-1].task_negate == bool1
        assert dispatcher.observers[-1].worker_negate == bool2


@pytest.mark.parametrize('event_data, path, change, accepts_params', [
    (TaskData(name='name',
              routing_key='routing_key',
              uuid='uuid',
              retries=5,
              args='args',
              kwargs='kwargs',
              result='result',
              traceback='traceback',
              timestamp=123.1,
              state='state',
              pre_state='other',
              created=False), 'task_states', dict(uuid='roger'),
     ('task_regexp', 35, 'name', 'routing_key')),
    (WorkerData(hostname='hostname',
                pid=12000,
                sw_sys='sw_sys',
                sw_ident='sw_ident',
                sw_ver='sw_ver',
                loadavg='loadavg',
                processed='processed',
                alive=True,
                freq=5,
示例#4
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),