From 378133d6b4751008642a15452fd78f916ca8d70e Mon Sep 17 00:00:00 2001 From: Mika Date: Sat, 28 Mar 2026 16:47:36 +0000 Subject: [PATCH] Add 1_interferenz_metrics_parser/tests/test_core.py --- .../tests/test_core.py | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 1_interferenz_metrics_parser/tests/test_core.py diff --git a/1_interferenz_metrics_parser/tests/test_core.py b/1_interferenz_metrics_parser/tests/test_core.py new file mode 100644 index 0000000..bb342c7 --- /dev/null +++ b/1_interferenz_metrics_parser/tests/test_core.py @@ -0,0 +1,59 @@ +import json +import pytest +from pathlib import Path +from interferenz_metrics_parser import core + + +@pytest.fixture +def sample_log_file(tmp_path): + data = [ + {"run_id": "run_01", "retry_tail_p99": 0.99, "band_width": 120.5, "mix_ratio": 0.3}, + {"run_id": "run_02", "retry_tail_p99": 1.23, "band_width": 98.7, "mix_ratio": 0.7} + ] + file_path = tmp_path / "sample_log.json" + file_path.write_text(json.dumps(data)) + return file_path + + +def test_parse_interference_logs_valid(sample_log_file): + result = core.parse_interference_logs(str(sample_log_file)) + assert isinstance(result, list) + assert len(result) == 2 + + first = result[0] + assert hasattr(first, 'run_id') + assert hasattr(first, 'retry_tail_p99') + assert hasattr(first, 'band_width') + assert hasattr(first, 'mix_ratio') + + assert first.run_id == 'run_01' + assert pytest.approx(first.retry_tail_p99, rel=1e-3) == 0.99 + assert pytest.approx(first.band_width, rel=1e-3) == 120.5 + assert pytest.approx(first.mix_ratio, rel=1e-3) == 0.3 + + +def test_parse_interference_logs_invalid_json(tmp_path): + invalid_content = "{ 'bad_json': True, }" + file_path = tmp_path / "bad_log.json" + file_path.write_text(invalid_content) + + with pytest.raises((json.JSONDecodeError, ValueError)): + core.parse_interference_logs(str(file_path)) + + +def test_parse_interference_logs_missing_fields(tmp_path): + incomplete_data = [{"run_id": "run_03", "retry_tail_p99": 0.45}] + file_path = tmp_path / "incomplete.json" + file_path.write_text(json.dumps(incomplete_data)) + + result = core.parse_interference_logs(str(file_path)) + # Sollte leere Liste oder gefilterte gültige Ergebnisse zurückgeben + assert isinstance(result, list) + assert all(hasattr(item, 'run_id') for item in result) + + +def test_parse_interference_logs_empty_file(tmp_path): + empty_file = tmp_path / "empty.json" + empty_file.write_text("") + with pytest.raises((json.JSONDecodeError, ValueError)): + core.parse_interference_logs(str(empty_file))