From a149bd6bb7c5b9eaf19a4f57f26a2ba18a4a6827 Mon Sep 17 00:00:00 2001 From: Ishaan Jaff Date: Wed, 6 May 2026 15:27:50 -0700 Subject: [PATCH] test: NoopProvider lifecycle + idempotent terminate LIT-2878 --- .../vm_providers/test_noop.py | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 tests/test_litellm/proxy/agent_session_endpoints/vm_providers/test_noop.py diff --git a/tests/test_litellm/proxy/agent_session_endpoints/vm_providers/test_noop.py b/tests/test_litellm/proxy/agent_session_endpoints/vm_providers/test_noop.py new file mode 100644 index 00000000000..92d4de96833 --- /dev/null +++ b/tests/test_litellm/proxy/agent_session_endpoints/vm_providers/test_noop.py @@ -0,0 +1,46 @@ +"""Mocked tests for the `NoopProvider`.""" + +from __future__ import annotations + +import pytest + +from litellm.proxy.agent_session_endpoints.vm_providers import ( + NoopProvider, + ProvisionContext, + VMState, +) + + +@pytest.mark.asyncio +async def test_noop_provision_returns_handle(): + provider = NoopProvider() + ctx = ProvisionContext(session_id="sess-1", team_id="team-1") + handle = await provider.provision(ctx) + assert handle.vm_id.startswith("noop-") + assert handle.provider == "noop" + assert handle.metadata["session_id"] == "sess-1" + assert handle.metadata["team_id"] == "team-1" + + +@pytest.mark.asyncio +async def test_noop_status_lifecycle(): + provider = NoopProvider() + ctx = ProvisionContext(session_id="sess-1", team_id="team-1") + handle = await provider.provision(ctx) + + status = await provider.status(handle) + assert status.state == VMState.RUNNING + assert status.public_ip == "127.0.0.1" + + await provider.terminate(handle) + status_after = await provider.status(handle) + assert status_after.state == VMState.TERMINATED + + +@pytest.mark.asyncio +async def test_noop_terminate_idempotent(): + provider = NoopProvider() + handle = await provider.provision(ProvisionContext(session_id="s", team_id="t")) + await provider.terminate(handle) + # Second call must not raise. + await provider.terminate(handle)