[CI] Skip worker-dependent SMG e2e tests pending runner-image debug (#24166)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
5f88c8593a
commit
cf346bb15d
@@ -5,11 +5,17 @@ on:
|
|||||||
branches: [ main ]
|
branches: [ main ]
|
||||||
paths:
|
paths:
|
||||||
- "sgl-model-gateway/**"
|
- "sgl-model-gateway/**"
|
||||||
|
- ".github/workflows/pr-test-rust.yml"
|
||||||
|
- "scripts/ci/cuda/ci_install_dependency.sh"
|
||||||
|
- "scripts/ci/cuda/ci_install_gateway_dependencies.sh"
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: [ main ]
|
branches: [ main ]
|
||||||
types: [opened, synchronize, reopened, labeled]
|
types: [opened, synchronize, reopened, labeled]
|
||||||
paths:
|
paths:
|
||||||
- "sgl-model-gateway/**"
|
- "sgl-model-gateway/**"
|
||||||
|
- ".github/workflows/pr-test-rust.yml"
|
||||||
|
- "scripts/ci/cuda/ci_install_dependency.sh"
|
||||||
|
- "scripts/ci/cuda/ci_install_gateway_dependencies.sh"
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
@@ -344,7 +350,11 @@ jobs:
|
|||||||
summarize-benchmarks:
|
summarize-benchmarks:
|
||||||
needs: gateway-e2e
|
needs: gateway-e2e
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
if: success()
|
# Disabled while e2e tests are skipped in
|
||||||
|
# sgl-model-gateway/e2e_test/fixtures/hooks.py — no benchmarks run, so the
|
||||||
|
# genai-bench-results-all-policies artifact is never produced and the
|
||||||
|
# download step would fail. Re-enable together with the skip removal.
|
||||||
|
if: false
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
|
|||||||
@@ -649,7 +649,10 @@ def _install_sglang_stubs(monkeypatch):
|
|||||||
entry_mod = types.ModuleType("sglang.srt.entrypoints")
|
entry_mod = types.ModuleType("sglang.srt.entrypoints")
|
||||||
http_server_mod = types.ModuleType("sglang.srt.entrypoints.http_server")
|
http_server_mod = types.ModuleType("sglang.srt.entrypoints.http_server")
|
||||||
server_args_mod = types.ModuleType("sglang.srt.server_args")
|
server_args_mod = types.ModuleType("sglang.srt.server_args")
|
||||||
|
# sglang.srt.utils was refactored from a module into a package; launch_server.py
|
||||||
|
# imports from sglang.srt.utils.network, so the stub must model the submodule.
|
||||||
utils_mod = types.ModuleType("sglang.srt.utils")
|
utils_mod = types.ModuleType("sglang.srt.utils")
|
||||||
|
network_mod = types.ModuleType("sglang.srt.utils.network")
|
||||||
|
|
||||||
def launch_server(_args):
|
def launch_server(_args):
|
||||||
return None
|
return None
|
||||||
@@ -684,7 +687,8 @@ def _install_sglang_stubs(monkeypatch):
|
|||||||
|
|
||||||
http_server_mod.launch_server = launch_server
|
http_server_mod.launch_server = launch_server
|
||||||
server_args_mod.ServerArgs = ServerArgs
|
server_args_mod.ServerArgs = ServerArgs
|
||||||
utils_mod.is_port_available = is_port_available
|
network_mod.is_port_available = is_port_available
|
||||||
|
utils_mod.network = network_mod
|
||||||
|
|
||||||
# Also stub external deps imported at module top-level
|
# Also stub external deps imported at module top-level
|
||||||
def _dummy_get(*_a, **_k):
|
def _dummy_get(*_a, **_k):
|
||||||
@@ -706,6 +710,7 @@ def _install_sglang_stubs(monkeypatch):
|
|||||||
)
|
)
|
||||||
monkeypatch.setitem(sys.modules, "sglang.srt.server_args", server_args_mod)
|
monkeypatch.setitem(sys.modules, "sglang.srt.server_args", server_args_mod)
|
||||||
monkeypatch.setitem(sys.modules, "sglang.srt.utils", utils_mod)
|
monkeypatch.setitem(sys.modules, "sglang.srt.utils", utils_mod)
|
||||||
|
monkeypatch.setitem(sys.modules, "sglang.srt.utils.network", network_mod)
|
||||||
|
|
||||||
|
|
||||||
def test_router_defaults_and_start(monkeypatch):
|
def test_router_defaults_and_start(monkeypatch):
|
||||||
|
|||||||
@@ -233,6 +233,37 @@ def pytest_collection_modifyitems(
|
|||||||
else:
|
else:
|
||||||
logger.info("Scanned worker requirements: (none)")
|
logger.info("Scanned worker requirements: (none)")
|
||||||
|
|
||||||
|
# TEMPORARY: skip every test that would launch an sglang worker subprocess.
|
||||||
|
#
|
||||||
|
# Workers crash at import inside transformers.integrations.hub_kernels →
|
||||||
|
# kernels.deps with:
|
||||||
|
# StrictDataclassFieldValidationError: Validation error for field
|
||||||
|
# 'import_name': TypeError: Unsupported type for field 'import_name': str | None
|
||||||
|
#
|
||||||
|
# The package combo (kernels==0.13.0 + huggingface_hub==1.12.2 +
|
||||||
|
# transformers==5.6.0) is NOT the bug — it imports cleanly in fresh
|
||||||
|
# python:3.10-slim and lmsysorg/sglang:dev containers. The crash is specific
|
||||||
|
# to the 4-gpu-a10 runner image (most likely a stale/partial huggingface_hub
|
||||||
|
# install where _BASIC_TYPE_VALIDATORS[types.UnionType] registration is
|
||||||
|
# missing). Remove this skip once the runner image is rebuilt.
|
||||||
|
#
|
||||||
|
# Filter on `model_pool` in fixturenames (covers setup_backend, model_client,
|
||||||
|
# model_base_url, backend_router — all transitively depend on model_pool) so
|
||||||
|
# tests without an explicit `@pytest.mark.e2e` marker are also skipped. Then
|
||||||
|
# clear scanned worker requirements so model_pool — if realized for any
|
||||||
|
# non-skipped fixture — starts empty and never spawns a worker.
|
||||||
|
skip_marker = pytest.mark.skip(
|
||||||
|
reason="worker-dependent tests disabled: SMG runner image crash on transformers.integrations.hub_kernels import"
|
||||||
|
)
|
||||||
|
for item in items:
|
||||||
|
if (
|
||||||
|
item.get_closest_marker("e2e") is not None
|
||||||
|
or "model_pool" in item.fixturenames
|
||||||
|
):
|
||||||
|
item.add_marker(skip_marker)
|
||||||
|
_worker_counts.clear()
|
||||||
|
_first_seen_order.clear()
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Pool requirements
|
# Pool requirements
|
||||||
|
|||||||
Reference in New Issue
Block a user