Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-fedora-messaging for
openSUSE:Factory checked in at 2022-10-29 20:16:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-fedora-messaging (Old)
and /work/SRC/openSUSE:Factory/.python-fedora-messaging.new.2275 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-fedora-messaging"
Sat Oct 29 20:16:56 2022 rev:7 rq:1032091 version:3.2.0
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-fedora-messaging/python-fedora-messaging.changes
2022-10-12 18:27:21.774042699 +0200
+++
/work/SRC/openSUSE:Factory/.python-fedora-messaging.new.2275/python-fedora-messaging.changes
2022-10-29 20:18:19.254598802 +0200
@@ -1,0 +2,10 @@
+Fri Oct 28 17:02:11 UTC 2022 - Yogalakshmi Arunachalam <[email protected]>
+
+- Update to version 3.2.0
+ Features
+ * Add a priority property to messages, and a default priority in the
configuration (#275)
+ * Add a message schema attribute and some documentation to help deprecate
and upgrade message schemas (#227)
+ Other Changes
+ * Use tomllib from the standard library on Python 3.11 and above, fallback
to tomli otherwise. (PR#274)
+
+-------------------------------------------------------------------
Old:
----
fedora_messaging-3.1.0.tar.gz
New:
----
fedora_messaging-3.2.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-fedora-messaging.spec ++++++
--- /var/tmp/diff_new_pack.iU9cza/_old 2022-10-29 20:18:19.970602617 +0200
+++ /var/tmp/diff_new_pack.iU9cza/_new 2022-10-29 20:18:19.974602638 +0200
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-fedora-messaging
-Version: 3.1.0
+Version: 3.2.0
Release: 0
Summary: Python tools for Fedora's messaging infrastructure
License: GPL-2.0-or-later
++++++ fedora_messaging-3.1.0.tar.gz -> fedora_messaging-3.2.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/fedora_messaging-3.1.0/PKG-INFO
new/fedora_messaging-3.2.0/PKG-INFO
--- old/fedora_messaging-3.1.0/PKG-INFO 2022-09-13 12:48:49.819445400 +0200
+++ new/fedora_messaging-3.2.0/PKG-INFO 2022-10-17 15:12:28.002483400 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: fedora_messaging
-Version: 3.1.0
+Version: 3.2.0
Summary: A set of tools for using Fedora's messaging infrastructure
Home-page: https://github.com/fedora-infra/fedora-messaging
Maintainer: Fedora Infrastructure Team
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/fedora_messaging-3.1.0/docs/changelog.rst
new/fedora_messaging-3.2.0/docs/changelog.rst
--- old/fedora_messaging-3.1.0/docs/changelog.rst 2022-09-13
11:47:42.000000000 +0200
+++ new/fedora_messaging-3.2.0/docs/changelog.rst 2022-10-17
12:41:11.000000000 +0200
@@ -4,6 +4,39 @@
.. towncrier release notes start
+3.2.0 (2022-10-17)
+==================
+
+Features
+--------
+
+* Add a priority property to messages, and a default priority in the
+ configuration
+ (`PR#275 <https://github.com/fedora-infra/fedora-messaging/pull/275>`_)
+* Add a message schema attribute and some documentation to help deprecate and
+ upgrade message schemas
+ (`#227 <https://github.com/fedora-infra/fedora-messaging/issues/227>`_)
+
+Other Changes
+-------------
+
+* Use tomllib from the standard library on Python 3.11 and above,
+ fallback to tomli otherwise.
+ (`PR#274 <https://github.com/fedora-infra/fedora-messaging/pull/274>`_)
+
+Contributors
+------------
+
+Many thanks to the contributors of bug reports, pull requests, and pull request
+reviews for this release:
+
+* Akashdeep Dhar
+* Aur??lien Bompard
+* Erol Keskin
+* Miro Hron??ok
+* Stephen Coady
+
+
3.1.0 (2022-09-13)
==================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/fedora_messaging-3.1.0/docs/messages.rst
new/fedora_messaging-3.2.0/docs/messages.rst
--- old/fedora_messaging-3.1.0/docs/messages.rst 2021-12-03
12:54:18.000000000 +0100
+++ new/fedora_messaging-3.2.0/docs/messages.rst 2022-10-17
12:41:11.000000000 +0200
@@ -118,3 +118,32 @@
.. _the fedora-messaging repository:
https://github.com/fedora-infra/fedora-messaging/tree/master/docs/sample_schema_package/
.. _CookieCutter: https://cookiecutter.readthedocs.io
.. _template repository:
https://github.com/fedora-infra/cookiecutter-message-schemas
+
+
+
+Upgrade and deprecation
+=======================
+
+Message schema classes should not be modified in a backwards-incompatible
fashion. To facilitate the
+evolution of schemas, we recommend including the schema version in the topic
itself, such as
+``myservice.myevent.v1``.
+
+When a backwards-incompatible change is required, create a new class with the
topic ending in
+``.v2``, set the :py:attr:`Message.deprecated` attribute to ``True`` on the
old class, and send both
+versions for a reasonable period of time. Note that you need to add the new
class to the schema
+package's entry points as well.
+
+We leave the duration to the developer's appreciation, since it depends on how
many different
+consumers they expect to have, whether they are only inside the Fedora
infrastructure or outside
+too, etc. This duration can range from weeks to months, possibly a year. At
the time of this
+writing, Fedora's message bus is very far from being overwhelmed by messages,
so you don't need to
+worry about that.
+
+Proceeding this way ensures that consumers subscribing to ``.v1`` will not
break when ``.v2``
+arrives, and can choose to subscribe to the ``.v2`` topic when they are ready
to handle the new
+format. They will get a warning in their logs when they receive deprecated
messages, prompting them
+to upgrade.
+
+When you add the new version, please upgrade the major version number of your
schema
+package, and communicate clearly that the old version is deprecated, including
for how long you have
+decided to send both versions.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/fedora_messaging-3.1.0/fedora_messaging/__init__.py
new/fedora_messaging-3.2.0/fedora_messaging/__init__.py
--- old/fedora_messaging-3.1.0/fedora_messaging/__init__.py 2022-09-13
11:47:42.000000000 +0200
+++ new/fedora_messaging-3.2.0/fedora_messaging/__init__.py 2022-10-17
12:41:11.000000000 +0200
@@ -23,4 +23,4 @@
pass
-__version__ = "3.1.0"
+__version__ = "3.2.0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/fedora_messaging-3.1.0/fedora_messaging/config.py
new/fedora_messaging-3.2.0/fedora_messaging/config.py
--- old/fedora_messaging-3.1.0/fedora_messaging/config.py 2022-09-13
11:36:38.000000000 +0200
+++ new/fedora_messaging-3.2.0/fedora_messaging/config.py 2022-10-17
12:41:11.000000000 +0200
@@ -171,6 +171,17 @@
This is useful to migrate from fedmsg, but should not be used otherwise.
The default is an empty string.
+.. _conf-publish-priority:
+
+publish_priority
+----------------
+A number that will be set as the priority for the messages. The range of
+possible priorities depends on the ``x-max-priority`` argument of the
+destination queue, as described in `RabbitMQ's priority documentation`_.
+The default is ``None``, which RabbitMQ will interpret as zero.
+
+.. _RabbitMQ's priority documentation: https://www.rabbitmq.com/priority.html
+
.. _sub-config:
Consumer Options
@@ -285,7 +296,12 @@
import os
import pkg_resources
-import toml
+
+
+try:
+ import tomllib
+except ImportError:
+ import tomli as tomllib
from . import exceptions
@@ -316,6 +332,7 @@
},
publish_exchange="amq.topic",
topic_prefix="",
+ publish_priority=None,
passive_declares=False,
exchanges={
"amq.topic": {
@@ -521,15 +538,13 @@
if os.path.exists(config_path):
_log.info(f"Loading configuration from {config_path}")
- with open(config_path) as fd:
+ with open(config_path, "rb") as fd:
try:
- file_config = toml.load(fd)
+ file_config = tomllib.load(fd)
for key in file_config:
config[key.lower()] = file_config[key]
- except toml.TomlDecodeError as e:
- msg = "Failed to parse {}: error at line {}, column {}:
{}".format(
- config_path, e.lineno, e.colno, e.msg
- )
+ except tomllib.TOMLDecodeError as e:
+ msg = f"Failed to parse {config_path}: {e}"
raise exceptions.ConfigurationException(msg)
else:
_log.info(f"The configuration file, {config_path}, does not
exist.")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/fedora_messaging-3.1.0/fedora_messaging/message.py
new/fedora_messaging-3.2.0/fedora_messaging/message.py
--- old/fedora_messaging-3.1.0/fedora_messaging/message.py 2022-09-13
11:47:42.000000000 +0200
+++ new/fedora_messaging-3.2.0/fedora_messaging/message.py 2022-10-17
12:41:11.000000000 +0200
@@ -213,6 +213,16 @@
except jsonschema.exceptions.ValidationError as e:
_log.error("Message validation of %r failed: %r", message, e)
raise ValidationError(e)
+
+ if MessageClass.deprecated:
+ _log.warning(
+ "A message with a deprecated schema (%s.%s) has been received on
topic %r. "
+ "You should check the emitting application's documentation to
upgrade to "
+ "the newer schema version.",
+ MessageClass.__module__,
+ MessageClass.__name__,
+ message.topic,
+ )
return message
@@ -280,6 +290,21 @@
queue (str): The name of the queue this message arrived through. This
attribute is set automatically by the library and users should
never
set it themselves.
+ deprecated (bool): Whether this message schema has been deprecated by
a more
+ recent version. Emits a warning when a message of this class is
received,
+ to let consumers know that they should plan to upgrade. Defaults to
+ ``False``.
+ priority (int): The priority for the message, if the destination queue
+ supports it. Defaults to zero (lowest priority).
+
+ This value is taken into account in queues that have the
``x-max-priority``
+ argument set. Most queues in Fedora don't support priorities, in
which case
+ the value will be ignored.
+
+ Larger numbers indicate higher priority, you can read more about
it in
+ `RabbitMQ's documentation on priority`_.
+
+ .. _RabbitMQ's documentation on priority:
https://www.rabbitmq.com/priority.html
"""
severity = INFO
@@ -302,6 +327,7 @@
"description": "Schema for message body",
"type": "object",
}
+ deprecated = False
def __init__(
self, body=None, headers=None, topic=None, properties=None,
severity=None
@@ -333,6 +359,7 @@
delivery_mode=2,
headers=headers,
message_id=message_id,
+ priority=config.conf["publish_priority"],
)
def _filter_headers(self):
@@ -380,6 +407,14 @@
self._properties.message_id = value
@property
+ def priority(self):
+ return self._properties.priority or 0
+
+ @priority.setter
+ def priority(self, value):
+ self._properties.priority = value
+
+ @property
def _encoded_routing_key(self):
"""The encoded routing key used to publish the message on the
broker."""
topic = self.topic
@@ -658,6 +693,10 @@
"type": ["string", "null"],
"description": "The queue the message arrived on, if any.",
},
+ "priority": {
+ "type": ["integer", "null"],
+ "description": "The priority that the message has been sent with.",
+ },
},
"required": ["topic", "headers", "id", "body"],
}
@@ -695,6 +734,7 @@
"id": message.id,
"body": message.body,
"queue": message.queue,
+ "priority": message.priority,
}
serialized_messages.append(json.dumps(m, ensure_ascii=False,
sort_keys=True))
@@ -736,6 +776,7 @@
)
message.queue = message_dict["queue"] if "queue" in message_dict else
None
message.id = message_dict["id"]
+ message.priority = message_dict.get("priority")
messages.append(message)
return messages
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/fedora_messaging-3.1.0/fedora_messaging/tests/unit/test_cli.py
new/fedora_messaging-3.2.0/fedora_messaging/tests/unit/test_cli.py
--- old/fedora_messaging-3.1.0/fedora_messaging/tests/unit/test_cli.py
2022-09-13 11:47:35.000000000 +0200
+++ new/fedora_messaging-3.2.0/fedora_messaging/tests/unit/test_cli.py
2022-10-17 12:41:11.000000000 +0200
@@ -46,6 +46,7 @@
print(str(message))
[email protected]("fedora_messaging.config.conf.setup_logging", mock.Mock())
class BaseCliTests(TestCase):
"""Unit tests for the base command of the CLI."""
@@ -57,6 +58,7 @@
@mock.patch("fedora_messaging.cli.reactor", mock.Mock())
[email protected]("fedora_messaging.config.conf.setup_logging", mock.Mock())
class ConsumeCliTests(TestCase):
"""Unit tests for the 'consume' command of the CLI."""
@@ -97,7 +99,7 @@
"""Assert a bad configuration file is reported."""
expected_err = (
"Error: Invalid value: Configuration error: Failed to parse"
- " {}: error at line 1, column 1".format(BAD_CONF)
+ " {}: Invalid value (at line 1, column 20)".format(BAD_CONF)
)
result = self.runner.invoke(cli.cli, ["--conf=" + BAD_CONF, "consume"])
self.assertEqual(2, result.exit_code)
@@ -524,6 +526,7 @@
)
[email protected]("fedora_messaging.config.conf.setup_logging", mock.Mock())
class PublishCliTests(TestCase):
"""Unit tests for the 'publish' command of the CLI."""
@@ -668,6 +671,7 @@
self.assertEqual(1, result.exit_code)
[email protected]("fedora_messaging.config.conf.setup_logging", mock.Mock())
class RecordCliTests(TestCase):
"""Unit tests for the 'record' command of the CLI."""
@@ -732,7 +736,7 @@
'{"body": {"test_key1": "test_value1"}, "headers"'
': {"fedora_messaging_schema": "base.message",
"fedora_messaging_severity": 20, '
'"sent-at": "2018-11-18T10:11:41+00:00"}, "id":
"273ed91d-b8b5-487a-9576-95b9fbdf3eec"'
- ', "queue": null, "topic": "test_topic1"}\n'
+ ', "priority": 0, "queue": null, "topic": "test_topic1"}\n'
)
with self.assertRaises(exceptions.HaltConsumer) as cm:
@@ -744,7 +748,8 @@
'{"body": {"test_key2": "test_value2"}, "headers": '
'{"fedora_messaging_schema": "base.message",
"fedora_messaging_severity": '
'20, "sent-at": "2018-11-18T10:11:41+00:00"}, "id": '
- '"273ed91d-b8b5-487a-9576-95b9fbdf3eec", "queue": null, "topic":
"test_topic2"}\n'
+ '"273ed91d-b8b5-487a-9576-95b9fbdf3eec", "priority": 0, "queue":
null, '
+ '"topic": "test_topic2"}\n'
)
def test_recorded_messages_dumps_failed(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/fedora_messaging-3.1.0/fedora_messaging/tests/unit/test_config.py
new/fedora_messaging-3.2.0/fedora_messaging/tests/unit/test_config.py
--- old/fedora_messaging-3.1.0/fedora_messaging/tests/unit/test_config.py
2021-12-10 16:40:42.000000000 +0100
+++ new/fedora_messaging-3.2.0/fedora_messaging/tests/unit/test_config.py
2022-10-17 12:41:11.000000000 +0200
@@ -22,13 +22,15 @@
from fedora_messaging.exceptions import ConfigurationException
-full_config = """
+full_config = b"""
amqp_url = "amqp://guest:guest@rabbit-server1:5672/%2F"
publish_exchange = "special_exchange"
topic_prefix = ""
+publish_priority = 42
+
callback = "fedora_messaging.examples:print_msg"
bindings = [
@@ -83,9 +85,9 @@
level = "DEBUG"
handlers = ["console"]
"""
-empty_config = '# publish_exchange = "special_exchange"'
-partial_config = 'publish_exchange = "special_exchange"'
-malformed_config = 'publish_exchange = "special_exchange' # missing close
quote
+empty_config = b'# publish_exchange = "special_exchange"'
+partial_config = b'publish_exchange = "special_exchange"'
+malformed_config = b'publish_exchange = "special_exchange' # missing close
quote
class TestObj:
@@ -209,7 +211,7 @@
)
@mock.patch(
- "fedora_messaging.config.open", mock.mock_open(read_data='bad_key =
"val"')
+ "fedora_messaging.config.open", mock.mock_open(read_data=b'bad_key =
"val"')
)
@mock.patch("fedora_messaging.config.os.path.exists", return_value=True)
def test_override_client_props(self, mock_exists):
@@ -218,13 +220,13 @@
for key in ("version", "information", "product"):
with mock.patch(
"fedora_messaging.config.open",
- mock.mock_open(read_data=conf.format(key)),
+ mock.mock_open(read_data=conf.format(key).encode("utf-8")),
):
config = msg_config.LazyConfig()
self.assertRaises(ConfigurationException, config.load_config)
@mock.patch(
- "fedora_messaging.config.open", mock.mock_open(read_data='bad_key =
"val"')
+ "fedora_messaging.config.open", mock.mock_open(read_data=b'bad_key =
"val"')
)
@mock.patch("fedora_messaging.config.os.path.exists", return_value=True)
def test_invalid_key(self, mock_exists):
@@ -232,17 +234,19 @@
config = msg_config.LazyConfig()
self.assertRaises(ConfigurationException, config.load_config)
- @mock.patch("fedora_messaging.config.open",
mock.mock_open(read_data="Ni!"))
+ @mock.patch("fedora_messaging.config.open",
mock.mock_open(read_data=b"Ni!"))
@mock.patch("fedora_messaging.config.os.path.exists", return_value=True)
def test_bad_config_file(self, mock_exists):
"""Assert an invalid TOML file raises a ConfigurationException."""
with self.assertRaises(ConfigurationException) as cm:
msg_config.LazyConfig().load_config()
error = (
- "Failed to parse /etc/fedora-messaging/config.toml: error at line
1, column 3: "
- "Found invalid character in key name: '!'. Try quoting the key
name."
+ "Failed to parse /etc/fedora-messaging/config.toml: "
+ "Expected '=' after a key in a key/value pair (at line 1, column
3)"
)
- self.assertEqual(error, cm.exception.message)
+ # older tomli version used in Python 3.6 uses double-quotes
+ error_old = error.replace("'", '"')
+ self.assertIn(cm.exception.message, (error, error_old))
@mock.patch(
"fedora_messaging.config.open",
mock.mock_open(read_data=partial_config)
@@ -275,6 +279,7 @@
},
topic_prefix="",
publish_exchange="special_exchange",
+ publish_priority=42,
passive_declares=False,
exchanges={
"custom_exchange": {
@@ -418,6 +423,7 @@
"Loading configuration from /etc/fedora-messaging/config.toml"
)
+ @mock.patch("fedora_messaging.config.logging.config.dictConfig",
mock.Mock())
@mock.patch("fedora_messaging.config.open",
mock.mock_open(read_data=empty_config))
@mock.patch("fedora_messaging.config._log", autospec=True)
@mock.patch("fedora_messaging.config.os.path.exists", return_value=True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/fedora_messaging-3.1.0/fedora_messaging/tests/unit/test_message.py
new/fedora_messaging-3.2.0/fedora_messaging/tests/unit/test_message.py
--- old/fedora_messaging-3.1.0/fedora_messaging/tests/unit/test_message.py
2022-09-13 11:47:42.000000000 +0200
+++ new/fedora_messaging-3.2.0/fedora_messaging/tests/unit/test_message.py
2022-10-17 12:41:11.000000000 +0200
@@ -21,11 +21,16 @@
import jsonschema
import pika
+import pytest
from fedora_messaging import exceptions, message
-class GetMessageTests(TestCase):
+class DeprecatedMessage(message.Message):
+ deprecated = True
+
+
+class TestGetMessage:
"""Tests for the :func:`fedora_messaging.message.get_message` function."""
def test_missing_severity(self):
@@ -34,16 +39,15 @@
del msg._headers["fedora_messaging_severity"]
recv_msg = message.get_message("", msg._properties, b"{}")
- self.assertEqual(recv_msg.severity, message.INFO)
+ assert recv_msg.severity == message.INFO
def test_invalid_severity(self):
"""Assert the invalid severity fails validation."""
msg = message.Message()
msg._headers["fedora_messaging_severity"] = 42
- self.assertRaises(
- exceptions.ValidationError, message.get_message, "",
msg._properties, b"{}"
- )
+ with pytest.raises(exceptions.ValidationError):
+ message.get_message("", msg._properties, b"{}")
def test_missing_headers(self):
"""Assert missing headers results in a default message."""
@@ -53,7 +57,27 @@
received_msg = message.get_message(
msg._encoded_routing_key, msg._properties, msg._encoded_body
)
- self.assertIsInstance(received_msg, message.Message)
+ assert isinstance(received_msg, message.Message)
+
+ @mock.patch.dict(
+ message._class_to_schema_name, {DeprecatedMessage:
"deprecated_message_id"}
+ )
+ @mock.patch.dict(
+ message._schema_name_to_class, {"deprecated_message_id":
DeprecatedMessage}
+ )
+ def test_deprecated(self, caplog):
+ """Assert a deprecation warning is produced when indicated."""
+ msg = DeprecatedMessage(topic="dummy.topic")
+ received_msg = message.get_message(
+ msg.topic, msg._properties, msg._encoded_body
+ )
+ assert isinstance(received_msg, DeprecatedMessage)
+ assert len(caplog.messages) == 1
+ assert caplog.messages[0] == (
+ "A message with a deprecated schema
(fedora_messaging.tests.unit.test_message."
+ "DeprecatedMessage) has been received on topic 'dummy.topic'. You
should check "
+ "the emitting application's documentation to upgrade to the newer
schema version."
+ )
class MessageDumpsTests(TestCase):
@@ -75,6 +99,7 @@
delivery_mode=2,
headers=test_headers,
message_id=test_id,
+ priority=2,
)
test_msg = message.Message(
body=test_body, topic=test_topic, properties=test_properties
@@ -83,8 +108,8 @@
test_msg.queue = test_queue
expected_json = (
'{"body": {"test_key": "test_value"}, "headers":
{"fedora_messaging_schema": '
- '"base.message", "fedora_messaging_severity": 30}, "id": "test
id", "queue": '
- '"test queue", "topic": "test topic"}\n'
+ '"base.message", "fedora_messaging_severity": 30}, "id": "test
id", '
+ '"priority": 2, "queue": "test queue", "topic": "test topic"}\n'
)
self.assertEqual(expected_json, message.dumps(test_msg))
@@ -115,11 +140,11 @@
test_msg2.queue = test_queue
expected_json = (
'{"body": {"test_key": "test_value"}, "headers":
{"fedora_messaging_schema": '
- '"base.message", "fedora_messaging_severity": 30}, "id": "test
id", "queue": '
- '"test queue", "topic": "test topic"}\n'
+ '"base.message", "fedora_messaging_severity": 30}, "id": "test
id", '
+ '"priority": 0, "queue": "test queue", "topic": "test topic"}\n'
'{"body": {"test_key": "test_value"}, "headers":
{"fedora_messaging_schema": '
- '"base.message", "fedora_messaging_severity": 30}, "id": "test
id", "queue": '
- '"test queue", "topic": "test topic"}\n'
+ '"base.message", "fedora_messaging_severity": 30}, "id": "test
id", '
+ '"priority": 0, "queue": "test queue", "topic": "test topic"}\n'
)
self.assertEqual(expected_json, message.dumps([test_msg, test_msg2]))
@@ -138,7 +163,7 @@
message_json = (
'{"topic": "test topic", "headers": {"fedora_messaging_schema":
"base.message", '
'"fedora_messaging_severity": 30}, "id": "test id", "body": '
- '{"test_key": "test_value"}, "queue": "test queue"}\n'
+ '{"test_key": "test_value"}, "priority": 2, "queue": "test
queue"}\n'
)
messages = message.loads(message_json)
test_message = messages[0]
@@ -148,6 +173,7 @@
self.assertEqual("test id", test_message.id)
self.assertEqual({"test_key": "test_value"}, test_message.body)
self.assertEqual("test queue", test_message.queue)
+ self.assertEqual(2, test_message.priority)
self.assertEqual(
message.WARNING, test_message._headers["fedora_messaging_severity"]
)
@@ -223,6 +249,17 @@
)
self.assertRaises(exceptions.ValidationError, message.loads,
message_json)
+ def test_missing_priority(self):
+ """Assert message without priority is accepted and the priority is set
to zero."""
+ message_json = (
+ '{"topic": "test topic", "headers": {"fedora_messaging_schema": '
+ '"base.message", "fedora_messaging_severity": 30}, "id": "test
id", '
+ '"body": {"test_key": "test_value"}, "queue": "test queue"}'
+ )
+ messages = message.loads(message_json)
+ test_message = messages[0]
+ self.assertEqual(test_message.priority, 0)
+
def test_validation_failure(self):
"""Assert proper exception is raised when message validation failed."""
message_json = (
@@ -335,6 +372,15 @@
self.assertEqual("1970-01-01T00:00:00+00:00", msg._headers["sent-at"])
+ def test_priority(self):
+ """Assert is set correctly."""
+ msg = message.Message()
+ self.assertEqual(0, msg.priority)
+ msg.priority = 42
+ self.assertEqual(42, msg.priority)
+ msg.priority = None
+ self.assertEqual(0, msg.priority)
+
def test_properties(self):
properties = object()
msg = message.Message(properties=properties)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/fedora_messaging-3.1.0/fedora_messaging.egg-info/PKG-INFO
new/fedora_messaging-3.2.0/fedora_messaging.egg-info/PKG-INFO
--- old/fedora_messaging-3.1.0/fedora_messaging.egg-info/PKG-INFO
2022-09-13 12:48:49.000000000 +0200
+++ new/fedora_messaging-3.2.0/fedora_messaging.egg-info/PKG-INFO
2022-10-17 15:12:27.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: fedora-messaging
-Version: 3.1.0
+Version: 3.2.0
Summary: A set of tools for using Fedora's messaging infrastructure
Home-page: https://github.com/fedora-infra/fedora-messaging
Maintainer: Fedora Infrastructure Team
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/fedora_messaging-3.1.0/fedora_messaging.egg-info/requires.txt
new/fedora_messaging-3.2.0/fedora_messaging.egg-info/requires.txt
--- old/fedora_messaging-3.1.0/fedora_messaging.egg-info/requires.txt
2022-09-13 12:48:49.000000000 +0200
+++ new/fedora_messaging-3.2.0/fedora_messaging.egg-info/requires.txt
2022-10-17 15:12:27.000000000 +0200
@@ -2,10 +2,12 @@
click
crochet
jsonschema
-toml
Twisted
pytz
PyOpenSSL
pika>=1.0.1
service_identity
setuptools
+
+[:python_version < "3.11"]
+tomli
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/fedora_messaging-3.1.0/requirements.txt
new/fedora_messaging-3.2.0/requirements.txt
--- old/fedora_messaging-3.1.0/requirements.txt 2022-09-13 11:34:10.000000000
+0200
+++ new/fedora_messaging-3.2.0/requirements.txt 2022-10-17 12:41:11.000000000
+0200
@@ -2,7 +2,7 @@
click
crochet
jsonschema
-toml
+tomli;python_version<"3.11"
Twisted
pytz
PyOpenSSL
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/fedora_messaging-3.1.0/tox.ini
new/fedora_messaging-3.2.0/tox.ini
--- old/fedora_messaging-3.1.0/tox.ini 2022-05-17 09:41:52.000000000 +0200
+++ new/fedora_messaging-3.2.0/tox.ini 2022-10-17 12:41:11.000000000 +0200
@@ -2,6 +2,7 @@
envlist = checks,licenses,py{36,37,38,39,310}-{unittest,integration}
[testenv]
+passenv = HOME
deps =
-rdev-requirements.txt
sitepackages = False