Пример #1
0
 def test_a_job_in_error_could_be_requeued(self):
     job = Job(identifier='job:1', status=STATUSES.ERROR)
     job.requeue('test')
     queue = Queue.get_queue('test')
     self.assertEqual(queue.waiting.llen(), 1)
     self.assertEqual(queue.delayed.zcard(), 0)
     self.assertEqual(job.status.hget(), STATUSES.WAITING)
Пример #2
0
    def test_enqueue_job_should_add_the_job_to_the_waiting_list(self):
        job = Job(identifier='job:1')

        queue = Queue.get_queue(name='test')
        queue.enqueue_job(job)

        waiting_jobs = queue.waiting.lmembers()
        self.assertEqual(waiting_jobs, [job.ident])

        # test a delayed job
        delayed_until = datetime.utcnow() + timedelta(seconds=1)
        job2 = Job(identifier='job:2', delayed_until=str(delayed_until))
        queue.delay_job(job2, delayed_until)

        waiting_jobs = queue.waiting.lmembers()
        self.assertEqual(waiting_jobs, [job.ident])
Пример #3
0
    def test_get_model_repr_should_return_the_string_repr_of_the_model(self):
        self.assertEqual(Job.get_model_repr(), 'limpyd_jobs.models.Job')
        job = Job()
        self.assertEqual(job.get_model_repr(), 'limpyd_jobs.models.Job')

        self.assertEqual(JobFooBar.get_model_repr(), 'tests.models.JobFooBar')
        job = JobFooBar()
        self.assertEqual(job.get_model_repr(), 'tests.models.JobFooBar')
Пример #4
0
    def test_enqueue_job_can_prepend_jobs(self):
        queue = Queue.get_queue(name='test')

        job = Job(identifier='job:1')
        queue.enqueue_job(job)
        waiting_jobs = queue.waiting.lmembers()
        self.assertEqual(waiting_jobs, [job.ident])

        job2 = Job(identifier='job:2')
        queue.enqueue_job(job2)
        waiting_jobs = queue.waiting.lmembers()
        self.assertEqual(waiting_jobs, [job.ident, job2.ident])

        job3 = Job(identifier='job:3')
        queue.enqueue_job(job3, prepend=True)
        waiting_jobs = queue.waiting.lmembers()
        self.assertEqual(waiting_jobs, [job3.ident, job.ident, job2.ident])
Пример #5
0
 def test_requeuing_a_job_with_a_datetime_should_put_it_in_the_delayed_lits(self):
     job = Job(identifier='job:1', status=STATUSES.ERROR)
     queue = Queue.get_queue('test')
     self.assertEqual(queue.waiting.llen(), 0)
     self.assertEqual(queue.delayed.zcard(), 0)
     job.requeue('test', delayed_until=datetime.utcnow()+timedelta(seconds=5))
     self.assertEqual(queue.waiting.llen(), 0)
     self.assertEqual(queue.delayed.zcard(), 1)
     self.assertEqual(job.status.hget(), STATUSES.DELAYED)
Пример #6
0
    def test_delay_job_should_add_the_job_to_the_delayed_sortedset(self):
        delayed_until = datetime.utcnow() + timedelta(seconds=1)
        timestamp = datetime_to_score(delayed_until)

        job = Job(identifier='job:1', delayed_until=str(delayed_until))

        queue = Queue.get_queue(name='test')
        queue.delay_job(job, delayed_until)

        delayed_jobs = queue.delayed.zrange(0, -1, withscores=True)
        self.assertEqual(delayed_jobs, [(job.ident, timestamp)])

        # test a non-delayed job
        job2 = Job(identifier='job:2')
        queue.enqueue_job(job2)

        delayed_jobs = queue.delayed.zrange(0, -1, withscores=True)
        self.assertEqual(delayed_jobs, [(job.ident, timestamp)])
Пример #7
0
    def test_enqueue_or_delay_should_enqueue_if_not_in_the_future(self):
        queue = Queue.get_queue(name='test', priority=1)

        job = Job(identifier='job:1')
        job.enqueue_or_delay('test', 1)
        self.assertEqual(queue.delayed.zcard(), 0)
        self.assertEqual(queue.waiting.llen(), 1)
        self.assertEqual(job.delayed_until.hget(), None)
        self.assertEqual(job.status.hget(), STATUSES.WAITING)
        self.assertEqual(job.priority.hget(), '1')

        job2 = Job(identifier='job:2')
        delayed_until = datetime.utcnow() - timedelta(seconds=5)  # the past !
        job2.enqueue_or_delay('test', 1, delayed_until=delayed_until)
        self.assertEqual(queue.delayed.zcard(), 0)
        self.assertEqual(queue.waiting.llen(), 2)
        self.assertEqual(job2.delayed_until.hget(), None)
        self.assertEqual(job2.status.hget(), STATUSES.WAITING)
        self.assertEqual(job2.priority.hget(), '1')
Пример #8
0
 def test_enqueue_or_delay_should_delay_if_in_the_future(self):
     queue = Queue.get_queue(name='test', priority=1)
     job = Job(identifier='job:1')
     delayed_until = datetime.utcnow() + timedelta(seconds=5)
     job.enqueue_or_delay('test', 1, delayed_until=delayed_until)
     self.assertEqual(queue.delayed.zcard(), 1)
     self.assertEqual(queue.waiting.llen(), 0)
     self.assertEqual(job.delayed_until.hget(), str(delayed_until))
     self.assertEqual(job.status.hget(), STATUSES.DELAYED)
     self.assertEqual(job.priority.hget(), '1')
Пример #9
0
    def test_duration_property_should_return_elapsed_time_during_start_and_end(self):
        job = Job(identifier='job:1')
        self.assertIsNone(job.duration)

        start = datetime.utcnow()
        job.start.hset(str(start))
        self.assertIsNone(job.duration)

        end = start + timedelta(seconds=5)
        job.end.hset(str(end))
        self.assertEqual(job.duration, timedelta(seconds=5))

        job.start.delete()
        self.assertIsNone(job.duration)