Files
ModelForge-Public/backend/tests/test_serving_generation.py
T

28 lines
1.4 KiB
Python

"""Legacy route entry points participate in the durable generation fence."""
from sqlalchemy.orm import Session
from modelforge_api.domain.serving import CapabilityPromotionCreate
from modelforge_api.persistence.models import CapabilityContract
from tests.test_serving import approve_and_promote, session, setup_m5
__all__ = ["session"]
def test_first_promotion_and_repeated_drain_do_not_allow_generation_reuse(session: Session):
service, candidate, _ = setup_m5(session)
approval, deployment = approve_and_promote(service, candidate.id)
contract = session.get(CapabilityContract, approval.capability_contract_id)
assert contract.serving_generation == deployment.route_generation == 1
replay = service.promote(candidate.id, CapabilityPromotionCreate(
production_approval_id=approval.id, keep_warm_seconds=900))
assert replay.id == deployment.id and contract.serving_generation == 1
service.request_unload(deployment.id)
assert contract.serving_generation == 1
service.request_unload(deployment.id, drain=True)
assert contract.serving_generation == 2
service.request_unload(deployment.id, drain=True)
assert contract.serving_generation == 2
replacement = service.promote(candidate.id, CapabilityPromotionCreate(
production_approval_id=approval.id, keep_warm_seconds=901))
assert replacement.id != deployment.id and contract.serving_generation == replacement.route_generation == 3