#4259 allow setting ttl in protonmsg
Merged 20 days ago by tkopecek. Opened 6 months ago by mikem.
mikem/koji proton-ttl  into  master

file modified
+1 -1
@@ -224,12 +224,12 @@ 

    before timing out

  

  The ``[message]`` section sets parameters for how messages are formed.

- Currently only one field is understood:

  

  * ``extra_limit`` -- the maximum allowed size for ``build.extra`` fields that

    appear in messages. If the ``build.extra`` field is longer (in terms of 

    json-encoded length), then it will be omitted. The default value is ``0``

    which means no limit.

+ * ``ttl`` -- The time to live to set for messages. Measured in seconds

  

  The ``[queue]`` section controls how (or if) the plugin will use the database

  to queue messages when they cannot be immediately sent.

@@ -11,6 +11,8 @@ 

  # if field is longer (json.dumps), ignore it

  # default value is 0 - unlimited size

  extra_limit = 0

+ # message ttl can be specified in seconds, default is no ttl

+ # ttl = 86400

  

  [queue]

  # enable persistent database queue

@@ -93,6 +93,7 @@ 

          return 'topic://' + koji_topic_prefix

  

      def send_msgs(self, event):

+         ttl = self.conf.getfloat('message', 'ttl', fallback=None)

          for msg in self.msgs:

              # address is like "topic://koji.package.add"

              address = self.topic_prefix + '.' + msg['address']
@@ -104,6 +105,9 @@ 

                  self.log.debug('created new sender for %s', address)

                  self.senders[address] = sender

              pmsg = Message(properties=msg['props'], body=msg['body'])

+             if ttl:

+                 # The message class expects seconds, even though the c api uses milliseconds

+                 pmsg.ttl = ttl

              delivery = sender.send(pmsg)

              self.log.debug('sent message: %s', msg['props'])

              self.pending[delivery] = msg

@@ -333,6 +333,9 @@ 

  topic_prefix = koji

  connect_timeout = 10

  send_timeout = 60

+ 

+ [message]

+ ttl = 7200

  """)

          conf = ConfigParser()

          if six.PY2:
@@ -401,6 +404,8 @@ 

      @patch('protonmsg.SSLDomain')

      def test_send_msgs(self, SSLDomain, Message):

          event = MagicMock()

+         msg = mock.MagicMock()

+         Message.return_value = msg

          self.handler.on_start(event)

          self.handler.msgs = [{'address': 'testtopic', 'props': {'testheader': 1},

                                'body': '"test body"'}]
@@ -408,6 +413,7 @@ 

          event.container.create_sender.assert_called_once_with(event.connection,

                                                                target='topic://koji.testtopic')

          Message.assert_called_once_with(properties={'testheader': 1}, body='"test body"')

+         self.assertEqual(int(msg.ttl), 7200)

          sender = event.container.create_sender.return_value

          sender.send.assert_called_once_with(Message.return_value)

  

Metadata Update from @tkopecek:
- Pull-request tagged with: testing-ready

6 months ago

Metadata Update from @tkopecek:
- Pull-request untagged with: testing-ready
- Pull-request tagged with: testing-basic

2 months ago

1 new commit added

  • unit test
2 months ago

Metadata Update from @mfilip:
- Pull-request tagged with: testing-done

a month ago

Commit 9e0d961 fixes this pull-request

Pull-Request has been merged by tkopecek

20 days ago