Files
jundot--omlx/tests/test_specprefill_policy.py
wehub-resource-sync e9a2f726c9
CI / test (3.11) (push) Has been cancelled
CI / test (3.12) (push) Has been cancelled
CI / test (3.13) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:29:51 +08:00

102 lines
2.9 KiB
Python

# SPDX-License-Identifier: Apache-2.0
"""Tests for SpecPrefill scoring admission."""
from __future__ import annotations
import pytest
from omlx.specprefill.policy import plan_specprefill_scoring
DEFAULT_THRESHOLD = 8
DEFAULT_KEEP_PCT = 0.20
def _conversation_tokens(count: int) -> list[int]:
return list(range(1_000, 1_000 + count))
def _plan(
remaining_tokens: list[int],
*,
system_prompt_end: int = 0,
cached_tokens: int = 0,
requested_threshold: int | None = None,
requested_keep_pct: float | None = None,
):
return plan_specprefill_scoring(
remaining_tokens=remaining_tokens,
system_prompt_end=system_prompt_end,
cached_tokens=cached_tokens,
requested_threshold=requested_threshold,
requested_keep_pct=requested_keep_pct,
default_threshold=DEFAULT_THRESHOLD,
default_keep_pct=DEFAULT_KEEP_PCT,
)
@pytest.mark.parametrize(
("system_token_count", "conversation_token_count"),
[(0, 8), (0, 7), (3, 8), (3, 7)],
)
def test_two_stage_admission_rejects_threshold_boundaries(
system_token_count: int, conversation_token_count: int
):
remaining_tokens = list(range(system_token_count)) + _conversation_tokens(
conversation_token_count
)
assert (
_plan(remaining_tokens, system_prompt_end=system_token_count) is None
)
@pytest.mark.parametrize(
("system_prompt_end", "cached_tokens", "expected_effective_system"),
[(5, 0, 5), (5, 3, 2), (5, 5, 0), (5, 8, 0)],
)
def test_system_prefix_exclusion_preserves_the_scoring_slice(
system_prompt_end: int,
cached_tokens: int,
expected_effective_system: int,
):
remaining_tokens = list(range(system_prompt_end)) + _conversation_tokens(10)
plan = _plan(
remaining_tokens,
system_prompt_end=system_prompt_end,
cached_tokens=cached_tokens,
)
assert plan is not None
assert plan.effective_system == expected_effective_system
assert list(plan.tokens_to_score) == remaining_tokens[expected_effective_system:]
assert plan.n_to_score == len(remaining_tokens) - expected_effective_system
@pytest.mark.parametrize(
("requested_threshold", "token_count", "should_admit"),
[(None, 8, False), (0, 8, False), (4, 5, True), (12, 10, False)],
)
def test_default_and_override_thresholds_control_admission(
requested_threshold: int | None, token_count: int, should_admit: bool
):
plan = _plan(
_conversation_tokens(token_count),
requested_threshold=requested_threshold,
)
assert (plan is not None) is should_admit
@pytest.mark.parametrize(
("requested_keep_pct", "expected_keep_pct"),
[(None, DEFAULT_KEEP_PCT), (0, DEFAULT_KEEP_PCT), (0.35, 0.35)],
)
def test_keep_percentage_uses_default_or_override(
requested_keep_pct: float | None, expected_keep_pct: float
):
plan = _plan(_conversation_tokens(10), requested_keep_pct=requested_keep_pct)
assert plan is not None
assert plan.keep_pct == expected_keep_pct