示例#1
0
def test_dequeue_job_no_such_job(redis):
    """Silently skip job ids from queue if there is no such job hash."""

    yield from redis.rpush(queue_key(stubs.queue), 'foo')  # Job id without hash.
    yield from enqueue_job(redis=redis, **stubs.job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    assert stored_id == stubs.job_id.encode()
示例#2
0
def test_requeue_job_clean_exc_info(redis):
    """Requeue existing job cleanup exception information."""

    yield from enqueue_job(redis=redis, **stubs.job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    yield from fail_job(redis, stubs.queue, stubs.job_id, stubs.job_exc_info)
    yield from requeue_job(redis, stored_id.decode())
    assert not (yield from redis.hget(job_key(stubs.job_id), 'exc_info'))
示例#3
0
def test_requeue_job_enqueue_into_origin(redis):
    """Requeue existing job puts it into jobs origin queue."""

    yield from enqueue_job(redis=redis, **stubs.job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    yield from fail_job(redis, stubs.queue, stubs.job_id, stubs.job_exc_info)
    yield from requeue_job(redis, stored_id.decode())
    assert stubs.job_id.encode() in (yield from jobs(redis, stubs.queue))
示例#4
0
def test_dequeue_job_no_such_job(redis):
    """Silently skip job ids from queue if there is no such job hash."""

    yield from redis.rpush(queue_key(stubs.queue),
                           'foo')  # Job id without hash.
    yield from enqueue_job(redis=redis, **stubs.job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    assert stored_id == stubs.job_id.encode()
示例#5
0
def test_requeue_job_clean_exc_info(redis):
    """Requeue existing job cleanup exception information."""

    yield from enqueue_job(redis=redis, **stubs.job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    yield from fail_job(redis, stubs.queue, stubs.job_id, stubs.job_exc_info)
    yield from requeue_job(redis, stored_id.decode())
    assert not (yield from redis.hget(job_key(stubs.job_id), 'exc_info'))
示例#6
0
def test_requeue_job_set_status(redis):
    """Requeue existing job set corresponding job status."""

    yield from enqueue_job(redis=redis, **stubs.job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    yield from fail_job(redis, stubs.queue, stubs.job_id, stubs.job_exc_info)
    yield from requeue_job(redis, stored_id.decode())
    assert (yield from job_status(redis, stubs.job_id)) == JobStatus.QUEUED.encode()
示例#7
0
def test_requeue_job_enqueue_into_origin(redis):
    """Requeue existing job puts it into jobs origin queue."""

    yield from enqueue_job(redis=redis, **stubs.job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    yield from fail_job(redis, stubs.queue, stubs.job_id, stubs.job_exc_info)
    yield from requeue_job(redis, stored_id.decode())
    assert stubs.job_id.encode() in (yield from jobs(redis, stubs.queue))
示例#8
0
def test_requeue_job_set_status(redis):
    """Requeue existing job set corresponding job status."""

    yield from enqueue_job(redis=redis, **stubs.job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    yield from fail_job(redis, stubs.queue, stubs.job_id, stubs.job_exc_info)
    yield from requeue_job(redis, stored_id.decode())
    assert (yield from job_status(redis,
                                  stubs.job_id)) == JobStatus.QUEUED.encode()
示例#9
0
def test_start_job_sets_job_status(redis):
    """Start job sets corresponding job status."""

    yield from enqueue_job(redis=redis, **stubs.job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    stored_id = stored_id.decode()
    queue = stored_spec[b'origin'].decode()
    timeout = stored_spec[b'timeout']
    yield from start_job(redis, queue, stored_id, timeout)
    assert (yield from job_status(redis, stubs.job_id)) == JobStatus.STARTED.encode()
示例#10
0
def test_finish_job_sets_results_ttl(redis):
    """Finish job sets results TTL."""

    yield from enqueue_job(redis=redis, **stubs.job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    stored_id = stored_id.decode()
    queue = stored_spec[b'origin'].decode()
    timeout = stored_spec[b'timeout']
    yield from start_job(redis, queue, stored_id, timeout)
    yield from finish_job(redis, queue, stored_id)
    assert (yield from redis.ttl(job_key(stubs.job_id))) == 500
示例#11
0
def test_fail_job_removes_from_started_registry(redis):
    """Fail job remove given job from started registry."""

    yield from enqueue_job(redis=redis, **stubs.job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    stored_id = stored_id.decode()
    queue = stored_spec[b'origin'].decode()
    timeout = stored_spec[b'timeout']
    yield from start_job(redis, queue, stored_id, timeout)
    yield from fail_job(redis, stubs.queue, stubs.job_id, stubs.job_exc_info)
    assert stubs.job_id.encode() not in (yield from started_jobs(redis, queue))
示例#12
0
def test_finish_job_sets_results_ttl(redis):
    """Finish job sets results TTL."""

    yield from enqueue_job(redis=redis, **stubs.job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    stored_id = stored_id.decode()
    queue = stored_spec[b'origin'].decode()
    timeout = stored_spec[b'timeout']
    yield from start_job(redis, queue, stored_id, timeout)
    yield from finish_job(redis, queue, stored_id)
    assert (yield from redis.ttl(job_key(stubs.job_id))) == 500
示例#13
0
def test_start_job_sets_started_time(redis):
    """Start job sets it started at time."""

    yield from enqueue_job(redis=redis, **stubs.job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    stored_id = stored_id.decode()
    queue = stored_spec[b'origin'].decode()
    timeout = stored_spec[b'timeout']
    yield from start_job(redis, queue, stored_id, timeout)
    started_at = yield from redis.hget(job_key(stubs.job_id), 'started_at')
    assert started_at == utcformat(utcnow()).encode()
示例#14
0
def test_finish_job_started_registry(redis):
    """Finish job removes job from started job registry."""

    yield from enqueue_job(redis=redis, **stubs.job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    stored_id = stored_id.decode()
    queue = stored_spec[b'origin'].decode()
    timeout = stored_spec[b'timeout']
    yield from start_job(redis, queue, stored_id, timeout)
    yield from finish_job(redis, queue, stored_id)
    assert not (yield from started_jobs(redis, stubs.queue))
示例#15
0
def test_start_job_persist_job(redis):
    """Start job set persistence to the job hash during job execution."""

    yield from enqueue_job(redis=redis, **stubs.job)
    yield from redis.expire(job_key(stubs.job_id), 3)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    stored_id = stored_id.decode()
    queue = stored_spec[b'origin'].decode()
    timeout = stored_spec[b'timeout']
    yield from start_job(redis, queue, stored_id, timeout)
    assert (yield from redis.ttl(job_key(stubs.job_id))) == -1
示例#16
0
def test_start_job_sets_job_status(redis):
    """Start job sets corresponding job status."""

    yield from enqueue_job(redis=redis, **stubs.job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    stored_id = stored_id.decode()
    queue = stored_spec[b'origin'].decode()
    timeout = stored_spec[b'timeout']
    yield from start_job(redis, queue, stored_id, timeout)
    assert (yield from job_status(redis,
                                  stubs.job_id)) == JobStatus.STARTED.encode()
示例#17
0
def test_fail_job_removes_from_started_registry(redis):
    """Fail job remove given job from started registry."""

    yield from enqueue_job(redis=redis, **stubs.job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    stored_id = stored_id.decode()
    queue = stored_spec[b'origin'].decode()
    timeout = stored_spec[b'timeout']
    yield from start_job(redis, queue, stored_id, timeout)
    yield from fail_job(redis, stubs.queue, stubs.job_id, stubs.job_exc_info)
    assert stubs.job_id.encode() not in (yield from started_jobs(redis, queue))
示例#18
0
def test_finish_job_sets_corresponding_status(redis):
    """Finish job sets corresponding status."""

    yield from enqueue_job(redis=redis, **stubs.job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    stored_id = stored_id.decode()
    queue = stored_spec[b'origin'].decode()
    timeout = stored_spec[b'timeout']
    yield from start_job(redis, queue, stored_id, timeout)
    yield from finish_job(redis, queue, stored_id)
    assert (yield from job_status(redis, stubs.job_id)) == JobStatus.FINISHED.encode()
示例#19
0
def test_finish_job_started_registry(redis):
    """Finish job removes job from started job registry."""

    yield from enqueue_job(redis=redis, **stubs.job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    stored_id = stored_id.decode()
    queue = stored_spec[b'origin'].decode()
    timeout = stored_spec[b'timeout']
    yield from start_job(redis, queue, stored_id, timeout)
    yield from finish_job(redis, queue, stored_id)
    assert not (yield from started_jobs(redis, stubs.queue))
示例#20
0
def test_start_job_persist_job(redis):
    """Start job set persistence to the job hash during job execution."""

    yield from enqueue_job(redis=redis, **stubs.job)
    yield from redis.expire(job_key(stubs.job_id), 3)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    stored_id = stored_id.decode()
    queue = stored_spec[b'origin'].decode()
    timeout = stored_spec[b'timeout']
    yield from start_job(redis, queue, stored_id, timeout)
    assert (yield from redis.ttl(job_key(stubs.job_id))) == -1
示例#21
0
def test_start_job_sets_started_time(redis):
    """Start job sets it started at time."""

    yield from enqueue_job(redis=redis, **stubs.job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    stored_id = stored_id.decode()
    queue = stored_spec[b'origin'].decode()
    timeout = stored_spec[b'timeout']
    yield from start_job(redis, queue, stored_id, timeout)
    started_at = yield from redis.hget(job_key(stubs.job_id), 'started_at')
    assert started_at == utcformat(utcnow()).encode()
示例#22
0
def test_start_job_add_job_to_registry(redis):
    """Start job will add it to started job registry."""

    yield from enqueue_job(redis=redis, **stubs.job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    stored_id = stored_id.decode()
    queue = stored_spec[b'origin'].decode()
    timeout = stored_spec[b'timeout']
    yield from start_job(redis, queue, stored_id, timeout)
    score = current_timestamp() + stored_spec[b'timeout'] + 60
    started = yield from redis.zrange(started_registry(queue), withscores=True)
    assert started == [stubs.job_id.encode(), score]
示例#23
0
def test_finish_job_non_expired_job(redis):
    """Finish job persist non expired job."""

    yield from enqueue_job(redis=redis, result_ttl=None, **stubs.job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    queue = stored_spec[b'origin'].decode()
    stored_id = stored_id.decode()
    timeout = stored_spec[b'timeout']
    result_ttl = stored_spec[b'result_ttl']
    yield from start_job(redis, queue, stored_id, timeout)
    yield from finish_job(redis, queue, stored_id, result_ttl=result_ttl)
    assert (yield from redis.ttl(job_key(stubs.job_id))) == -1
示例#24
0
def test_finish_job_enqueue_dependents_status(redis):
    """Finish job will set dependents status to QUEUED."""

    yield from enqueue_job(redis=redis, **stubs.job)
    yield from enqueue_job(redis=redis, **stubs.child_job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    stored_id = stored_id.decode()
    queue = stored_spec[b'origin'].decode()
    timeout = stored_spec[b'timeout']
    yield from start_job(redis, queue, stored_id, timeout)
    yield from finish_job(redis, queue, stored_id)
    assert (yield from redis.hget(job_key(stubs.child_job_id), 'status')) == JobStatus.QUEUED.encode()
示例#25
0
def test_finish_job_enqueue_dependents(redis):
    """Finish job will enqueue its dependents."""

    yield from enqueue_job(redis=redis, **stubs.job)
    yield from enqueue_job(redis=redis, **stubs.child_job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    stored_id = stored_id.decode()
    queue = stored_spec[b'origin'].decode()
    timeout = stored_spec[b'timeout']
    yield from start_job(redis, queue, stored_id, timeout)
    yield from finish_job(redis, queue, stored_id)
    assert (yield from redis.lrange(queue_key(stubs.queue), 0, -1)) == [stubs.child_job_id.encode()]
示例#26
0
def test_start_job_add_job_to_registry(redis):
    """Start job will add it to started job registry."""

    yield from enqueue_job(redis=redis, **stubs.job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    stored_id = stored_id.decode()
    queue = stored_spec[b'origin'].decode()
    timeout = stored_spec[b'timeout']
    yield from start_job(redis, queue, stored_id, timeout)
    score = current_timestamp() + stored_spec[b'timeout'] + 60
    started = yield from redis.zrange(started_registry(queue), withscores=True)
    assert started == [stubs.job_id.encode(), score]
示例#27
0
def test_finish_job_finished_registry(redis):
    """Finish job add job to the finished job registry."""

    yield from enqueue_job(redis=redis, **stubs.job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    stored_id = stored_id.decode()
    queue = stored_spec[b'origin'].decode()
    timeout = stored_spec[b'timeout']
    yield from start_job(redis, queue, stored_id, timeout)
    yield from finish_job(redis, queue, stored_id)
    finish = yield from redis.zrange(finished_registry(queue), withscores=True)
    assert finish == [stubs.job_id.encode(), current_timestamp() + 500]
示例#28
0
def test_finish_job_dependents_defered_registry(redis):
    """Finish job will remove its dependents from deferred job registries."""

    yield from enqueue_job(redis=redis, **stubs.job)
    yield from enqueue_job(redis=redis, **stubs.child_job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    stored_id = stored_id.decode()
    queue = stored_spec[b'origin'].decode()
    timeout = stored_spec[b'timeout']
    yield from start_job(redis, queue, stored_id, timeout)
    yield from finish_job(redis, queue, stored_id)
    assert not (yield from deferred_jobs(redis, queue))
示例#29
0
def test_finish_job_remove_results_zero_ttl(redis):
    """Finish job removes jobs with zero TTL."""

    yield from enqueue_job(redis=redis, result_ttl=0, **stubs.job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    queue = stored_spec[b'origin'].decode()
    stored_id = stored_id.decode()
    timeout = stored_spec[b'timeout']
    result_ttl = stored_spec[b'result_ttl']
    yield from start_job(redis, queue, stored_id, timeout)
    yield from finish_job(redis, queue, stored_id, result_ttl=result_ttl)
    assert not (yield from redis.exists(job_key(stubs.job_id)))
示例#30
0
def test_finish_job_cleanup_dependents(redis):
    """Finish job will cleanup parent job dependents set."""

    yield from enqueue_job(redis=redis, **stubs.job)
    yield from enqueue_job(redis=redis, **stubs.child_job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    stored_id = stored_id.decode()
    queue = stored_spec[b'origin'].decode()
    timeout = stored_spec[b'timeout']
    yield from start_job(redis, queue, stored_id, timeout)
    yield from finish_job(redis, queue, stored_id)
    assert not (yield from redis.smembers(dependents(stubs.job_id)))
示例#31
0
def test_finish_job_sets_ended_at(redis):
    """Finish job sets ended at field."""

    yield from enqueue_job(redis=redis, **stubs.job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    stored_id = stored_id.decode()
    queue = stored_spec[b'origin'].decode()
    timeout = stored_spec[b'timeout']
    yield from start_job(redis, queue, stored_id, timeout)
    yield from finish_job(redis, queue, stored_id)
    ended_at = yield from redis.hget(job_key(stubs.job_id), 'ended_at')
    assert ended_at == utcformat(utcnow()).encode()
示例#32
0
def test_enqueue_job_finished_dependency(redis):
    """Enqueue job immediately if its dependency already finished."""

    yield from enqueue_job(redis=redis, **stubs.job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    stored_id = stored_id.decode()
    queue = stored_spec[b'origin'].decode()
    timeout = stored_spec[b'timeout']
    yield from start_job(redis, queue, stored_id, timeout)
    yield from finish_job(redis, queue, stored_id)
    yield from enqueue_job(redis=redis, **stubs.child_job)
    assert (yield from redis.lrange(queue_key(stubs.queue), 0, -1)) == [stubs.child_job_id.encode()]
示例#33
0
def test_finish_job_sets_ended_at(redis):
    """Finish job sets ended at field."""

    yield from enqueue_job(redis=redis, **stubs.job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    stored_id = stored_id.decode()
    queue = stored_spec[b'origin'].decode()
    timeout = stored_spec[b'timeout']
    yield from start_job(redis, queue, stored_id, timeout)
    yield from finish_job(redis, queue, stored_id)
    ended_at = yield from redis.hget(job_key(stubs.job_id), 'ended_at')
    assert ended_at == utcformat(utcnow()).encode()
示例#34
0
def test_finish_job_finished_registry(redis):
    """Finish job add job to the finished job registry."""

    yield from enqueue_job(redis=redis, **stubs.job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    stored_id = stored_id.decode()
    queue = stored_spec[b'origin'].decode()
    timeout = stored_spec[b'timeout']
    yield from start_job(redis, queue, stored_id, timeout)
    yield from finish_job(redis, queue, stored_id)
    finish = yield from redis.zrange(finished_registry(queue), withscores=True)
    assert finish == [stubs.job_id.encode(), current_timestamp() + 500]
示例#35
0
def test_finish_job_non_expired_job(redis):
    """Finish job persist non expired job."""

    yield from enqueue_job(redis=redis, result_ttl=None, **stubs.job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    queue = stored_spec[b'origin'].decode()
    stored_id = stored_id.decode()
    timeout = stored_spec[b'timeout']
    result_ttl = stored_spec[b'result_ttl']
    yield from start_job(redis, queue, stored_id, timeout)
    yield from finish_job(redis, queue, stored_id, result_ttl=result_ttl)
    assert (yield from redis.ttl(job_key(stubs.job_id))) == -1
示例#36
0
def test_finish_job_cleanup_dependents(redis):
    """Finish job will cleanup parent job dependents set."""

    yield from enqueue_job(redis=redis, **stubs.job)
    yield from enqueue_job(redis=redis, **stubs.child_job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    stored_id = stored_id.decode()
    queue = stored_spec[b'origin'].decode()
    timeout = stored_spec[b'timeout']
    yield from start_job(redis, queue, stored_id, timeout)
    yield from finish_job(redis, queue, stored_id)
    assert not (yield from redis.smembers(dependents(stubs.job_id)))
示例#37
0
def test_finish_job_remove_results_zero_ttl(redis):
    """Finish job removes jobs with zero TTL."""

    yield from enqueue_job(redis=redis, result_ttl=0, **stubs.job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    queue = stored_spec[b'origin'].decode()
    stored_id = stored_id.decode()
    timeout = stored_spec[b'timeout']
    result_ttl = stored_spec[b'result_ttl']
    yield from start_job(redis, queue, stored_id, timeout)
    yield from finish_job(redis, queue, stored_id, result_ttl=result_ttl)
    assert not (yield from redis.exists(job_key(stubs.job_id)))
示例#38
0
def test_finish_job_dependents_defered_registry(redis):
    """Finish job will remove its dependents from deferred job registries."""

    yield from enqueue_job(redis=redis, **stubs.job)
    yield from enqueue_job(redis=redis, **stubs.child_job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    stored_id = stored_id.decode()
    queue = stored_spec[b'origin'].decode()
    timeout = stored_spec[b'timeout']
    yield from start_job(redis, queue, stored_id, timeout)
    yield from finish_job(redis, queue, stored_id)
    assert not (yield from deferred_jobs(redis, queue))
示例#39
0
def test_finish_job_sets_corresponding_status(redis):
    """Finish job sets corresponding status."""

    yield from enqueue_job(redis=redis, **stubs.job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    stored_id = stored_id.decode()
    queue = stored_spec[b'origin'].decode()
    timeout = stored_spec[b'timeout']
    yield from start_job(redis, queue, stored_id, timeout)
    yield from finish_job(redis, queue, stored_id)
    assert (yield from
            job_status(redis, stubs.job_id)) == JobStatus.FINISHED.encode()
示例#40
0
def test_finish_job_enqueue_dependents_status(redis):
    """Finish job will set dependents status to QUEUED."""

    yield from enqueue_job(redis=redis, **stubs.job)
    yield from enqueue_job(redis=redis, **stubs.child_job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    stored_id = stored_id.decode()
    queue = stored_spec[b'origin'].decode()
    timeout = stored_spec[b'timeout']
    yield from start_job(redis, queue, stored_id, timeout)
    yield from finish_job(redis, queue, stored_id)
    assert (yield from redis.hget(job_key(stubs.child_job_id),
                                  'status')) == JobStatus.QUEUED.encode()
示例#41
0
def test_finish_job_finished_registry_negative_ttl(redis):
    """Don't use current timestamp in job score with empty result TTL."""

    yield from enqueue_job(redis=redis, result_ttl=None, **stubs.job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    queue = stored_spec[b'origin'].decode()
    stored_id = stored_id.decode()
    timeout = stored_spec[b'timeout']
    result_ttl = stored_spec[b'result_ttl']
    yield from start_job(redis, queue, stored_id, timeout)
    yield from finish_job(redis, queue, stored_id, result_ttl=result_ttl)
    finish = yield from redis.zrange(finished_registry(queue), withscores=True)
    assert finish == [stubs.job_id.encode(), -1]
示例#42
0
def test_finish_job_dependents_enqueue_date(redis):
    """Finish job will enqueue its dependents with proper date field."""

    yield from enqueue_job(redis=redis, **stubs.job)
    yield from enqueue_job(redis=redis, **stubs.child_job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    stored_id = stored_id.decode()
    queue = stored_spec[b'origin'].decode()
    timeout = stored_spec[b'timeout']
    yield from start_job(redis, queue, stored_id, timeout)
    yield from finish_job(redis, queue, stored_id)
    enqueued_at = yield from redis.hget(job_key(stubs.job_id), 'enqueued_at')
    assert enqueued_at == utcformat(utcnow()).encode()
示例#43
0
def test_finish_job_enqueue_dependents(redis):
    """Finish job will enqueue its dependents."""

    yield from enqueue_job(redis=redis, **stubs.job)
    yield from enqueue_job(redis=redis, **stubs.child_job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    stored_id = stored_id.decode()
    queue = stored_spec[b'origin'].decode()
    timeout = stored_spec[b'timeout']
    yield from start_job(redis, queue, stored_id, timeout)
    yield from finish_job(redis, queue, stored_id)
    assert (yield from redis.lrange(queue_key(stubs.queue), 0,
                                    -1)) == [stubs.child_job_id.encode()]
示例#44
0
def test_enqueue_job_finished_dependency(redis):
    """Enqueue job immediately if its dependency already finished."""

    yield from enqueue_job(redis=redis, **stubs.job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    stored_id = stored_id.decode()
    queue = stored_spec[b'origin'].decode()
    timeout = stored_spec[b'timeout']
    yield from start_job(redis, queue, stored_id, timeout)
    yield from finish_job(redis, queue, stored_id)
    yield from enqueue_job(redis=redis, **stubs.child_job)
    assert (yield from redis.lrange(queue_key(stubs.queue), 0,
                                    -1)) == [stubs.child_job_id.encode()]
示例#45
0
def test_finish_job_finished_registry_negative_ttl(redis):
    """Don't use current timestamp in job score with empty result TTL."""

    yield from enqueue_job(redis=redis, result_ttl=None, **stubs.job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    queue = stored_spec[b'origin'].decode()
    stored_id = stored_id.decode()
    timeout = stored_spec[b'timeout']
    result_ttl = stored_spec[b'result_ttl']
    yield from start_job(redis, queue, stored_id, timeout)
    yield from finish_job(redis, queue, stored_id, result_ttl=result_ttl)
    finish = yield from redis.zrange(finished_registry(queue), withscores=True)
    assert finish == [stubs.job_id.encode(), -1]
示例#46
0
def test_finish_job_dependents_enqueue_date(redis):
    """Finish job will enqueue its dependents with proper date field."""

    yield from enqueue_job(redis=redis, **stubs.job)
    yield from enqueue_job(redis=redis, **stubs.child_job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    stored_id = stored_id.decode()
    queue = stored_spec[b'origin'].decode()
    timeout = stored_spec[b'timeout']
    yield from start_job(redis, queue, stored_id, timeout)
    yield from finish_job(redis, queue, stored_id)
    enqueued_at = yield from redis.hget(job_key(stubs.job_id), 'enqueued_at')
    assert enqueued_at == utcformat(utcnow()).encode()
示例#47
0
def test_dequeue_job(redis):
    """Dequeueing jobs from queues."""

    yield from enqueue_job(redis=redis, result_ttl=5000, **stubs.job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    assert not (yield from queue_length(redis, stubs.queue))
    assert stored_id == stubs.job_id.encode()
    assert stored_spec == {
        b'created_at': b'2016-04-05T22:40:35Z',
        b'data': b'\x80\x04\x950\x00\x00\x00\x00\x00\x00\x00(\x8c\x19fixtures.some_calculation\x94NK\x03K\x04\x86\x94}\x94\x8c\x01z\x94K\x02st\x94.',  # noqa
        b'description': b'fixtures.some_calculation(3, 4, z=2)',
        b'timeout': 180,
        b'result_ttl': 5000,
        b'status': JobStatus.QUEUED.encode(),
        b'origin': stubs.queue.encode(),
        b'enqueued_at': utcformat(utcnow()).encode(),
    }
示例#48
0
def test_dequeue_job(redis):
    """Dequeueing jobs from queues."""

    yield from enqueue_job(redis=redis, result_ttl=5000, **stubs.job)
    stored_id, stored_spec = yield from dequeue_job(redis, stubs.queue)
    assert not (yield from queue_length(redis, stubs.queue))
    assert stored_id == stubs.job_id.encode()
    assert stored_spec == {
        b'created_at': b'2016-04-05T22:40:35Z',
        b'data':
        b'\x80\x04\x950\x00\x00\x00\x00\x00\x00\x00(\x8c\x19fixtures.some_calculation\x94NK\x03K\x04\x86\x94}\x94\x8c\x01z\x94K\x02st\x94.',  # noqa
        b'description': b'fixtures.some_calculation(3, 4, z=2)',
        b'timeout': 180,
        b'result_ttl': 5000,
        b'status': JobStatus.QUEUED.encode(),
        b'origin': stubs.queue.encode(),
        b'enqueued_at': utcformat(utcnow()).encode(),
    }
示例#49
0
def test_dequeue_job_from_empty_queue(redis):
    """Nothing happens if there is an empty queue."""

    assert (yield from dequeue_job(redis, stubs.queue)) == (None, {})
示例#50
0
def test_dequeue_job_from_empty_queue(redis):
    """Nothing happens if there is an empty queue."""

    assert (yield from dequeue_job(redis, stubs.queue)) == (None, {})