diff options
author | Alex Schultz <aschultz@redhat.com> | 2017-01-26 16:58:37 -0700 |
---|---|---|
committer | Alex Schultz <aschultz@redhat.com> | 2017-01-26 16:58:37 -0700 |
commit | dc34ed43ddbb425fd4b6eb7eeb721daf7d36e147 (patch) | |
tree | 72316213541b404f41ebdac906986f3f3521953b | |
parent | 9a466ed73813c406455c3c8aadcda494f78c6f08 (diff) | |
download | designate-dc34ed43ddbb425fd4b6eb7eeb721daf7d36e147.tar.gz |
Fix noop metrics timed decorator
Previously if you did not have the monasca statds available, the @timed
decorator would result in a NoneType error because timed was returning
None instead of acting as a noop function wrapper. This change updates
the NoopTimer to properly handle timed being used as a function.
Change-Id: Ic5543b3503b24aaef960d8b7c0cb38940241cbcb
Closes-Bug: #1659638
-rw-r--r-- | designate/metrics_client/noop.py | 4 | ||||
-rw-r--r-- | designate/tests/unit/test_metrics/test_metrics.py | 18 |
2 files changed, 21 insertions, 1 deletions
diff --git a/designate/metrics_client/noop.py b/designate/metrics_client/noop.py index 435f4239..7b75ac35 100644 --- a/designate/metrics_client/noop.py +++ b/designate/metrics_client/noop.py @@ -69,7 +69,9 @@ class NoopTimer(object): pass def timed(self, *a, **kw): - pass + def wrapper(func): + return func + return wrapper class Client(object): diff --git a/designate/tests/unit/test_metrics/test_metrics.py b/designate/tests/unit/test_metrics/test_metrics.py index 9adc0cd0..89d13f84 100644 --- a/designate/tests/unit/test_metrics/test_metrics.py +++ b/designate/tests/unit/test_metrics/test_metrics.py @@ -53,6 +53,15 @@ class TestNoopMetrics(TestCase): self.assertIsInstance(self.metrics.timer(), noop.NoopTimer) self.assertIsNotNone(self.metrics.timed.__self__) + def test_noop_metrics_client_timed(self): + timer = self.metrics._client.get_timer() + + @timer.timed('timed.test') + def func(a): + return a + result = func(1) + self.assertEqual(result, 1) + class TestMonascaMetrics(TestCase): @@ -86,3 +95,12 @@ class TestMonascaMetrics(TestCase): self.assertIsInstance(self.metrics.timer(), monascastatsd.timer.Timer) self.assertIsNotNone(self.metrics.timed.__self__) + + def test_monasca_metrics_client_timed(self): + timer = self.metrics._client.get_timer() + + @timer.timed('timed.test') + def func(a): + return a + result = func(1) + self.assertEqual(result, 1) |