Skip to content

Commit dca89fb

Browse files
added per test failures
1 parent 7732fe4 commit dca89fb

5 files changed

Lines changed: 911 additions & 44 deletions

File tree

.github/workflows/vllm-torch-nightly-triage.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,13 @@ jobs:
170170
- cluster-logs/*.log one representative Buildkite log per cluster,
171171
ANSI-stripped and tail-trimmed. The first lines of each file give the
172172
cluster name, job name, job URL, state and exit status.
173+
Files prefixed `both_` are red-on-both-twins clusters (see report.json
174+
"regressed_tests"): the job fails on both the torch-nightly and
175+
baseline build, but fails MORE tests on nightly. A "shared failure(s)"
176+
section pairs each shared failure's torch_nightly_exception_chain and
177+
baseline_exception_chain so you can judge whether a shared failure
178+
changed. Only the torch-nightly-only tests listed above that section
179+
are definitely new.
173180
174181
For each cluster, identify the actual failure: the failed test IDs and the
175182
real exception. Remember that "Engine core initialization failed. See root

tools/torchci/tests/test_vllm_log_parser.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import unittest
88
from pathlib import Path
99

10-
from torchci.vllm_log_parser import parse_log, strip_markers
10+
from torchci.vllm_log_parser import get_test_signature, parse_log, strip_markers
1111

1212

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

891891

892+
class TestGetTestSignature(unittest.TestCase):
893+
"""Signature is the (test_id, pytest_exception_class) 2-tuple."""
894+
895+
def test_signature_is_id_and_class(self) -> None:
896+
log = "FAILED tests/test_a.py::test_one - ValueError: bad\n= 1 failed in 1.00s ="
897+
failure = parse_log(log).pytest_results[0].test_failures[0]
898+
self.assertEqual(
899+
get_test_signature(failure),
900+
("tests/test_a.py::test_one", "ValueError"),
901+
)
902+
903+
def test_signature_empty_class_for_bare_failed(self) -> None:
904+
log = "FAILED tests/test_a.py::test_one\n= 1 failed in 1.00s ="
905+
failure = parse_log(log).pytest_results[0].test_failures[0]
906+
self.assertEqual(
907+
get_test_signature(failure), ("tests/test_a.py::test_one", "")
908+
)
909+
910+
892911
if __name__ == "__main__":
893912
unittest.main()

0 commit comments

Comments
 (0)