From 68c48ad0bbbca34bcf4c1a30502558e1532d0b2f Mon Sep 17 00:00:00 2001 From: Dan Smith <dansmith@redhat.com> Date: Sat, 3 Mar 2018 14:00:35 -0800 Subject: [PATCH] Add restart() method to DecayingTimer This merely provides a restart() method that passes through to the existing restart() method on the StopWatch used as the internal for DecayingTimer so that we can reset it. Change-Id: Ie6b607ec588db94e2c768bd22ae736a05ab484c1 --- oslo_messaging/_drivers/common.py | 3 +++ oslo_messaging/tests/test_utils.py | 14 ++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/oslo_messaging/_drivers/common.py b/oslo_messaging/_drivers/common.py index 9b35c5dd9..d46400f47 100644 --- a/oslo_messaging/_drivers/common.py +++ b/oslo_messaging/_drivers/common.py @@ -347,6 +347,9 @@ class DecayingTimer(object): def start(self): self._watch.start() + def restart(self): + self._watch.restart() + def check_return(self, timeout_callback=None, *args, **kwargs): maximum = kwargs.pop('maximum', None) left = self._watch.leftover(return_none=True) diff --git a/oslo_messaging/tests/test_utils.py b/oslo_messaging/tests/test_utils.py index 908c25fbf..05ca1c261 100644 --- a/oslo_messaging/tests/test_utils.py +++ b/oslo_messaging/tests/test_utils.py @@ -97,3 +97,17 @@ class TimerTestCase(test_utils.BaseTestCase): remaining = t.check_return(callback, 1, a='b') self.assertEqual(0, remaining) callback.assert_called_once_with(1, a='b') + + @mock.patch('oslo_utils.timeutils.now') + def test_reset(self, now): + now.return_value = 0 + t = common.DecayingTimer(3) + t.start() + + now.return_value = 1 + remaining = t.check_return() + self.assertEqual(2, remaining) + + t.restart() + remaining = t.check_return() + self.assertEqual(3, remaining)