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
1=== modified file 'database/schema/security.cfg'
2--- database/schema/security.cfg 2015-10-28 17:32:49 +0000
3+++ database/schema/security.cfg 2015-11-11 18:20:52 +0000
4@@ -2492,6 +2492,12 @@
5 [webhookrunner]
6 type=user
7 groups=script
8+public.branch = SELECT
9+public.distribution = SELECT
10+public.gitrepository = SELECT
11 public.job = SELECT, UPDATE
12+public.person = SELECT
13+public.product = SELECT
14+public.sourcepackagename = SELECT
15 public.webhook = SELECT
16 public.webhookjob = SELECT, UPDATE
17
18=== modified file 'lib/lp/services/webhooks/model.py'
19--- lib/lp/services/webhooks/model.py 2015-10-14 16:03:01 +0000
20+++ lib/lp/services/webhooks/model.py 2015-11-11 18:20:52 +0000
21@@ -341,6 +341,13 @@
22 def __init__(self, webhook_job):
23 self.context = webhook_job
24
25+ def __repr__(self):
26+ return "<%(job_class)s for webhook %(webhook_id)d on %(target)r>" % {
27+ "job_class": self.__class__.__name__,
28+ "webhook_id": self.context.webhook_id,
29+ "target": self.context.webhook.target,
30+ }
31+
32 @classmethod
33 def iterReady(cls):
34 """See `IJobSource`."""
35
36=== modified file 'lib/lp/services/webhooks/tests/test_job.py'
37--- lib/lp/services/webhooks/tests/test_job.py 2015-09-01 05:55:01 +0000
38+++ lib/lp/services/webhooks/tests/test_job.py 2015-11-11 18:20:52 +0000
39@@ -313,6 +313,27 @@
40 MatchesStructure.byEquality(
41 webhook=hook, event_type='test', payload={'foo': 'bar'}))
42
43+ def test_gitrepository__repr__(self):
44+ # `WebhookDeliveryJob` objects for Git repositories have an
45+ # informative __repr__.
46+ repository = self.factory.makeGitRepository()
47+ hook = self.factory.makeWebhook(target=repository)
48+ job = WebhookDeliveryJob.create(hook, 'test', payload={'foo': 'bar'})
49+ self.assertEqual(
50+ "<WebhookDeliveryJob for webhook %d on %r>" % (
51+ hook.id, repository),
52+ repr(job))
53+
54+ def test_branch__repr__(self):
55+ # `WebhookDeliveryJob` objects for Bazaar branches have an
56+ # informative __repr__.
57+ branch = self.factory.makeAnyBranch()
58+ hook = self.factory.makeWebhook(target=branch)
59+ job = WebhookDeliveryJob.create(hook, 'test', payload={'foo': 'bar'})
60+ self.assertEqual(
61+ "<WebhookDeliveryJob for webhook %d on %r>" % (hook.id, branch),
62+ repr(job))
63+
64 def test_short_lease_and_timeout(self):
65 # Webhook jobs have a request timeout of 30 seconds, a celery
66 # timeout of 45 seconds, and a lease of 60 seconds, to give