From b411df1d1dd2436824532e2c75ffa06e9d14c705 Mon Sep 17 00:00:00 2001 From: Roland Date: Thu, 30 Jun 2022 16:22:57 -0600 Subject: [PATCH 1/3] Adding minimum tests for status functions and page. --- wrolpi/status.py | 2 +- wrolpi/test/test_root_api.py | 9 +++++++++ wrolpi/test/test_status.py | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 wrolpi/test/test_status.py diff --git a/wrolpi/status.py b/wrolpi/status.py index 68fcae1f..f74dd479 100644 --- a/wrolpi/status.py +++ b/wrolpi/status.py @@ -6,7 +6,7 @@ import subprocess from dataclasses import dataclass from decimal import Decimal from pathlib import Path -from typing import List, Optional +from typing import List from wrolpi.common import logger diff --git a/wrolpi/test/test_root_api.py b/wrolpi/test/test_root_api.py index 7f3964e9..df488018 100644 --- a/wrolpi/test/test_root_api.py +++ b/wrolpi/test/test_root_api.py @@ -297,3 +297,12 @@ def test_clear_downloads(test_session, test_client, test_config, test_download_m # Failed once-downloads will not be downloaded again. assert DOWNLOAD_MANAGER_CONFIG.skip_urls == ['https://example.com/5', ] + + +def test_get_status(test_client): + """Get the server status information.""" + request, response = test_client.get('/api/status') + assert response.status_code == HTTPStatus.OK + assert 'cpu_info' in response.json and isinstance(response.json['cpu_info'], dict) + assert 'load' in response.json and isinstance(response.json['load'], dict) + assert 'drives' in response.json and isinstance(response.json['drives'], list) diff --git a/wrolpi/test/test_status.py b/wrolpi/test/test_status.py new file mode 100644 index 00000000..ece3cbf7 --- /dev/null +++ b/wrolpi/test/test_status.py @@ -0,0 +1,32 @@ +from decimal import Decimal + +import pytest + +from wrolpi import status + + +@pytest.mark.asyncio +async def test_get_load(): + """Minimum laod testing because this will fail in docker, etc.""" + load = await status.get_load() + assert isinstance(load, status.SystemLoad) + assert load.minute_1 is not None and isinstance(load.minute_1, Decimal) + assert load.minute_5 is not None and isinstance(load.minute_5, Decimal) + assert load.minute_15 is not None and isinstance(load.minute_15, Decimal) + + +@pytest.mark.asyncio +async def test_get_cpu_info(): + """Minimum CPU info testing because this will fail in docker, etc.""" + info = await status.get_cpu_info() + assert isinstance(info, status.CPUInfo) + assert info.max_frequency > 0 + + +@pytest.mark.asyncio +async def test_get_drives_info(): + """Minimum drives info testing because this will fail in docker, etc.""" + info = await status.get_drives_info() + assert isinstance(info, list) + assert len(info) >= 1 + assert isinstance(info[0], status.DriveInfo) From 9270c5a79ad068a3ba645706eb4665a13b05f34a Mon Sep 17 00:00:00 2001 From: Roland Date: Thu, 30 Jun 2022 16:25:34 -0600 Subject: [PATCH 2/3] Removing assertion for circleci. --- wrolpi/test/test_status.py | 1 - 1 file changed, 1 deletion(-) diff --git a/wrolpi/test/test_status.py b/wrolpi/test/test_status.py index ece3cbf7..cf2ff423 100644 --- a/wrolpi/test/test_status.py +++ b/wrolpi/test/test_status.py @@ -20,7 +20,6 @@ async def test_get_cpu_info(): """Minimum CPU info testing because this will fail in docker, etc.""" info = await status.get_cpu_info() assert isinstance(info, status.CPUInfo) - assert info.max_frequency > 0 @pytest.mark.asyncio From 2cc4c8a1e05f5c6563c16f999a46ff9071ff9af7 Mon Sep 17 00:00:00 2001 From: Roland Date: Thu, 30 Jun 2022 16:26:26 -0600 Subject: [PATCH 3/3] Testing for percent in circleci. --- wrolpi/test/test_status.py | 1 + 1 file changed, 1 insertion(+) diff --git a/wrolpi/test/test_status.py b/wrolpi/test/test_status.py index cf2ff423..d1abe10e 100644 --- a/wrolpi/test/test_status.py +++ b/wrolpi/test/test_status.py @@ -20,6 +20,7 @@ async def test_get_cpu_info(): """Minimum CPU info testing because this will fail in docker, etc.""" info = await status.get_cpu_info() assert isinstance(info, status.CPUInfo) + assert isinstance(info.percent, int) @pytest.mark.asyncio