Пример #1
0
 def test_add_error_method_should_add_an_error_instance(self):
     e = ErrorTests.ExceptionWithCode('the answer', 42)
     job = Job.add_job(identifier='job:1', queue_name='test')
     error1 = Error.add_error(queue_name='test', job=job, error=e)
     self.assertListEqual(list(Error.collection()), [error1.pk.get()])
     Error.add_error(queue_name='test', job=job, error=e)
     self.assertEqual(len(Error.collection()), 2)
Пример #2
0
 def test_add_error_method_should_add_an_error_instance(self):
     e = ErrorTests.ExceptionWithCode('the answer', 42)
     job = Job.add_job(identifier='job:1', queue_name='test')
     error1 = Error.add_error(queue_name='test', job=job, error=e)
     self.assertEqual(list(Error.collection()), [error1.pk.get()])
     Error.add_error(queue_name='test', job=job, error=e)
     self.assertEqual(len(Error.collection()), 2)
Пример #3
0
    def test_job_error_method_should_be_called(self):
        class ExceptionWithCode(Exception):
            def __init__(self, message, code):
                super(ExceptionWithCode, self).__init__(message)
                self.message = message
                self.code = code

        def callback(job, queue):
            raise ExceptionWithCode('foobar', 42)

        job1 = Job.add_job(identifier='job:1', queue_name='test')
        queue = Queue.get_queue(name='test')
        worker = Worker(name='test', max_loops=1)  # no callback
        worker.run()

        self.assertEqual(job1.status.hget(), STATUSES.ERROR)
        self.assertIn(job1.get_pk(), queue.errors.lmembers())
        self.assertEqual(len(Error.collection()), 1)
        error = Error.get(identifier='job:1')
        self.assertEqual(error.message.hget(), 'You must implement your own action')
        self.assertEqual(error.code.hget(), None)

        job2 = Job.add_job(identifier='job:2', queue_name='test')
        queue = Queue.get_queue(name='test')
        worker = Worker(name='test', max_loops=1, callback=callback)  # callback with exception
        worker.run()

        self.assertEqual(job2.status.hget(), STATUSES.ERROR)
        self.assertIn(job2.get_pk(), queue.errors.lmembers())
        self.assertEqual(len(Error.collection()), 2)
        error = Error.get(identifier='job:2')
        self.assertEqual(error.message.hget(), 'foobar')
        self.assertEqual(error.code.hget(), '42')
Пример #4
0
    def test_add_error_should_store_the_name_of_the_exception(self):
        e = Exception('foo')
        job = Job.add_job(identifier='job:1', queue_name='test')
        error = Error.add_error(queue_name='test', job=job, error=e)
        self.assertEqual(error.type.hget(), 'Exception')

        e = ErrorTests.ExceptionWithCode('the answer', 42)
        error = Error.add_error(queue_name='test', job=job, error=e)
        self.assertEqual(error.type.hget(), 'ExceptionWithCode')
Пример #5
0
    def test_add_error_should_store_the_name_of_the_exception(self):
        e = Exception('foo')
        job = Job.add_job(identifier='job:1', queue_name='test')
        error = Error.add_error(queue_name='test', job=job, error=e)
        self.assertEqual(error.type.hget(), 'Exception')

        e = ErrorTests.ExceptionWithCode('the answer', 42)
        error = Error.add_error(queue_name='test', job=job, error=e)
        self.assertEqual(error.type.hget(), 'ExceptionWithCode')
Пример #6
0
 def test_new_error_save_date_and_time_appart(self):
     e = ErrorTests.ExceptionWithCode('the answer', 42)
     when = datetime(2012, 9, 29, 22, 58, 56)
     job = Job.add_job(identifier='job:1', queue_name='test')
     error = Error.add_error(queue_name='test', job=job, error=e, when=when)
     self.assertEqual(error.date.hget(), '2012-09-29')
     self.assertEqual(error.time.hget(), '22:58:56')
     self.assertEqual(error.datetime, when)
     self.assertEqual(list(Error.collection(date='2012-09-29')), [error.pk.get()])
