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,
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),