def test_dequeue_ignores_nonexisting_jobs(): """Dequeuing silently ignores non-existing jobs.""" q = Queue() uuid = '49f205ab-8ea3-47dd-a1b5-bfa186870fc8' yield from q.push_job_id(uuid) yield from q.push_job_id(uuid) result = yield from q.enqueue(say_hello, 'Nick', foo='bar') yield from q.push_job_id(uuid) # Dequeue simply ignores the missing job and returns None assert (yield from q.count) == 4 assert (yield from q.dequeue()).id == result.id assert not (yield from q.dequeue()) assert not (yield from q.count)
def test_work_is_unreadable(redis, loop): """Unreadable jobs are put on the failed queue.""" q = Queue() failed_q = get_failed_queue() assert (yield from failed_q.count) == 0 assert (yield from q.count) == 0 # NOTE: We have to fake this enqueueing for this test case. # What we're simulating here is a call to a function that is not # importable from the worker process. job = Job.create(func=say_hello, args=(3,)) yield from job.save() # NOTE: replacement and original strings must have the same length data = yield from redis.hget(job.key, 'data') invalid_data = data.replace(b'say_hello', b'fake_attr') assert data != invalid_data yield from redis.hset(job.key, 'data', invalid_data) # We use the low-level internal function to enqueue any data # (bypassing validity checks) yield from q.push_job_id(job.id) assert (yield from q.count) == 1 # All set, we're going to process it w = Worker([q]) yield from w.work(burst=True, loop=loop) # Should silently pass assert (yield from q.count) == 0 assert (yield from failed_q.count) == 1
def test_dequeue_any_ignores_nonexisting_jobs(): """Dequeuing (from any queue) silently ignores non-existing jobs.""" q = Queue('low') uuid = '49f205ab-8ea3-47dd-a1b5-bfa186870fc8' yield from q.push_job_id(uuid) # Dequeue simply ignores the missing job and returns None assert (yield from q.count) == 1 assert not (yield from Queue.dequeue_any([Queue(), Queue('low')], None)) assert not (yield from q.count)
def test_pop_job_id(): """Popping job IDs from queues.""" # Set up q = Queue() uuid = '112188ae-4e9d-4a5b-a5b3-f26f2cb054da' yield from q.push_job_id(uuid) # Pop it off the queue... assert (yield from q.count) assert (yield from q.pop_job_id()) == uuid # ...and assert the queue count when down assert not (yield from q.count)