Merge lp:~cjwatson/launchpad/webhook-logging into lp:launchpad

Proposed by Colin Watson
Status: Merged
Merged at revision: 17848
Proposed branch: lp:~cjwatson/launchpad/webhook-logging
Merge into: lp:launchpad
Diff against target: 66 lines (+34/-0)
3 files modified
database/schema/security.cfg (+6/-0)
lib/lp/services/webhooks/model.py (+7/-0)
lib/lp/services/webhooks/tests/test_job.py (+21/-0)
To merge this branch: bzr merge lp:~cjwatson/launchpad/webhook-logging
Reviewer Review Type Date Requested Status
William Grant code Approve
Review via email: mp+277280@code.launchpad.net

Commit message

Give webhook jobs a more informative __repr__.

Description of the change

Give webhook jobs a more informative __repr__. "Running <lp.services.webhooks.model.WebhookDeliveryJob object at <0xblah>" is not as helpful for debugging as it could be.

To post a comment you must log in.
Revision history for this message
William Grant (wgrant) :
review: Approve (code)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'database/schema/security.cfg'
--- database/schema/security.cfg 2015-10-28 17:32:49 +0000
+++ database/schema/security.cfg 2015-11-11 18:20:52 +0000
@@ -2492,6 +2492,12 @@
2492[webhookrunner]2492[webhookrunner]
2493type=user2493type=user
2494groups=script2494groups=script
2495public.branch = SELECT
2496public.distribution = SELECT
2497public.gitrepository = SELECT
2495public.job = SELECT, UPDATE2498public.job = SELECT, UPDATE
2499public.person = SELECT
2500public.product = SELECT
2501public.sourcepackagename = SELECT
2496public.webhook = SELECT2502public.webhook = SELECT
2497public.webhookjob = SELECT, UPDATE2503public.webhookjob = SELECT, UPDATE
24982504
=== modified file 'lib/lp/services/webhooks/model.py'
--- lib/lp/services/webhooks/model.py 2015-10-14 16:03:01 +0000
+++ lib/lp/services/webhooks/model.py 2015-11-11 18:20:52 +0000
@@ -341,6 +341,13 @@
341 def __init__(self, webhook_job):341 def __init__(self, webhook_job):
342 self.context = webhook_job342 self.context = webhook_job
343343
344 def __repr__(self):
345 return "<%(job_class)s for webhook %(webhook_id)d on %(target)r>" % {
346 "job_class": self.__class__.__name__,
347 "webhook_id": self.context.webhook_id,
348 "target": self.context.webhook.target,
349 }
350
344 @classmethod351 @classmethod
345 def iterReady(cls):352 def iterReady(cls):
346 """See `IJobSource`."""353 """See `IJobSource`."""
347354
=== modified file 'lib/lp/services/webhooks/tests/test_job.py'
--- lib/lp/services/webhooks/tests/test_job.py 2015-09-01 05:55:01 +0000
+++ lib/lp/services/webhooks/tests/test_job.py 2015-11-11 18:20:52 +0000
@@ -313,6 +313,27 @@
313 MatchesStructure.byEquality(313 MatchesStructure.byEquality(
314 webhook=hook, event_type='test', payload={'foo': 'bar'}))314 webhook=hook, event_type='test', payload={'foo': 'bar'}))
315315
316 def test_gitrepository__repr__(self):
317 # `WebhookDeliveryJob` objects for Git repositories have an
318 # informative __repr__.
319 repository = self.factory.makeGitRepository()
320 hook = self.factory.makeWebhook(target=repository)
321 job = WebhookDeliveryJob.create(hook, 'test', payload={'foo': 'bar'})
322 self.assertEqual(
323 "<WebhookDeliveryJob for webhook %d on %r>" % (
324 hook.id, repository),
325 repr(job))
326
327 def test_branch__repr__(self):
328 # `WebhookDeliveryJob` objects for Bazaar branches have an
329 # informative __repr__.
330 branch = self.factory.makeAnyBranch()
331 hook = self.factory.makeWebhook(target=branch)
332 job = WebhookDeliveryJob.create(hook, 'test', payload={'foo': 'bar'})
333 self.assertEqual(
334 "<WebhookDeliveryJob for webhook %d on %r>" % (hook.id, branch),
335 repr(job))
336
316 def test_short_lease_and_timeout(self):337 def test_short_lease_and_timeout(self):
317 # Webhook jobs have a request timeout of 30 seconds, a celery338 # Webhook jobs have a request timeout of 30 seconds, a celery
318 # timeout of 45 seconds, and a lease of 60 seconds, to give339 # timeout of 45 seconds, and a lease of 60 seconds, to give