| |
@@ -1,47 +1,97 @@
|
| |
- from resultsdb_listener import pipeline_compose_complete
|
| |
-
|
| |
- example_message = {
|
| |
- "i": 1,
|
| |
- "timestamp": 1496382015,
|
| |
- "msg_id": "2017-f2b46ca1-1b07-4539-8d86-f7d3cb1b5934",
|
| |
- "crypto": "x509",
|
| |
- "topic": "org.centos.prod.ci.pipeline.compose.complete",
|
| |
- 'msg': {
|
| |
- "CI_TYPE": "custom",
|
| |
+ import logging
|
| |
+ from unittest import mock
|
| |
+
|
| |
+ from fedora_messaging.api import Message
|
| |
+
|
| |
+ from resultsdb_listener import consumer
|
| |
+ from resultsdb_listener import exceptions as exc
|
| |
+
|
| |
+
|
| |
+ example_message = Message(
|
| |
+ topic="org.centos.prod.ci.pipeline.compose.complete",
|
| |
+ body={
|
| |
+ "CI_TYPE": "custom",
|
| |
"CI_NAME": "ci-pipeline-ostree-compose",
|
| |
"topic": "org.centos.prod.ci.pipeline.compose.complete",
|
| |
- "build_id": "79",
|
| |
- "build_url": "https://ci.centos.org/job/cci-pipeline-ostree-compose/79/",
|
| |
- "compose_url": "http://artifacts.ci.centos.org/artifacts/fedora-atomic/f26/ostree",
|
| |
+ "build_id": "79",
|
| |
+ "build_url": "https://ci.centos.org/job/"
|
| |
+ "cci-pipeline-ostree-compose/79/",
|
| |
+ "compose_url": "http://artifacts.ci.centos.org/artifacts/"
|
| |
+ "fedora-atomic/f26/ostree",
|
| |
"branch": "f26",
|
| |
"ref": "fedora/f26/x86_64/atomic-host",
|
| |
- "rev": "0546fa18041a8ca223f4f441dc1868fc81ddce0f",
|
| |
- "repo": "perl",
|
| |
- "namespace": "rpms",
|
| |
- "username": "fedora-atomic",
|
| |
+ "rev": "0546fa18041a8ca223f4f441dc1868fc81ddce0f",
|
| |
+ "repo": "perl",
|
| |
+ "namespace": "rpms",
|
| |
+ "username": "fedora-atomic",
|
| |
"test_guidance": "<comma-separated-list-of-test-suites-to-run>",
|
| |
"message-content": "",
|
| |
- "status": "SUCCESS"
|
| |
- }
|
| |
- }
|
| |
+ "status": "SUCCESS",
|
| |
+ },
|
| |
+ )
|
| |
+ example_message.id = "random_uuid"
|
| |
|
| |
|
| |
class TestPipelineComposeComplete(object):
|
| |
- def test_exists(self):
|
| |
- pipeline_compose_complete.PipelineComposeCompleteProcessor(None)
|
| |
-
|
| |
- def test_parse_example_message(self):
|
| |
- test_listener = pipeline_compose_complete.PipelineComposeCompleteProcessor(None)
|
| |
- test_data = test_listener.process(example_message)
|
| |
-
|
| |
- assert test_data['msg_id'] == example_message['msg_id']
|
| |
- assert test_data['topic'] == example_message['msg']['topic']
|
| |
- assert test_data['build_id'] == example_message['msg']['build_id']
|
| |
- assert test_data['build_url'] == example_message['msg']['build_url']
|
| |
- assert test_data['compose_url'] == example_message['msg']['compose_url']
|
| |
- assert test_data['branch'] == example_message['msg']['branch']
|
| |
- assert test_data['ref'] == example_message['msg']['ref']
|
| |
- assert test_data['rev'] == example_message['msg']['rev']
|
| |
- assert test_data['repo'] == example_message['msg']['repo']
|
| |
- assert test_data['namespace'] == example_message['msg']['namespace']
|
| |
- assert test_data['username'] == example_message['msg']['username']
|
| |
+ @mock.patch("resultsdb_listener.consumer.senders")
|
| |
+ def test_parse_example_message(self, senders):
|
| |
+ processor = mock.MagicMock()
|
| |
+ senders.get_sender.return_value = processor
|
| |
+ cons = consumer.Consumer()
|
| |
+ cons(example_message)
|
| |
+
|
| |
+ assert processor().send.call_count == 1
|
| |
+ processor().send.assert_called_with(
|
| |
+ {
|
| |
+ "msg_id": "random_uuid",
|
| |
+ "build_id": "79",
|
| |
+ "build_url": "https://ci.centos.org/job/"
|
| |
+ "cci-pipeline-ostree-compose/79/",
|
| |
+ "branch": "f26",
|
| |
+ "ref": "fedora/f26/x86_64/atomic-host",
|
| |
+ "rev": "0546fa18041a8ca223f4f441dc1868fc81ddce0f",
|
| |
+ "repo": "perl",
|
| |
+ "namespace": "rpms",
|
| |
+ "username": "fedora-atomic",
|
| |
+ "status": "SUCCESS",
|
| |
+ "topic": "org.centos.prod.ci.pipeline.compose.complete",
|
| |
+ "compose_url": "http://artifacts.ci.centos.org/artifacts/"
|
| |
+ "fedora-atomic/f26/ostree",
|
| |
+ }
|
| |
+ )
|
| |
+
|
| |
+ @mock.patch("resultsdb_listener.consumer.senders")
|
| |
+ def test_fail_to_parse_example_message(self, senders, caplog):
|
| |
+ caplog.set_level(logging.DEBUG)
|
| |
+ senders.get_sender.side_effect = exc.ListenerMsgError("boo!")
|
| |
+
|
| |
+ try:
|
| |
+ consumer.Consumer()
|
| |
+ except exc.ListenerMsgError:
|
| |
+ pass
|
| |
+
|
| |
+ warn_higher_records = [
|
| |
+ r for r in caplog.records if r.levelno >= logging.WARNING
|
| |
+ ]
|
| |
+ assert len(warn_higher_records) == 1
|
| |
+ log_record = warn_higher_records[0]
|
| |
+ assert log_record.levelno == logging.ERROR
|
| |
+ assert log_record.message == "boo!"
|
| |
+
|
| |
+ def test_fail_to_send_example_message(self, caplog):
|
| |
+ caplog.set_level(logging.DEBUG)
|
| |
+
|
| |
+ sender = mock.MagicMock()
|
| |
+ sender.send.side_effect = exc.SenderError("boo!")
|
| |
+
|
| |
+ cons = consumer.Consumer()
|
| |
+ cons.processor = sender
|
| |
+ cons(example_message)
|
| |
+
|
| |
+ warn_higher_records = [
|
| |
+ r for r in caplog.records if r.levelno >= logging.WARNING
|
| |
+ ]
|
| |
+ assert len(warn_higher_records) == 1
|
| |
+ log_record = warn_higher_records[0]
|
| |
+ assert log_record.levelno == logging.ERROR
|
| |
+ assert log_record.message == "boo!"
|
| |