#!/usr/bin/env python3 # -*- coding: utf-8 -*- """作业 5 · 指标解析自测(不连 GPU,先红后绿)。""" from __future__ import annotations import sys import _bootstrap # noqa: F401 from 作业5_vllm_health import ( parse_docker_status, parse_nvidia_smi, parse_vllm_queue, get_gpu_info, get_request_queue, get_vllm_status, ) def test_parse_docker_status() -> None: raw = "/vllm-qwen3.6-27b|true|running|2026-08-18T01:00:00Z|vllm/vllm-openai:latest" got = parse_docker_status(raw) assert got["running"] is True assert got["status"] == "running" assert got["container"] == "vllm-qwen3.6-27b" def test_parse_nvidia_smi() -> None: raw = "0, NVIDIA H20, 37, 0 %, 83868 MiB, 97871 MiB" got = parse_nvidia_smi(raw) assert got["gpus"][0]["name"] == "NVIDIA H20" assert got["gpus"][0]["temperature_c"] == 37 assert got["gpus"][0]["utilization"] == "0 %" assert got["gpus"][0]["memory_used_mib"] == 83868 assert got["gpus"][0]["memory_total_mib"] == 97871 def test_parse_vllm_queue() -> None: raw = """ # HELP vllm:num_requests_waiting ... vllm:num_requests_running{engine="0",model_name="qwen3.6-27b"} 1.0 vllm:num_requests_waiting{engine="0",model_name="qwen3.6-27b"} 3.0 vllm:num_requests_waiting_by_reason{engine="0",model_name="qwen3.6-27b",reason="capacity"} 2.0 vllm:kv_cache_usage_perc{engine="0",model_name="qwen3.6-27b"} 0.42 """ got = parse_vllm_queue(raw) assert got["waiting"] == 3.0 assert got["running"] == 1.0 assert got["kv_cache_usage_perc"] == 0.42 def test_tools_use_injected_runner() -> None: def runner(cmd: str) -> str: if "inspect" in cmd: return "/vllm-qwen3.6-27b|true|running|t|img" if "nvidia-smi" in cmd: return "0, NVIDIA H20, 37, 0 %, 100 MiB, 200 MiB" if "metrics" in cmd: return 'vllm:num_requests_waiting{engine="0"} 5.0\nvllm:num_requests_running{engine="0"} 1.0\n' raise AssertionError(cmd) st = get_vllm_status(runner=runner) gpu = get_gpu_info(runner=runner) q = get_request_queue(runner=runner) assert st["running"] is True assert gpu["gpus"][0]["name"] == "NVIDIA H20" assert q["waiting"] == 5.0 def main() -> int: test_parse_docker_status() test_parse_nvidia_smi() test_parse_vllm_queue() test_tools_use_injected_runner() print("[PASS] 作业5 解析自测") return 0 if __name__ == "__main__": sys.exit(main())