File size: 1,118 Bytes
ce2d64b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
from inferscale import run_simulation


def test_trace_replay_preserves_arrivals_and_lengths():
    trace = [
        {"arrival_time": 0.4, "prompt_tokens": 96, "output_tokens": 8},
        {"arrival_time": 0.1, "prompt_tokens": 64, "output_tokens": 6},
        {"arrival_time": 0.9, "prompt_tokens": 128, "output_tokens": 10},
    ]
    result = run_simulation({
        "model": "Qwen2.5-3B",
        "accelerator": "L4",
        "quantization": "int8",
        "arrival_process": "trace",
        "trace_requests": trace,
        "duration_s": 2,
        "slo_ttft_ms": 5000,
        "slo_e2e_ms": 10000,
    })
    rows = result["requests"]
    assert result["summary"]["requests_generated"] == 3
    assert [row["arrival_time"] for row in rows] == [0.1, 0.4, 0.9]
    assert [row["prompt_tokens"] for row in rows] == [64, 96, 128]


def test_trace_replay_rejects_bad_rows():
    try:
        run_simulation({"arrival_process": "trace", "trace_requests": [{"arrival_time": 0.0}]})
    except ValueError as exc:
        assert "Trace row" in str(exc)
    else:
        raise AssertionError("bad trace should fail")