Skip to content

Commit b4728ed

Browse files
committed
fix(e2e): use flash undeploy CLI for reliable endpoint cleanup
Previous teardown called resource_config.undeploy() via asyncio.get_event_loop().run_until_complete() which could fail silently due to event loop state during pytest session teardown. Switch to subprocess flash undeploy --all --force which runs in a clean process, reads .runpod/resources.pkl directly, and handles the full undeploy lifecycle reliably.
1 parent 6efd46e commit b4728ed

1 file changed

Lines changed: 15 additions & 12 deletions

File tree

tests/e2e/conftest.py

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
"""E2E test fixtures: provision real endpoints, configure SDK, clean up."""
22

3-
import asyncio
43
import logging
54
import os
5+
import subprocess
66

77
import pytest
88
import runpod
@@ -52,17 +52,20 @@ def endpoints(require_api_key, test_cases):
5252
log.info("Endpoint ready: name=%s image=%s template.dockerArgs=%s", ep.name, ep.image, ep.template.dockerArgs if ep.template else "N/A")
5353
yield eps
5454

55-
# Undeploy all provisioned endpoints and templates
56-
log.info("Cleaning up %d provisioned endpoints", len(eps))
57-
for key, ep in eps.items():
58-
resource_config = ep._build_resource_config()
59-
try:
60-
result = asyncio.get_event_loop().run_until_complete(
61-
resource_config.undeploy()
62-
)
63-
log.info("Undeployed endpoint=%s result=%s", ep.name, result)
64-
except Exception as exc:
65-
log.warning("Failed to undeploy endpoint=%s: %s", ep.name, exc)
55+
# Undeploy all provisioned endpoints via CLI
56+
log.info("Cleaning up %d provisioned endpoints via flash undeploy", len(eps))
57+
try:
58+
result = subprocess.run(
59+
["flash", "undeploy", "--all", "--force"],
60+
capture_output=True,
61+
text=True,
62+
timeout=120,
63+
)
64+
log.info("flash undeploy stdout: %s", result.stdout)
65+
if result.returncode != 0:
66+
log.warning("flash undeploy failed (rc=%d): %s", result.returncode, result.stderr)
67+
except Exception:
68+
log.exception("Failed to run flash undeploy")
6669

6770

6871
@pytest.fixture(scope="session")

0 commit comments

Comments
 (0)