From ba22e1f6860ae33e753e1a2239bdc114ab9341cd Mon Sep 17 00:00:00 2001 From: Qixiang Wan Date: Fri, 3 Jan 2020 15:55:26 +0800 Subject: [PATCH] Ignore koji_build_change event without task_id --- module_build_service/scheduler/consumer.py | 11 ++++++++++- tests/test_scheduler/test_consumer.py | 23 ++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/module_build_service/scheduler/consumer.py b/module_build_service/scheduler/consumer.py index ab40d85f..84511f9a 100644 --- a/module_build_service/scheduler/consumer.py +++ b/module_build_service/scheduler/consumer.py @@ -130,6 +130,14 @@ class MBSConsumer(fedmsg.consumers.FedmsgConsumer): # through crypto validation. super(MBSConsumer, self).validate(message) + def validate_event(self, event): + # task_id is required for koji_build_change event + if event["event"] == "koji_build_change" and event["task_id"] is None: + raise IgnoreMessage( + "Ignore koji_build_change event from message {}, which has a null task_id".format( + event["msg_id"]) + ) + def consume(self, message): monitor.messaging_rx_counter.inc() @@ -143,8 +151,9 @@ class MBSConsumer(fedmsg.consumers.FedmsgConsumer): else: try: event_info = self.get_abstracted_event_info(message) + self.validate_event(event_info) except IgnoreMessage as e: - log.warning(str(e)) + log.debug(str(e)) return if event_info is None: diff --git a/tests/test_scheduler/test_consumer.py b/tests/test_scheduler/test_consumer.py index b8ab6af0..3a2d7f32 100644 --- a/tests/test_scheduler/test_consumer.py +++ b/tests/test_scheduler/test_consumer.py @@ -76,3 +76,26 @@ class TestConsumer: assert event_info["event"] == events.KOJI_REPO_CHANGE assert event_info["msg_id"] == msg["body"]["msg_id"] assert event_info["tag_name"] == msg["body"]["msg"]["tag"] + + @patch.object(MBSConsumer, "process_message") + def test_ingore_koji_build_change_event_without_task_id(self, process_message): + """ + Test koji_build_change event without task_id should be ignored. + """ + hub = MagicMock(config={}) + consumer = MBSConsumer(hub) + event = { + 'build_new_state': 1, + 'task_id': None, + 'msg_id': u'f66a43be-e510-44fc-a318-e422cfda65d3', + 'module_build_id': None, + 'state_reason': None, + 'build_name': 'foobar', + 'build_version': '201912130626', + 'event': 'koji_build_change', + 'build_release': u'070752' + } + consumer.get_abstracted_event_info = MagicMock() + consumer.get_abstracted_event_info.return_value = event + consumer.consume({}) + assert process_message.call_count == 0