From 2cdf5fea6130bbaf664ebcac9dba01ce652106da Mon Sep 17 00:00:00 2001 From: redref Date: Thu, 2 Feb 2017 17:53:20 +0100 Subject: [PATCH] Fix python3 chart (_iter_dates) --- puppetboard/dailychart.py | 7 +++++-- test/test_app.py | 23 +++++++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/puppetboard/dailychart.py b/puppetboard/dailychart.py index d5b893a..c32df9e 100644 --- a/puppetboard/dailychart.py +++ b/puppetboard/dailychart.py @@ -9,7 +9,7 @@ DATE_FORMAT = "%Y-%m-%d" DATETIME_FORMAT = "%Y-%m-%dT%H:%M:%S.%fZ" -def _iter_dates(days_number): +def _iter_dates(days_number, reverse=False): """Return a list of datetime pairs AB, BC, CD, ... that represent the 24hs time ranges of today (until this midnight) and the previous days. @@ -18,6 +18,9 @@ def _iter_dates(days_number): today = datetime.utcnow().replace(hour=0, minute=0, second=0, microsecond=0, tzinfo=UTC()) days_list = list(today + one_day * (1 - i) for i in range(days_number + 1)) + if reverse: + days_list.reverse() + return zip(days_list, days_list[1:]) return zip(days_list[1:], days_list) @@ -65,7 +68,7 @@ def get_daily_reports_chart(db, env, days_number, certname=None): the database will be considered. """ result = [] - for start, end in reversed(_iter_dates(days_number)): + for start, end in _iter_dates(days_number, reverse=True): query = _build_query( env=env, start=start.strftime(DATETIME_FORMAT), diff --git a/test/test_app.py b/test/test_app.py index 53241ef..80728c7 100644 --- a/test/test_app.py +++ b/test/test_app.py @@ -523,3 +523,26 @@ def test_json_report_ok(client, mocker, input_data): assert 'data' in result_json assert len(result_json['data']) == 100 + + +def test_json_daily_reports_chart_ok(client, mocker): + mock_puppetdb_environments(mocker) + mock_puppetdb_default_nodes(mocker) + + query_data = { + 'reports': [ + [{'status': 'changed', 'count': 1}] + for i in range(app.app.config['DAILY_REPORTS_CHART_DAYS']) + ] + } + + import logging + logging.error(query_data) + + dbquery = MockDbQuery(query_data) + + mocker.patch.object(app.puppetdb, '_query', side_effect=dbquery.get) + + rv = client.get('/daily_reports_chart.json') + + assert rv.status_code == 200