disable telemetry in automated tests

This commit is contained in:
Senko Rasic
2024-06-11 16:17:33 +02:00
parent 4743fccbaf
commit ca77cc5055
3 changed files with 25 additions and 8 deletions

View File

@@ -2,6 +2,7 @@ import sys
import time
import traceback
from copy import deepcopy
from os import getenv
from pathlib import Path
from typing import Any
@@ -320,7 +321,7 @@ class Telemetry:
Note: this method clears all telemetry data after sending it.
"""
if not self.enabled:
if not self.enabled or getenv("DISABLE_TELEMETRY"):
log.debug("Telemetry.send(): telemetry is disabled, not sending data")
return
@@ -362,7 +363,7 @@ class Telemetry:
:param name: name of the event
:param data: data to send with the event
"""
if not self.enabled:
if not self.enabled or getenv("DISABLE_TELEMETRY"):
return
payload = {

View File

@@ -1,6 +1,8 @@
import os
from typing import Callable
from unittest.mock import AsyncMock, MagicMock, patch
import pytest
import pytest_asyncio
from core.config import DBConfig
@@ -9,6 +11,11 @@ from core.db.session import SessionManager
from core.state.state_manager import StateManager
@pytest.fixture(autouse=True)
def disable_test_telemetry(monkeypatch):
os.environ["DISABLE_TELEMETRY"] = "1"
@pytest_asyncio.fixture
async def testmanager():
"""

View File

@@ -98,14 +98,15 @@ def test_inc_ignores_unknown_data_field(mock_settings):
assert "unknown_field" not in telemetry.data
@patch("core.telemetry.getenv")
@patch("core.telemetry.time")
@patch("core.telemetry.settings")
def test_start_with_telemetry_enabled(mock_settings, mock_time):
def test_start_with_telemetry_enabled(mock_settings, mock_time, mock_getenv):
mock_settings.telemetry = MagicMock(id="test-id", endpoint="test-endpoint", enabled=True)
mock_time.time.return_value = 1234.0
mock_getenv.return_value = None # override DISABLE_TELEMETRY test env var
telemetry = Telemetry()
telemetry.start()
assert telemetry.start_time == 1234.0
@@ -134,9 +135,11 @@ def test_stop_calculates_elapsed_time(mock_settings, mock_time):
@pytest.mark.asyncio
@patch("core.telemetry.getenv")
@patch("core.telemetry.settings")
async def test_send_enabled_and_successful(mock_settings, mock_httpx_post):
async def test_send_enabled_and_successful(mock_settings, mock_getenv, mock_httpx_post):
mock_settings.telemetry = MagicMock(id="test-id", endpoint="test-endpoint", enabled=True)
mock_getenv.return_value = None # override DISABLE_TELEMETRY test env var
telemetry = Telemetry()
with patch.object(telemetry, "calculate_statistics"):
@@ -151,10 +154,12 @@ async def test_send_enabled_and_successful(mock_settings, mock_httpx_post):
@pytest.mark.asyncio
@patch("core.telemetry.getenv")
@patch("core.telemetry.settings")
async def test_send_enabled_but_post_fails(mock_settings, mock_httpx_post):
async def test_send_enabled_but_post_fails(mock_settings, mock_getenv, mock_httpx_post):
mock_settings.telemetry = MagicMock(id="test-id", endpoint="test-endpoint", enabled=True)
mock_httpx_post.side_effect = httpx.RequestError("Connection error")
mock_getenv.return_value = None # override DISABLE_TELEMETRY test env var
telemetry = Telemetry()
with patch.object(telemetry, "calculate_statistics"):
@@ -180,9 +185,11 @@ async def test_send_not_enabled(mock_settings, mock_httpx_post):
@pytest.mark.asyncio
@patch("core.telemetry.getenv")
@patch("core.telemetry.settings")
async def test_send_no_endpoint_configured(mock_settings, mock_httpx_post):
async def test_send_no_endpoint_configured(mock_settings, mock_getenv, mock_httpx_post):
mock_settings.telemetry = MagicMock(id="test-id", endpoint=None, enabled=True)
mock_getenv.return_value = None # override DISABLE_TELEMETRY test env var
telemetry = Telemetry()
await telemetry.send()
@@ -191,9 +198,11 @@ async def test_send_no_endpoint_configured(mock_settings, mock_httpx_post):
@pytest.mark.asyncio
@patch("core.telemetry.getenv")
@patch("core.telemetry.settings")
async def test_send_clears_counters_after_sending(mock_settings, mock_httpx_post):
async def test_send_clears_counters_after_sending(mock_settings, mock_getenv, mock_httpx_post):
mock_settings.telemetry = MagicMock(id="test-id", endpoint="test-endpoint", enabled=True)
mock_getenv.return_value = None # override DISABLE_TELEMETRY test env var
telemetry = Telemetry()
telemetry.data["model"] = "test-model"