Add bandwidth_analysis/tests/test_core.py
This commit is contained in:
parent
06195f5c88
commit
0e16477415
1 changed files with 73 additions and 0 deletions
73
bandwidth_analysis/tests/test_core.py
Normal file
73
bandwidth_analysis/tests/test_core.py
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
import json
|
||||
import pandas as pd
|
||||
import pytest
|
||||
from bandwidth_analysis import core
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def baseline_data():
|
||||
# Simulierte Basisdaten
|
||||
return pd.DataFrame({
|
||||
'segment': ['A', 'B', 'C'],
|
||||
'bandwidth': [100, 200, 300],
|
||||
'retry_tail': [0.01, 0.02, 0.03]
|
||||
})
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def test_data():
|
||||
# Simulierte Testdaten
|
||||
return pd.DataFrame({
|
||||
'segment': ['A', 'B', 'C'],
|
||||
'bandwidth': [110, 250, 270],
|
||||
'retry_tail': [0.012, 0.018, 0.04]
|
||||
})
|
||||
|
||||
|
||||
def test_analyze_bandwidth_nominal(baseline_data, test_data):
|
||||
result = core.analyze_bandwidth(baseline_data, test_data)
|
||||
|
||||
assert isinstance(result, dict)
|
||||
assert all(k in result for k in ['bandwidth_change', 'retry_tail_change', 'hotspot_segments'])
|
||||
|
||||
# Erwartete Richtung der Veränderung prüfen
|
||||
assert result['bandwidth_change'] > 0 # durchschnittliche Erhöhung
|
||||
assert isinstance(result['retry_tail_change'], float)
|
||||
assert isinstance(result['hotspot_segments'], list)
|
||||
|
||||
|
||||
def test_analyze_bandwidth_dict_input():
|
||||
baseline_dict = {
|
||||
'segment': ['X', 'Y'],
|
||||
'bandwidth': [100, 200],
|
||||
'retry_tail': [0.05, 0.1]
|
||||
}
|
||||
test_dict = {
|
||||
'segment': ['X', 'Y'],
|
||||
'bandwidth': [120, 180],
|
||||
'retry_tail': [0.04, 0.12]
|
||||
}
|
||||
result = core.analyze_bandwidth(baseline_dict, test_dict)
|
||||
|
||||
assert isinstance(result, dict)
|
||||
assert isinstance(result['bandwidth_change'], float)
|
||||
assert isinstance(result['retry_tail_change'], float)
|
||||
|
||||
|
||||
def test_invalid_input_raises():
|
||||
with pytest.raises((TypeError, ValueError)):
|
||||
core.analyze_bandwidth(None, None)
|
||||
|
||||
|
||||
def test_hotspot_detection(baseline_data, test_data):
|
||||
result = core.analyze_bandwidth(baseline_data, test_data)
|
||||
# Hotspot sollte mindestens einen betroffenen Abschnitt enthalten
|
||||
assert any(seg in ['A', 'B', 'C'] for seg in result['hotspot_segments'])
|
||||
|
||||
|
||||
def test_output_serializable(baseline_data, test_data):
|
||||
result = core.analyze_bandwidth(baseline_data, test_data)
|
||||
# Ergebnis muss JSON-serialisierbar sein
|
||||
json_str = json.dumps(result)
|
||||
restored = json.loads(json_str)
|
||||
assert restored.keys() == result.keys()
|
||||
Loading…
Reference in a new issue