Add affinity_parallelism_model/tests/test_core.py
This commit is contained in:
parent
ef722eebd6
commit
ea30ddb9bf
1 changed files with 59 additions and 0 deletions
59
affinity_parallelism_model/tests/test_core.py
Normal file
59
affinity_parallelism_model/tests/test_core.py
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
import pytest
|
||||
import math
|
||||
import random
|
||||
|
||||
from affinity_parallelism_model import core
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def set_seed():
|
||||
random.seed(1234)
|
||||
|
||||
|
||||
def test_simulate_effects_keys_and_types():
|
||||
result = core.simulate_effects(4, 'randomized')
|
||||
# Check result type
|
||||
assert isinstance(result, dict)
|
||||
# Required keys
|
||||
assert set(result.keys()) == {'bandwidth', 'retry_tail'}
|
||||
# Type validation for fields
|
||||
assert isinstance(result['bandwidth'], float)
|
||||
assert isinstance(result['retry_tail'], float)
|
||||
|
||||
|
||||
def test_simulate_effects_value_ranges():
|
||||
# Parallelism levels and affinity types to test
|
||||
for parallelism, affinity in [(1, 'randomized'), (8, 'enforced')]:
|
||||
result = core.simulate_effects(parallelism, affinity)
|
||||
bandwidth = result['bandwidth']
|
||||
retry_tail = result['retry_tail']
|
||||
|
||||
# Bandwidth should be positive
|
||||
assert bandwidth > 0.0
|
||||
# Retry tail should be finite and within reasonable bounds
|
||||
assert -100.0 < retry_tail < 100.0
|
||||
|
||||
|
||||
def test_simulate_effects_invalid_inputs():
|
||||
# Negative parallelism level
|
||||
with pytest.raises(ValueError):
|
||||
core.simulate_effects(-5, 'randomized')
|
||||
|
||||
# Invalid affinity value type
|
||||
with pytest.raises(ValueError):
|
||||
core.simulate_effects(4, 'unsupported_affinity')
|
||||
|
||||
|
||||
def test_deterministic_behavior_with_seed():
|
||||
random.seed(999)
|
||||
r1 = core.simulate_effects(4, 'randomized')
|
||||
random.seed(999)
|
||||
r2 = core.simulate_effects(4, 'randomized')
|
||||
# Deterministic output when seed is fixed
|
||||
assert r1 == r2
|
||||
|
||||
|
||||
def test_parallelism_scaling_trend():
|
||||
# Higher parallelism generally increases bandwidth
|
||||
low = core.simulate_effects(2, 'enforced')['bandwidth']
|
||||
high = core.simulate_effects(16, 'enforced')['bandwidth']
|
||||
assert high >= low or math.isclose(high, low, rel_tol=1e-3)
|
||||
Loading…
Reference in a new issue