Fixes T104
Details
Details
Tests included
Diff Detail
Diff Detail
- Lint
Lint Skipped - Unit
Unit Tests Skipped
Lint Skipped |
Unit Tests Skipped |
Path | |||
---|---|---|---|
M | jobtriggers/koji_msg.py (5 lines) | ||
M | testing/test_bodhi_trigger.py (26 lines) | ||
M | testing/test_koji_trigger.py (41 lines) |
Commit | Tree | Parents | Author | Summary | Date |
---|---|---|---|---|---|
c6fb3dc1b011 | 4b72912d0359 | 76a39182de78 | Martin Krizek | Filter incoming koji tag only for '*-pending' (Show More…) | Mar 24 2014, 9:55 AM |
Show All 20 Lines | 20 | def __init__(self, hub): | |||
---|---|---|---|---|---|
21 | self.hub = hub | 21 | self.hub = hub | ||
22 | 22 | | |||
23 | super(KojiJobTrigger, self).__init__(hub) | 23 | super(KojiJobTrigger, self).__init__(hub) | ||
24 | self.trigger = triggers.StreamTrigger(hub.config) | 24 | self.trigger = triggers.StreamTrigger(hub.config) | ||
25 | 25 | | |||
26 | def consume(self, message): | 26 | def consume(self, message): | ||
27 | usable_message = fedmsg.encoding.loads(message.body) | 27 | usable_message = fedmsg.encoding.loads(message.body) | ||
28 | 28 | | |||
29 | tag = usable_message['msg']['tag'] | ||||
30 | | ||||
31 | if not tag.endswith('pending'): | ||||
32 | return | ||||
33 | | ||||
29 | buildname = usable_message['msg']['name'] | 34 | buildname = usable_message['msg']['name'] | ||
30 | buildversion = usable_message['msg']['version'] | 35 | buildversion = usable_message['msg']['version'] | ||
31 | buildrelease = usable_message['msg']['release'] | 36 | buildrelease = usable_message['msg']['release'] | ||
32 | 37 | | |||
33 | envr = "%s-%s-%s" % (buildname, buildversion, buildrelease) | 38 | envr = "%s-%s-%s" % (buildname, buildversion, buildrelease) | ||
34 | 39 | | |||
35 | log.info('forcing build for %s', envr) | 40 | log.info('forcing build for %s', envr) | ||
36 | 41 | | |||
37 | self.trigger.trigger_job(envr, UNIT_TYPE, 'rpmlint') | 42 | self.trigger.trigger_job(envr, UNIT_TYPE, 'rpmlint') | ||
38 | 43 | | |||
39 | log.info('build forced for %s', envr) | 44 | log.info('build forced for %s', envr) |
1 | from dingus import Dingus | 1 | from dingus import Dingus | ||
---|---|---|---|---|---|
2 | from bunch import Bunch | 2 | from bunch import Bunch | ||
3 | 3 | | |||
4 | from jobtriggers import bodhi_msg | 4 | from jobtriggers import bodhi_msg | ||
5 | 5 | | |||
6 | 6 | | |||
7 | class TestBodhiJobTrigger(): | 7 | class TestBodhiJobTrigger(): | ||
8 | def setup_method(self, method): | 8 | def setup_method(self, method): | ||
9 | self.ref_updatetitle = 'foo' | 9 | self.ref_updatetitle = 'foo' | ||
10 | self.ref_topic = 'org.fedoraproject.prod.bodhi.update.request.stable' | ||||
10 | 11 | | |||
11 | self.ref_message = Bunch(body='{"msg": {"agent": "lmacken",\ | 12 | self._create_msg(self.ref_updatetitle, self.ref_topic) | ||
12 | "update": {"submitter": "lmacken", "title": "%s"}},\ | | |||
13 | "topic": "org.fedoraproject.prod.bodhi.update.request.stable"}' % | | |||
14 | (self.ref_updatetitle)) | | |||
15 | 13 | | |||
16 | self.ref_config = { | 14 | self.ref_config = { | ||
17 | 'taskotron.buildbot': { | 15 | 'taskotron.buildbot': { | ||
18 | 'username': "username", | 16 | 'username': "username", | ||
19 | 'password': "password", | 17 | 'password': "password", | ||
20 | 'url': "http://localhost/buildbot/", | 18 | 'url': "http://localhost/buildbot/", | ||
21 | }, | 19 | }, | ||
22 | } | 20 | } | ||
23 | self.stub_hub = Dingus(config__returns = self.ref_config) | 21 | self.stub_hub = Dingus(config__returns = self.ref_config) | ||
24 | 22 | | |||
23 | def _create_msg(self, ref_updatetitle, ref_topic): | ||||
24 | self.ref_message = Bunch(body='{"msg": {"agent": "lmacken",\ | ||||
25 | "update": {"submitter": "lmacken", "title": "%s"}},\ | ||||
26 | "topic": "%s"}' % | ||||
27 | (ref_updatetitle, ref_topic)) | ||||
28 | | ||||
25 | def test_consume(self, monkeypatch): | 29 | def test_consume(self, monkeypatch): | ||
26 | self.helper = bodhi_msg.BodhiJobTrigger(self.stub_hub) | 30 | self.helper = bodhi_msg.BodhiJobTrigger(self.stub_hub) | ||
27 | 31 | | |||
28 | monkeypatch.setattr(self.helper, 'trigger', Dingus()) | 32 | monkeypatch.setattr(self.helper, 'trigger', Dingus()) | ||
29 | 33 | | |||
30 | self.helper.consume(self.ref_message) | 34 | self.helper.consume(self.ref_message) | ||
31 | 35 | | |||
32 | trigger_calls = self.helper.trigger.trigger_job.calls() | 36 | trigger_calls = self.helper.trigger.trigger_job.calls() | ||
33 | requested_updatetitle = trigger_calls[0][1][0] | 37 | requested_updatetitle = trigger_calls[0][1][0] | ||
34 | requested_unit_type = trigger_calls[0][1][1] | 38 | requested_unit_type = trigger_calls[0][1][1] | ||
35 | 39 | | |||
36 | assert requested_updatetitle == self.ref_updatetitle | 40 | assert requested_updatetitle == self.ref_updatetitle | ||
37 | assert requested_unit_type == bodhi_msg.UNIT_TYPE | 41 | assert requested_unit_type == bodhi_msg.UNIT_TYPE | ||
42 | | ||||
43 | def test_consume_notwatched_topic(self, monkeypatch): | ||||
44 | ref_topic = 'org.fedoraproject.pro.bodhi.update.request.randomtopic' | ||||
45 | self._create_msg(self.ref_updatetitle, ref_topic) | ||||
46 | | ||||
47 | self.helper = bodhi_msg.BodhiJobTrigger(self.stub_hub) | ||||
48 | | ||||
49 | monkeypatch.setattr(self.helper, 'trigger', Dingus()) | ||||
50 | | ||||
51 | self.helper.consume(self.ref_message) | ||||
52 | | ||||
53 | trigger_calls = self.helper.trigger.trigger_job.calls() | ||||
54 | | ||||
55 | assert trigger_calls == [] |
1 | from dingus import Dingus | 1 | from dingus import Dingus | ||
---|---|---|---|---|---|
2 | from bunch import Bunch | 2 | from bunch import Bunch | ||
3 | 3 | | |||
4 | from jobtriggers import koji_msg | 4 | from jobtriggers import koji_msg | ||
5 | 5 | | |||
6 | 6 | | |||
7 | class TestKojiJobTrigger(): | 7 | class TestKojiJobTrigger(): | ||
8 | def setup_method(self, method): | 8 | def setup_method(self, method): | ||
9 | self.ref_name = 'stage' | 9 | self.ref_name = 'stage' | ||
10 | self.ref_version = '4.1.1' | 10 | self.ref_version = '4.1.1' | ||
11 | self.ref_release = '3.fc18' | 11 | self.ref_release = '3.fc18' | ||
12 | self.ref_nvr = "%s-%s-%s" % (self.ref_name, self.ref_version, self.ref_release) | 12 | self.ref_nvr = '%s-%s-%s' % (self.ref_name, self.ref_version, self.ref_release) | ||
13 | self.ref_tag = 'f18-updates-testing-pending' | ||||
13 | 14 | | |||
15 | self._create_msg(self.ref_name, self.ref_release, self.ref_tag, self.ref_version) | ||||
16 | | ||||
17 | self.ref_config = { | ||||
18 | 'taskotron.buildbot': { | ||||
19 | 'username': "username", | ||||
20 | 'password': "password", | ||||
21 | 'url': "http://localhost/buildbot/", | ||||
22 | }, | ||||
23 | } | ||||
24 | self.stub_hub = Dingus(config__returns = self.ref_config) | ||||
25 | | ||||
26 | def _create_msg(self, ref_name, ref_release, ref_tag, ref_version): | ||||
14 | self.ref_message = Bunch(body='{"i": 1,\ | 27 | self.ref_message = Bunch(body='{"i": 1,\ | ||
15 | "msg": {"name": "%s",\ | 28 | "msg": {"name": "%s",\ | ||
16 | "owner": "ralph",\ | 29 | "owner": "ralph",\ | ||
17 | "release": "%s",\ | 30 | "release": "%s",\ | ||
18 | "tag": "f18-updates-testing-pending",\ | 31 | "tag": "%s",\ | ||
19 | "tag_id": 216,\ | 32 | "tag_id": 216,\ | ||
20 | "user": "bodhi",\ | 33 | "user": "bodhi",\ | ||
21 | "version": "%s"},\ | 34 | "version": "%s"},\ | ||
22 | "timestamp": 1359603469.21164,\ | 35 | "timestamp": 1359603469.21164,\ | ||
23 | "topic": "org.fedoraproject.prod.buildsys.tag",\ | 36 | "topic": "org.fedoraproject.prod.buildsys.tag",\ | ||
24 | "username": "apache"}' % | 37 | "username": "apache"}' % | ||
25 | (self.ref_name, self.ref_release, self.ref_version)) | 38 | (ref_name, ref_release, ref_tag, ref_version)) | ||
26 | self.ref_config = { | | |||
27 | 'taskotron.buildbot': { | | |||
28 | 'username': "username", | | |||
29 | 'password': "password", | | |||
30 | 'url': "http://localhost/buildbot/", | | |||
31 | }, | | |||
32 | } | | |||
33 | self.stub_hub = Dingus(config__returns = self.ref_config) | | |||
34 | 39 | | |||
35 | def test_consume(self, monkeypatch): | 40 | def test_consume(self, monkeypatch): | ||
36 | self.helper = koji_msg.KojiJobTrigger(self.stub_hub) | 41 | self.helper = koji_msg.KojiJobTrigger(self.stub_hub) | ||
37 | 42 | | |||
38 | monkeypatch.setattr(self.helper, 'trigger', Dingus()) | 43 | monkeypatch.setattr(self.helper, 'trigger', Dingus()) | ||
39 | 44 | | |||
40 | self.helper.consume(self.ref_message) | 45 | self.helper.consume(self.ref_message) | ||
41 | 46 | | |||
42 | trigger_calls = self.helper.trigger.trigger_job.calls() | 47 | trigger_calls = self.helper.trigger.trigger_job.calls() | ||
43 | requested_nvr = trigger_calls[0][1][0] | 48 | requested_nvr = trigger_calls[0][1][0] | ||
44 | requested_unit_type = trigger_calls[0][1][1] | 49 | requested_unit_type = trigger_calls[0][1][1] | ||
45 | 50 | | |||
46 | assert requested_nvr == self.ref_nvr | 51 | assert requested_nvr == self.ref_nvr | ||
47 | assert requested_unit_type == koji_msg.UNIT_TYPE | 52 | assert requested_unit_type == koji_msg.UNIT_TYPE | ||
53 | | ||||
54 | def test_consume_notwatched_tag(self, monkeypatch): | ||||
55 | ref_tag = 'f18-randomtag' | ||||
56 | self._create_msg(self.ref_name, self.ref_release, ref_tag, self.ref_version) | ||||
57 | | ||||
58 | self.helper = koji_msg.KojiJobTrigger(self.stub_hub) | ||||
59 | | ||||
60 | monkeypatch.setattr(self.helper, 'trigger', Dingus()) | ||||
61 | | ||||
62 | self.helper.consume(self.ref_message) | ||||
63 | | ||||
64 | trigger_calls = self.helper.trigger.trigger_job.calls() | ||||
65 | | ||||
66 | assert trigger_calls == [] |