From e21afc84a76c62231b3a770496c408de055ea186 Mon Sep 17 00:00:00 2001 From: Andrew Melton Date: Mon, 3 Mar 2014 13:06:02 -0500 Subject: [PATCH] Clearer event stats filtering --- stacktach/dbapi.py | 10 +++------- tests/unit/test_dbapi.py | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/stacktach/dbapi.py b/stacktach/dbapi.py index b9f7528..55b795b 100644 --- a/stacktach/dbapi.py +++ b/stacktach/dbapi.py @@ -478,13 +478,9 @@ def get_event_stats(request): events = list(events) if 'event' in request.GET: - event_filter = request.GET['event'] - event_count = {'event': event_filter, 'event_count': 0} - for event in events: - if event['event'] == event_filter: - event_count['event_count'] = event['event_count'] - break - events = [event_count, ] + event = request.GET['event'] + default = {'event': event, 'event_count': 0} + events = [x for x in events if x['event'] == event] or [default, ] return {'stats': events} except (KeyError, TypeError): diff --git a/tests/unit/test_dbapi.py b/tests/unit/test_dbapi.py index ba93418..3ebfaeb 100644 --- a/tests/unit/test_dbapi.py +++ b/tests/unit/test_dbapi.py @@ -1173,6 +1173,26 @@ class DBAPITestCase(StacktachBaseTestCase): json.dumps({'stats': [events[0]]})) self.mox.VerifyAll() + def test_get_verified_count_default(self): + fake_request = self.mox.CreateMockAnything() + fake_request.method = 'GET' + fake_request.GET = {'service': "nova", + 'event': 'compute.instance.exists.verified'} + mock_query = self.mox.CreateMockAnything() + models.RawData.objects.values('event').AndReturn(mock_query) + events = [ + {'event': 'compute.instance.create.start', 'event_count': 100}, + {'event': 'compute.instance.exists', 'event_count': 100} + ] + mock_query.annotate(event_count=mox.IsA(Count)).AndReturn(events) + self.mox.ReplayAll() + + response = dbapi.get_event_stats(fake_request) + self.assertEqual(response.status_code, 200) + self.assertEqual(response.content, + json.dumps({'stats': [{'event': 'compute.instance.exists.verified', 'event_count': 0}]})) + self.mox.VerifyAll() + def test_get_verified_count_wrong_date_format_returns_400(self): fake_request = self.mox.CreateMockAnything() fake_request.method = 'GET'