summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Schultz <aschultz@redhat.com>2017-01-26 16:58:37 -0700
committerAlex Schultz <aschultz@redhat.com>2017-01-26 16:58:37 -0700
commitdc34ed43ddbb425fd4b6eb7eeb721daf7d36e147 (patch)
tree72316213541b404f41ebdac906986f3f3521953b
parent9a466ed73813c406455c3c8aadcda494f78c6f08 (diff)
downloaddesignate-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.py4
-rw-r--r--designate/tests/unit/test_metrics/test_metrics.py18
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)