InferScale-Sim / tests /test_simulator.py
ArchitSharma's picture
Rebuild InferScale as interactive serving simulator v0.1
0c6c82c
Raw
History Blame Contribute Delete
1.42 kB
from inferscale import run_simulation
def base_config():
return {
"duration_s": 8,
"request_rate_rps": 1.5,
"prompt_tokens_mean": 128,
"prompt_tokens_cv": 0.1,
"output_tokens_mean": 16,
"output_tokens_cv": 0.1,
"seed": 3,
}
def test_simulation_completes_requests():
result = run_simulation(base_config())
assert result["summary"]["requests_generated"] > 0
assert result["summary"]["requests_unfinished"] == 0
assert result["latency"]["ttft_ms"]["p95"] > 0
assert result["resource"]["peak_kv_gb"] >= 0
assert result["provenance"]["latency_profile_type"] == "analytical-reference"
def test_high_load_increases_tail_latency():
low = base_config()
high = base_config()
low["request_rate_rps"] = 0.5
high["request_rate_rps"] = 8.0
a = run_simulation(low)
b = run_simulation(high)
assert b["latency"]["ttft_ms"]["p95"] >= a["latency"]["ttft_ms"]["p95"]
def test_static_and_continuous_are_distinct():
cfg = base_config()
cfg.update({"request_rate_rps": 4.0, "output_tokens_mean": 32})
cfg["scheduler"] = "static_fcfs"
static = run_simulation(cfg)
cfg["scheduler"] = "continuous_fcfs"
continuous = run_simulation(cfg)
assert static["summary"]["goodput_rps"] != continuous["summary"]["goodput_rps"] or static["latency"]["ttft_ms"]["p95"] != continuous["latency"]["ttft_ms"]["p95"]