Add max_alert_logging/tests/test_core.py
This commit is contained in:
parent
15fbd84b32
commit
c40828e561
1 changed files with 81 additions and 0 deletions
81
max_alert_logging/tests/test_core.py
Normal file
81
max_alert_logging/tests/test_core.py
Normal file
|
|
@ -0,0 +1,81 @@
|
||||||
|
import pytest
|
||||||
|
import json
|
||||||
|
from pathlib import Path
|
||||||
|
from typing import Any, Dict
|
||||||
|
|
||||||
|
import src.max_alert_logging.core as core
|
||||||
|
|
||||||
|
|
||||||
|
def load_test_data() -> list[Dict[str, Any]]:
|
||||||
|
data_path = Path(__file__).parent / 'data' / 'test_logs.json'
|
||||||
|
assert data_path.exists(), f"Missing test data file: {data_path}"
|
||||||
|
with open(data_path, 'r', encoding='utf-8') as f:
|
||||||
|
data = json.load(f)
|
||||||
|
assert isinstance(data, list), "Expected a list of log entries"
|
||||||
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope='module')
|
||||||
|
def sample_entries():
|
||||||
|
return load_test_data()
|
||||||
|
|
||||||
|
|
||||||
|
def test_log_alert_nominal(sample_entries):
|
||||||
|
entry = sample_entries[0]
|
||||||
|
result = core.log_alert(
|
||||||
|
corr_id=entry['corr_id'],
|
||||||
|
stratum=entry['stratum'],
|
||||||
|
job_parallelism=entry['job_parallelism'],
|
||||||
|
expires_at_dist_hours=entry['expires_at_dist_hours'],
|
||||||
|
t_gate_read=entry['t_gate_read'],
|
||||||
|
t_index_visible=entry['t_index_visible'],
|
||||||
|
retry_taken=entry['retry_taken'],
|
||||||
|
retry_total_overhead_ms=entry['retry_total_overhead_ms'],
|
||||||
|
policy_hash=entry['policy_hash'],
|
||||||
|
setup_fingerprint=entry['setup_fingerprint']
|
||||||
|
)
|
||||||
|
assert isinstance(result, bool)
|
||||||
|
assert result is True
|
||||||
|
|
||||||
|
|
||||||
|
def test_log_alert_duplicate(sample_entries):
|
||||||
|
# Logging same entry twice should return False on second try
|
||||||
|
entry = sample_entries[0]
|
||||||
|
first = core.log_alert(**entry)
|
||||||
|
second = core.log_alert(**entry)
|
||||||
|
assert first is True
|
||||||
|
assert second is False
|
||||||
|
|
||||||
|
|
||||||
|
def test_log_alert_invalid_types():
|
||||||
|
# Invalid param type should raise TypeError or AssertionError
|
||||||
|
with pytest.raises((TypeError, AssertionError)):
|
||||||
|
core.log_alert(
|
||||||
|
corr_id=123,
|
||||||
|
stratum='alpha',
|
||||||
|
job_parallelism='not_int',
|
||||||
|
expires_at_dist_hours=1.0,
|
||||||
|
t_gate_read=2.0,
|
||||||
|
t_index_visible=3.0,
|
||||||
|
retry_taken=1,
|
||||||
|
retry_total_overhead_ms=100.0,
|
||||||
|
policy_hash='abc123',
|
||||||
|
setup_fingerprint='fp1'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_log_alert_edge_cases():
|
||||||
|
result = core.log_alert(
|
||||||
|
corr_id='edgecase1',
|
||||||
|
stratum='',
|
||||||
|
job_parallelism=0,
|
||||||
|
expires_at_dist_hours=0.0,
|
||||||
|
t_gate_read=0.0,
|
||||||
|
t_index_visible=0.0,
|
||||||
|
retry_taken=0,
|
||||||
|
retry_total_overhead_ms=0.0,
|
||||||
|
policy_hash='',
|
||||||
|
setup_fingerprint=''
|
||||||
|
)
|
||||||
|
assert isinstance(result, bool)
|
||||||
|
assert result is True
|
||||||
Loading…
Reference in a new issue