Module: check_mk
Branch: master
Commit: 00b2bf0039eac27ced1b1d69e2e3af2db9589b5b
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=00b2bf0039eac2…
Author: Óscar Nájera <on(a)mathias-kettner.de>
Date: Fri Mar 29 09:49:25 2019 +0100
Fix RRD data query integration tests for timezone independence
CMK-1761
Change-Id: I95f8cf1055b80680554039a78fb2dbaec799efb3
---
.../cmk_base/test_services_prediction.py | 55 +++++++++++++++-------
1 file changed, 39 insertions(+), 16 deletions(-)
diff --git a/tests/integration/cmk_base/test_services_prediction.py
b/tests/integration/cmk_base/test_services_prediction.py
index 9bad75c..70d511b 100644
--- a/tests/integration/cmk_base/test_services_prediction.py
+++ b/tests/integration/cmk_base/test_services_prediction.py
@@ -1,10 +1,12 @@
# pylint: disable=redefined-outer-name
+from contextlib import contextmanager
from datetime import datetime
import os
import time
import pytest
+import freezegun
import cmk.utils.prediction
from cmk.utils.exceptions import MKGeneralException
@@ -50,25 +52,46 @@ custom_checks = [
site.delete_dir("var/check_mk/rrd")
-(a)pytest.mark.parametrize('datedate, period, result', [
- pytest.param("2018-11-28 12", "minute", (60, 60), id='1 min
resolution in hour query'),
- pytest.param("2018-11-27 12", "minute", (300, 12), id='5 min
resolution in hour query'),
- pytest.param("2018-11-15 12", "minute", (1800, 2), id='30 min
resolution in hour query'),
+@contextmanager
+def on_time(utctime, timezone):
+ """Set the time and timezone for the test"""
+ os.environ['TZ'] = timezone
+ time.tzset()
+ with freezegun.freeze_time(utctime):
+ yield
+ os.environ.pop('TZ')
+ time.tzset()
+
+
+(a)pytest.mark.parametrize('utcdatedate, timezone, period, result', [
+ pytest.param("2018-11-28 12", "UTC", "minute", (60,
60), id='1 min resolution in hour query'),
+ pytest.param("2018-11-27 12", "UTC", "minute", (300,
12), id='5 min resolution in hour query'),
+ pytest.param(
+ "2018-11-15 12:25", "UTC", "minute", (1800, 2),
id='30 min resolution in hour query'),
+ pytest.param(
+ "2018-07-15 12", "UTC", "minute", (21600, 1),
id='hour query when resolution is 6hrs'),
+ pytest.param("2018-11-28 12", "UTC", "wday", (240,
360), id='max 360 points of data response'),
+ pytest.param("2018-11-27 12", "UTC", "wday", (300,
288), id='5 min resolution in day query'),
+ pytest.param("2018-11-10 12", "UTC", "day", (1800, 48),
id='30 min resolution in day query'),
pytest.param(
- "2018-07-15 12",
- "minute", (21600, 0),
- id='hour query when resolution is 6hrs',
- marks=pytest.mark.xfail),
- pytest.param("2018-11-28 12", "wday", (240, 360), id='max 360
points of data response'),
- pytest.param("2018-11-27 12", "wday", (300, 288), id='5 min
resolution in day query'),
- pytest.param("2018-11-10 12", "day", (1800, 48), id='30 min
resolution in day query'),
- pytest.param("2018-06-10 12", "hour", (21600, 4), id='6hrs
resolution in day query'),
+ "2018-06-10 12", "UTC", "hour", (21600, 4),
id='6hrs resolution in day query, in UTC'),
+ pytest.param(
+ "2018-06-10 12",
+ "Europe/Berlin",
+ "hour", (21600, 5),
+ id='6hrs resolution in day query, in Berlin'),
+ pytest.param(
+ "2018-06-10 12",
+ "America/New_York",
+ "hour", (21600, 5),
+ id='6hrs resolution in day query, in New_York'),
])
-def test_get_rrd_data(cfg_setup, date, period, result):
+def test_get_rrd_data(cfg_setup, utcdate, timezone, period, result):
- timestamp = time.mktime(datetime.strptime(date, "%Y-%m-%d
%H").timetuple())
- _, from_time, until_time, _ = prediction.get_prediction_timegroup(
- timestamp, prediction.prediction_periods[period])
+ with on_time(utcdate, timezone):
+ timestamp = time.time()
+ _, from_time, until_time, _ = prediction.get_prediction_timegroup(
+ timestamp, prediction.prediction_periods[period])
step, data = cmk.utils.prediction.get_rrd_data('test-prediction', 'CPU
load', 'load15', 'MAX',
from_time, until_time)