Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .github/workflows/vllm-torch-nightly-triage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,13 @@ jobs:
- cluster-logs/*.log one representative Buildkite log per cluster,
ANSI-stripped and tail-trimmed. The first lines of each file give the
cluster name, job name, job URL, state and exit status.
Files prefixed `both_` are red-on-both-twins clusters (see report.json
"regressed_tests"): the job fails on both the torch-nightly and
baseline build, but fails MORE tests on nightly. A "shared failure(s)"
section pairs each shared failure's torch_nightly_exception_chain and
baseline_exception_chain so you can judge whether a shared failure
changed. Only the torch-nightly-only tests listed above that section
are definitely new.

For each cluster, identify the actual failure: the failed test IDs and the
real exception. Remember that "Engine core initialization failed. See root
Expand Down
21 changes: 20 additions & 1 deletion tools/torchci/tests/test_vllm_log_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import unittest
from pathlib import Path

from torchci.vllm_log_parser import parse_log, strip_markers
from torchci.vllm_log_parser import get_test_signature, parse_log, strip_markers


FIXTURES_DIR = Path(__file__).parent / "fixtures"
Expand Down Expand Up @@ -889,5 +889,24 @@ def test_undefined_symbol_not_tagged(self) -> None:
self.assertFalse(parsed_log.job_is_infra)


class TestGetTestSignature(unittest.TestCase):
"""Signature is the (test_id, pytest_exception_class) 2-tuple."""

def test_signature_is_id_and_class(self) -> None:
log = (
"FAILED tests/test_a.py::test_one - ValueError: bad\n= 1 failed in 1.00s ="
)
failure = parse_log(log).pytest_results[0].test_failures[0]
self.assertEqual(
get_test_signature(failure),
("tests/test_a.py::test_one", "ValueError"),
)

def test_signature_empty_class_for_bare_failed(self) -> None:
log = "FAILED tests/test_a.py::test_one\n= 1 failed in 1.00s ="
failure = parse_log(log).pytest_results[0].test_failures[0]
self.assertEqual(get_test_signature(failure), ("tests/test_a.py::test_one", ""))


if __name__ == "__main__":
unittest.main()
Loading
Loading