diff --git a/devel/populate.sh b/devel/populate.sh index 94590c82f5e74800c80b58cb61eb909dfba142b2..bc1d784c5d8f012198402da37c31d416b1015fa6 100755 --- a/devel/populate.sh +++ b/devel/populate.sh @@ -3,8 +3,8 @@ set -x set -e -systemctl stop systemd-timesyncd.service -date -s '2021-01-01 00:00:01' +#systemctl stop systemd-timesyncd.service +#date -s '2021-01-01 00:00:01' ### /!\ Remove PRIMARY KEY for fastest ingestion #perl -0777 -i.original -pe 's/,\n +PRIMARY KEY\(timestamp, device_id, metric_id, labels\)//igs' /opt/kwollect/lib/python3.7/site-packages/kwollect/tools/kwollect_setup_db.py diff --git a/devel/test.py b/devel/test.py index 9a88530ea62aaff4448cd7f5c9d49519846cf153..6d9cb5aa39d59a9478d5bd08b9145f79654973e4 100644 --- a/devel/test.py +++ b/devel/test.py @@ -3,29 +3,46 @@ import requests import pytest import time +import json -def req(params): +def metrics(params): r = requests.get("http://localhost:3000/rpc/get_metrics", params=params) assert r.ok return r.json() +def metrics_available(params={}): + r = requests.post( + "http://localhost:3000/rpc/available_metrics", + data=json.dumps(params), + headers={"Content-Type": "application/json"}, + ) + assert r.ok + return r.json() + + def test_request(): - assert len(req({"devices": "device-1", "start_time": "2020-12-31T22:59:59"})) > 0 + assert ( + len(metrics({"devices": "device-1", "start_time": "2020-12-31T22:59:59"})) > 0 + ) def test_devices(): assert 2 * len( - req({"devices": "device-1", "start_time": "2020-12-31T22:59:59"}) + metrics({"devices": "device-1", "start_time": "2020-12-31T22:59:59"}) ) == pytest.approx( - len(req({"devices": "device-1,device-2", "start_time": "2020-12-31T22:59:59"})) + len( + metrics( + {"devices": "device-1,device-2", "start_time": "2020-12-31T22:59:59"} + ) + ) ) def test_starttime(): assert ( - req({"devices": "device-1", "start_time": "2020-12-31T22:59:59.999"})[0][ + metrics({"devices": "device-1", "start_time": "2020-12-31T22:59:59.999"})[0][ "timestamp" ] == "2020-12-31T23:00:00+00:00" @@ -34,7 +51,7 @@ def test_starttime(): def test_endtime(): assert ( - req( + metrics( { "devices": "device-1", "start_time": "2020-12-31T22:59:59", @@ -48,7 +65,7 @@ def test_endtime(): def test_metric(): assert all( r["metric_id"] == "metric-1" - for r in req( + for r in metrics( { "devices": "device-1", "start_time": "2020-12-31T22:59:59", @@ -59,27 +76,30 @@ def test_metric(): def test_job(): - assert all(r["device_id"] in ("device-1", "device-2") for r in req({"job_id": 1})) - assert req({"job_id": 1})[0]["timestamp"] == "2020-12-31T22:00:05+00:00" - assert req({"job_id": 1})[-1]["timestamp"] == "2020-12-31T22:59:55+00:00" + assert all( + r["device_id"] in ("device-1", "device-2") for r in metrics({"job_id": 1}) + ) + assert metrics({"job_id": 1})[0]["timestamp"] == "2020-12-31T22:00:05+00:00" + assert metrics({"job_id": 1})[-1]["timestamp"] == "2020-12-31T22:59:55+00:00" def test_job_devices(): assert all( - r["device_id"] == "device-1" for r in req({"job_id": 1, "devices": "device-1"}) + r["device_id"] == "device-1" + for r in metrics({"job_id": 1, "devices": "device-1"}) ) def test_job_starttime(): assert ( - req({"job_id": 1, "start_time": "2020-12-31T22:29:59.999"})[0]["timestamp"] + metrics({"job_id": 1, "start_time": "2020-12-31T22:29:59.999"})[0]["timestamp"] == "2020-12-31T22:30:00+00:00" ) def test_job_endtime(): assert ( - req( + metrics( { "job_id": 1, "start_time": "2020-12-31T22:29:59.999", @@ -89,7 +109,7 @@ def test_job_endtime(): == "2020-12-31T22:30:00+00:00" ) assert ( - req( + metrics( { "job_id": 1, "start_time": "2020-12-31T22:29:59.999", @@ -102,13 +122,13 @@ def test_job_endtime(): def test_job_notfinished(): assert ( - req({"job_id": 2, "devices": "device-5",})[ + metrics({"job_id": 2, "devices": "device-5",})[ -1 ]["timestamp"] == "2021-01-01T00:00:00+00:00" ) assert ( - req({"job_id": 2, "end_time": "2020-12-31T22:40:00.0001",})[ + metrics({"job_id": 2, "end_time": "2020-12-31T22:40:00.0001",})[ -1 ]["timestamp"] == "2020-12-31T22:40:00+00:00" @@ -118,7 +138,7 @@ def test_job_notfinished(): def test_job_metric(): assert all( r["metric_id"] == "metric-1" - for r in req( + for r in metrics( { "job_id": 1, "metrics": "metric-1", @@ -127,10 +147,56 @@ def test_job_metric(): ) +def test_available_metrics(): + # devices from last min + assert len(metrics_available()) > -1 + + +def test_available_metrics_old(): + # devices from last 5 min + assert not any( + m["device_id"] == "local" + for m in metrics_available({"at": "2020-12-31T22:59:59"}) + ) + + +def test_available_metrics_devices(): + # devices from last 5 min + assert len(metrics_available({"params": {"devices": ["notexist"]}})) == 0 + + +def test_available_metrics_both(): + # devices from last 5 min + assert all( + m["device_id"] in ("device-1", "device-2") + for m in metrics_available( + { + "at": "2020-12-31T22:59:59", + "params": {"devices": ["device-1", "device-2"]}, + } + ) + ) + + +def test_available_metrics_job(): + # terminated job + assert all( + m["device_id"] in ("device-1", "device-2") + for m in metrics_available({"params": {"job_id": 1}}) + ) + + +def test_available_metrics_jobrun(): + # running job + assert all( + m["device_id"] == "local" for m in metrics_available({"params": {"job_id": 3}}) + ) + + def test_kwollect_snmp(): assert ( len( - req( + metrics( { "devices": "local", "metrics": "snmp_dumb", @@ -144,7 +210,7 @@ def test_kwollect_snmp(): def test_kwollect_snmptemplate(): assert ( len( - req( + metrics( { "devices": "local", "metrics": "snmp_template", @@ -158,7 +224,7 @@ def test_kwollect_snmptemplate(): def test_kwollect_prom(): assert ( len( - req( + metrics( { "devices": "local", "metrics": "prom_node_load1",