Пример #7
0
 def test_new_error_save_job_pk_and_identifier_appart(self):
     e = ErrorTests.ExceptionWithCode('the answer', 42)
     when = datetime(2012, 9, 29, 22, 58, 56)
     job = Job.add_job(identifier='job:1', queue_name='test')
     error = Error.add_error(queue_name='test', job=job, error=e, when=when)
     self.assertEqual(error.job_model_repr.hget(), job.get_model_repr())
     self.assertEqual(error.job_pk.hget(), job.pk.get())
     self.assertEqual(error.identifier.hget(), 'job:1')
     self.assertEqual(list(Error.collection(job_pk=job.pk.get())), [error.pk.get()])
     self.assertEqual(list(Error.collection(identifier=job.identifier.hget())), [error.pk.get()])
Пример #8
0
 def test_new_error_save_job_pk_and_identifier_appart(self):
     e = ErrorTests.ExceptionWithCode('the answer', 42)
     when = datetime(2012, 9, 29, 22, 58, 56)
     job = Job.add_job(identifier='job:1', queue_name='test')
     error = Error.add_error(queue_name='test', job=job, error=e, when=when)
     self.assertEqual(error.job_model_repr.hget(), job.get_model_repr())
     self.assertEqual(error.job_pk.hget(), job.pk.get())
     self.assertEqual(error.identifier.hget(), 'job:1')
     self.assertListEqual(list(Error.collection(job_pk=job.pk.get())), [error.pk.get()])
     self.assertListEqual(list(Error.collection(identifier=job.identifier.hget())), [error.pk.get()])
Пример #9
0
 def test_new_error_save_date_and_time_appart(self):
     e = ErrorTests.ExceptionWithCode('the answer', 42)
     when = datetime(2012, 9, 29, 22, 58, 56)
     job = Job.add_job(identifier='job:1', queue_name='test')
     error = Error.add_error(queue_name='test', job=job, error=e, when=when)
     self.assertEqual(error.date.hget(), '2012-09-29')
     self.assertEqual(error.time.hget(), '22:58:56')
     self.assertEqual(error.date_time.hget(), '2012-09-29 22:58:56')
     self.assertEqual(error.datetime, when)
     self.assertListEqual(list(Error.collection(date='2012-09-29')), [error.pk.get()])
     self.assertListEqual(list(Error.collection(date_time__date__gt='2012-09-01')), [error.pk.get()])
Пример #10
0
    def test_add_error_should_store_the_traceback(self):
        job = Job.add_job(identifier='job:1', queue_name='test')

        try:
            foo = bar
        except Exception as e:
            trace = traceback.format_exc()

            error = Error.add_error(queue_name='test', job=job, error=e, trace=trace)
            self.assertRegexpMatches(error.traceback.hget(), "NameError:[^\n]+bar[^\n]+ is not defined")
Пример #11
0
    def test_add_error_should_store_the_traceback(self):
        job = Job.add_job(identifier='job:1', queue_name='test')

        try:
            foo = bar
        except Exception as e:
            trace = traceback.format_exc()

            error = Error.add_error(queue_name='test', job=job, error=e, trace=trace)
            self.assertRegexpMatches(error.traceback.hget(), "NameError:[^\n]+bar[^\n]+ is not defined")
Пример #12
0
 def test_add_error_can_accept_an_exception_without_code(self):
     e = Exception('no code')
     job = Job.add_job(identifier='job:1', queue_name='test')
     error = Error.add_error(queue_name='test', job=job, error=e)
     self.assertEqual(error.code.hget(), None)
Пример #13
0
 def test_add_error_can_accept_an_exception_without_code(self):
     e = Exception('no code')
     job = Job.add_job(identifier='job:1', queue_name='test')
     error = Error.add_error(queue_name='test', job=job, error=e)
     self.assertEqual(error.code.hget(), None)