From 36d22d82aa202bb199967e9512281e9a53db42c9 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 21:33:14 +0200 Subject: Adding upstream version 115.7.0esr. Signed-off-by: Daniel Baumann --- .../mozperftest/mozperftest/tests/test_influx.py | 121 +++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 python/mozperftest/mozperftest/tests/test_influx.py (limited to 'python/mozperftest/mozperftest/tests/test_influx.py') diff --git a/python/mozperftest/mozperftest/tests/test_influx.py b/python/mozperftest/mozperftest/tests/test_influx.py new file mode 100644 index 0000000000..5e5db67eb8 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_influx.py @@ -0,0 +1,121 @@ +#!/usr/bin/env python +import json +import re +import sys + +import mozunit +import pytest +import responses + +from mozperftest.metrics.perfboard.influx import Influx +from mozperftest.tests.support import ( + BT_DATA, + EXAMPLE_TEST, + get_running_env, + running_on_try, +) +from mozperftest.utils import ON_TRY, temp_dir + + +def mocks(): + # mocking the Influx service + responses.add( + responses.GET, + "http://influxdb/ping", + body=json.dumps({"version": "1"}), + headers={"x-influxdb-version": "1"}, + status=204, + ) + + responses.add( + responses.POST, + "http://influxdb/write", + body=json.dumps({"version": "1"}), + headers={"x-influxdb-version": "1"}, + status=204, + ) + + responses.add( + responses.GET, + "http://grafana/api/search?tag=component", + body=json.dumps([]), + status=200, + ) + + responses.add( + responses.POST, + "http://grafana/api/dashboards/db", + body=json.dumps({"uid": "id"}), + status=200, + ) + + responses.add( + responses.GET, + "http://grafana/api/dashboards/uid/id", + body=json.dumps({"dashboard": {"panels": []}}), + status=200, + ) + + responses.add( + responses.GET, + re.compile( + "https://firefox-ci-tc.services.mozilla.com/secrets/*|" + "http://taskcluster/secrets/*" + ), + body=json.dumps( + { + "secret": { + "influx_host": "influxdb", + "influx_port": 0, + "influx_user": "admin", + "influx_password": "pass", + "influx_db": "db", + "grafana_key": "xxx", + "grafana_host": "grafana", + "grafana_port": 0, + } + } + ), + status=200, + ) + + +@responses.activate +@pytest.mark.parametrize("on_try", [True, False]) +def test_influx_service(on_try): + if ON_TRY and sys.platform == "darwin": + # macos slave in the CI are restricted + return + + mocks() + with running_on_try(on_try), temp_dir() as output: + args = { + "verbose": True, + "output": output, + "perfboard-influx-password": "xxx", + "perfboard-grafana-key": "xxx", + "perfboard-grafana-host": "grafana", + "perfboard-influx-port": 0, + "perfboard-influx-host": "influxdb", + "tests": [EXAMPLE_TEST], + } + + mach_cmd, metadata, env = get_running_env(**args) + metadata.add_result({"results": str(BT_DATA), "name": "browsertime"}) + layer = Influx(env, mach_cmd) + layer.setup() + try: + metadata = layer.run(metadata) + finally: + layer.teardown() + + index = on_try and 2 or 1 + sent_data = responses.calls[index].request.body.split(b"\n") + fields = [line.split(b",")[0].strip() for line in sent_data] + assert b"rumspeedindex" in fields + + responses.reset() + + +if __name__ == "__main__": + mozunit.main() -- cgit v1.2.3