def test_existing_job(self): ''' Test cancelling an existing job. ''' job1 = self.enqueue(queue=u'q') job2 = self.enqueue(queue=u'q') with helpers.recorded_logs(u'ckan.logic') as logs: helpers.call_action(u'job_cancel', id=job1.id) all_jobs = self.all_jobs() eq(len(all_jobs), 1) eq(all_jobs[0], job2) assert_raises(KeyError, jobs.job_from_id, job1.id) logs.assert_log(u'info', re.escape(job1.id))
def test_existing_job(self): """ Test cancelling an existing job. """ job1 = self.enqueue(queue=u"q") job2 = self.enqueue(queue=u"q") with helpers.recorded_logs(u"ckan.logic") as logs: helpers.call_action(u"job_cancel", id=job1.id) all_jobs = self.all_jobs() assert len(all_jobs) == 1 assert all_jobs[0] == job2 with pytest.raises(KeyError): jobs.job_from_id(job1.id) logs.assert_log(u"info", re.escape(job1.id))
def test_specific_queues(self): """ Test clearing specific queues. """ job1 = self.enqueue() job2 = self.enqueue(queue=u"q1") job3 = self.enqueue(queue=u"q1") job4 = self.enqueue(queue=u"q2") with helpers.recorded_logs(u"ckan.logic") as logs: queues = helpers.call_action(u"job_clear", queues=[u"q1", u"q2"]) assert {u"q1", u"q2"} == set(queues) all_jobs = self.all_jobs() assert len(all_jobs) == 1 assert all_jobs[0] == job1 logs.assert_log(u"info", u"q1") logs.assert_log(u"info", u"q2")
def test_worker_exception_logging(self): u""" Test that exceptions in a job are logged. """ self.enqueue(failing_job) worker = jobs.Worker() # Prevent worker from forking so that we can capture log # messages from within the job def execute_job(*args, **kwargs): return worker.perform_job(*args, **kwargs) worker.execute_job = execute_job with recorded_logs(u"ckan.lib.jobs") as logs: worker.work(burst=True) logs.assert_log(u"error", u"JOB FAILURE")
def test_worker_exception_logging(self): u''' Test that exceptions in a job are logged. ''' job = self.enqueue(failing_job) worker = jobs.Worker() # Prevent worker from forking so that we can capture log # messages from within the job def execute_job(*args, **kwargs): return worker.perform_job(*args, **kwargs) worker.execute_job = execute_job with recorded_logs(u'ckan.lib.jobs') as logs: worker.work(burst=True) logs.assert_log(u'error', u'JOB FAILURE')
def test_specific_queues(self): ''' Test clearing specific queues. ''' job1 = self.enqueue() job2 = self.enqueue(queue=u'q1') job3 = self.enqueue(queue=u'q1') job4 = self.enqueue(queue=u'q2') with helpers.recorded_logs(u'ckan.logic') as logs: queues = helpers.call_action(u'job_clear', queues=[u'q1', u'q2']) eq({u'q1', u'q2'}, set(queues)) all_jobs = self.all_jobs() eq(len(all_jobs), 1) eq(all_jobs[0], job1) logs.assert_log(u'info', u'q1') logs.assert_log(u'info', u'q2')
def test_worker_logging_lifecycle(self): u""" Test that a logger's lifecycle is logged. """ queue = u"my_queue" job = self.enqueue(queue=queue) with recorded_logs(u"ckan.lib.jobs") as logs: worker = jobs.Worker([queue]) worker.work(burst=True) messages = logs.messages[u"info"] # We expect 4 log messages: Worker start, job start, job end, # worker end. assert len(messages) == 4 assert worker.key in messages[0] assert queue in messages[0] assert worker.key in messages[1] assert job.id in messages[1] assert worker.key in messages[2] assert job.id in messages[2] assert worker.key in messages[3]
def test_worker_logging_lifecycle(self): u''' Test that a logger's lifecycle is logged. ''' queue = u'my_queue' job = self.enqueue(queue=queue) with recorded_logs(u'ckan.lib.jobs') as logs: worker = jobs.Worker([queue]) worker.work(burst=True) messages = logs.messages[u'info'] # We expect 4 log messages: Worker start, job start, job end, # worker end. assert_equal(len(messages), 4) ok_(worker.key in messages[0]) ok_(queue in messages[0]) ok_(worker.key in messages[1]) ok_(job.id in messages[1]) ok_(worker.key in messages[2]) ok_(job.id in messages[2]) ok_(worker.key in messages[3])