Beispiel #1
0
 def test_new_job(self):
     """
     Create a job
     """
     test_job = Job(self.method)
     self.assertEqual(test_job.func, self.method)
Beispiel #2
0
 def test_set_failed(self):
     job_a = Job(self.method)
     job_a.set_failed(exc_info="failed test")
     self.assertEquals(job_a.state, FAILED)
     self.assertEquals(job_a.exc_info, "failed test")
Beispiel #3
0
 def test_store(self):
     test_job = Job(self.method)
     test_job.store()
     stored = self.queue_job.search([("uuid", "=", test_job.uuid)])
     self.assertEqual(len(stored), 1)
Beispiel #4
0
 def _perform_created_job(self):
     for job in self.created_jobs:
         Job.load(self.env, job.uuid).perform()
Beispiel #5
0
 def test_invalid_function(self):
     with self.assertRaises(TypeError):
         Job(1)
Beispiel #6
0
 def test_default_channel_no_xml(self):
     """Channel on job is root if there is no queue.job.function record"""
     test_job = Job(self.env["res.users"].browse)
     test_job.store()
     stored = test_job.db_record()
     self.assertEquals(stored.channel, "root")
Beispiel #7
0
 def test_perform_args(self):
     test_job = Job(self.method, args=("o", "k"), kwargs={"c": "!"})
     result = test_job.perform()
     self.assertEqual(result, (("o", "k"), {"c": "!"}))
Beispiel #8
0
 def test_perform_args(self):
     test_job = Job(self.method, args=('o', 'k'), kwargs={'c': '!'})
     result = test_job.perform()
     self.assertEqual(result, (('o', 'k'), {'c': '!'}))
 def perform_jobs(self, jobs):
     for job in jobs.search_created():
         Job.load(self.env, job.uuid).perform()
Beispiel #10
0
 def test_on_model_method(self):
     job_ = Job(self.env['test.queue.job'].testing_method)
     self.assertEquals(job_.model_name, 'test.queue.job')
     self.assertEquals(job_.method_name, 'testing_method')
Beispiel #11
0
 def _create_job(self):
     test_job = Job(self.method)
     test_job.store()
     stored = Job.db_record_from_uuid(self.env, test_job.uuid)
     self.assertEqual(len(stored), 1)
     return stored
Beispiel #12
0
    def test_channel_on_job(self):
        self.env['queue.job.function'].search([]).unlink()
        self.env['queue.job.channel'].search([('name', '!=', 'root')]).unlink()

        method = self.env['test.queue.channel'].job_a
        self.env['queue.job.function']._register_job(method)
        path_a = '<%s>.%s' % (method.__self__.__class__._name, method.__name__)
        job_func = self.function_model.search([('name', '=', path_a)])
        self.assertEquals(job_func.channel, 'root')

        test_job = Job(method)
        test_job.store()
        stored = self.env['queue.job'].search([('uuid', '=', test_job.uuid)])
        self.assertEquals(stored.channel, 'root')
        job_read = Job.load(self.env, test_job.uuid)
        self.assertEquals(job_read.channel, 'root')

        channel = self.channel_model.create({
            'name': 'sub',
            'parent_id': self.root_channel.id
        })
        job_func.channel_id = channel

        test_job = Job(method)
        test_job.store()
        stored = self.env['queue.job'].search([('uuid', '=', test_job.uuid)])
        self.assertEquals(stored.channel, 'root.sub')

        # it's also possible to override the channel
        test_job = Job(method, channel='root.sub.sub.sub')
        test_job.store()
        stored = self.env['queue.job'].search([('uuid', '=', test_job.uuid)])
        self.assertEquals(stored.channel, test_job.channel)
Beispiel #13
0
 def _perform_job(self, job):
     Job.load(self.env, job.uuid).perform()
Beispiel #14
0
 def test_infinite_retryable_error(self):
     test_job = Job(self.method, kwargs={"raise_retry": True}, max_retries=0)
     self.assertEqual(test_job.retry, 0)
     with self.assertRaises(RetryableJobError):
         test_job.perform()
     self.assertEqual(test_job.retry, 1)
Beispiel #15
0
 def test_retry_pattern(self):
     """ When we specify a retry pattern, the eta must follow it"""
     datetime_path = "odoo.addons.queue_job.job.datetime"
     method = self.env["test.queue.job"].job_with_retry_pattern
     with mock.patch(datetime_path, autospec=True) as mock_datetime:
         mock_datetime.now.return_value = datetime(2015, 6, 1, 15, 10, 0)
         test_job = Job(method, max_retries=0)
         test_job.retry += 1
         test_job.postpone(self.env)
         self.assertEqual(test_job.retry, 1)
         self.assertEqual(test_job.eta, datetime(2015, 6, 1, 15, 11, 0))
         test_job.retry += 1
         test_job.postpone(self.env)
         self.assertEqual(test_job.retry, 2)
         self.assertEqual(test_job.eta, datetime(2015, 6, 1, 15, 13, 0))
         test_job.retry += 1
         test_job.postpone(self.env)
         self.assertEqual(test_job.retry, 3)
         self.assertEqual(test_job.eta, datetime(2015, 6, 1, 15, 10, 10))
         test_job.retry += 1
         test_job.postpone(self.env)
         self.assertEqual(test_job.retry, 4)
         self.assertEqual(test_job.eta, datetime(2015, 6, 1, 15, 10, 10))
         test_job.retry += 1
         test_job.postpone(self.env)
         self.assertEqual(test_job.retry, 5)
         self.assertEqual(test_job.eta, datetime(2015, 6, 1, 15, 15, 0))
Beispiel #16
0
 def test_on_model_method(self):
     job_ = Job(self.env["test.queue.job"].testing_method)
     self.assertEquals(job_.model_name, "test.queue.job")
     self.assertEquals(job_.method_name, "testing_method")
Beispiel #17
0
 def test_eta(self):
     """ When an `eta` is datetime, it uses it """
     now = datetime.now()
     method = self.env["res.users"].mapped
     job_a = Job(method, eta=now)
     self.assertEqual(job_a.eta, now)
Beispiel #18
0
    def test_channel_on_job(self):
        method = self.env["test.queue.channel"].job_a
        path_a = self.env["queue.job.function"].job_function_name(
            "test.queue.channel", "job_a")
        job_func = self.function_model.search([("name", "=", path_a)])

        self.assertEquals(job_func.channel, "root")

        test_job = Job(method)
        test_job.store()
        stored = test_job.db_record()
        self.assertEquals(stored.channel, "root")
        job_read = Job.load(self.env, test_job.uuid)
        self.assertEquals(job_read.channel, "root")

        sub_channel = self.env.ref("test_queue_job.channel_sub")
        job_func.channel_id = sub_channel

        test_job = Job(method)
        test_job.store()
        stored = test_job.db_record()
        self.assertEquals(stored.channel, "root.sub")

        # it's also possible to override the channel
        test_job = Job(method, channel="root.sub")
        test_job.store()
        stored = test_job.db_record()
        self.assertEquals(stored.channel, test_job.channel)