Adds the project's first test suite. Covers the
score_candidate() pure function from the previous refactor
commit, validating the qualitative properties that
KVC_ROUTER_ALGORITHM.md §3.1 and §4.2 rely on.
Tests / properties:
- determinism: same args -> same tuple
- shape: 4-int tuple
- primary term: overlap dominates pure sticky
- primary term: sticky_bonus credited
- tie-2 inflight: lower wins
- tie-3 assigned: lower wins
- strict lex order: sticky wins position-1 over fresh-idle
- load_floor disabled by default
- load_floor gated off when sticky=True
- load_floor zero during warmup (mean=0)
- load_floor proportional to deficit (200/100/0 at 0/50/100% load)
- load_floor does not underflow when overloaded
- real per-session overlap beats load_floor on warm D
- boilerplate overlap loses to load_floor on cold D
(the cold-D fix from E1_E2_FIX_DESIGN §Q2)
Test infrastructure:
- tests/ package with README explaining the GPU-free
scope and the run instruction
- pyproject.toml [dependency-groups] test = [pytest>=8]
(install via `uv sync --group test`)
- pyproject.toml [tool.pytest.ini_options] sets testpaths
Verified locally: 14/14 passing under pytest 9.0.3 in an
isolated 3.13 venv. No SGLang / GPU touched.
41 lines
914 B
TOML
41 lines
914 B
TOML
[project]
|
|
name = "agentic-pd-hybrid"
|
|
version = "0.1.0"
|
|
description = "Prototype for session-aware and KV-cache-aware PD routing on SGLang xPyD"
|
|
readme = "README.md"
|
|
requires-python = ">=3.12"
|
|
dependencies = [
|
|
"httpx>=0.28.1",
|
|
"mooncake-transfer-engine",
|
|
"sglang",
|
|
]
|
|
|
|
[project.scripts]
|
|
agentic-pd-hybrid = "agentic_pd_hybrid.cli:main"
|
|
|
|
[build-system]
|
|
requires = ["setuptools>=68"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[tool.setuptools.packages.find]
|
|
where = ["src"]
|
|
|
|
[dependency-groups]
|
|
# Pure-Python unit tests. Install via:
|
|
# uv sync --group test
|
|
# These tests deliberately import only the algorithm-layer modules
|
|
# (policies, trace, topology) so they run without SGLang / GPU / CUDA.
|
|
test = [
|
|
"pytest>=8.0",
|
|
]
|
|
|
|
[tool.uv]
|
|
prerelease = "allow"
|
|
|
|
[tool.uv.sources]
|
|
sglang = { path = "third_party/sglang/python", editable = true }
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|
|
addopts = "-q"
|