blob: a9a4ab6deba7a4fbed19888a1ca30141c48f371c [file] [log] [blame]
from typing import Any, List
from unittest import main, TestCase
from tools.alerts.create_alerts import filter_job_names, JobStatus
JOB_NAME = "periodic / linux-xenial-cuda10.2-py3-gcc7-slow-gradcheck / test (default, 2, 2, linux.4xlarge.nvidia.gpu)"
MOCK_TEST_DATA = [
{
"sha": "f02f3046571d21b48af3067e308a1e0f29b43af9",
"id": 7819529276,
"conclusion": "failure",
"htmlUrl": "https://github.com/pytorch/pytorch/runs/7819529276?check_suite_focus=true",
"logUrl": "https://ossci-raw-job-status.s3.amazonaws.com/log/7819529276",
"durationS": 14876,
"failureLine": "##[error]The action has timed out.",
"failureContext": "",
"failureCaptures": ["##[error]The action has timed out."],
"failureLineNumber": 83818,
"repo": "pytorch/pytorch",
},
{
"sha": "d0d6b1f2222bf90f478796d84a525869898f55b6",
"id": 7818399623,
"conclusion": "failure",
"htmlUrl": "https://github.com/pytorch/pytorch/runs/7818399623?check_suite_focus=true",
"logUrl": "https://ossci-raw-job-status.s3.amazonaws.com/log/7818399623",
"durationS": 14882,
"failureLine": "##[error]The action has timed out.",
"failureContext": "",
"failureCaptures": ["##[error]The action has timed out."],
"failureLineNumber": 72821,
"repo": "pytorch/pytorch",
},
]
class TestGitHubPR(TestCase):
# Should fail when jobs are ? ? Fail Fail
def test_alert(self) -> None:
modified_data: List[Any] = [{}]
modified_data.append({})
modified_data.extend(MOCK_TEST_DATA)
status = JobStatus(JOB_NAME, modified_data)
self.assertTrue(status.should_alert())
# test filter job names
def test_job_filter(self) -> None:
job_names = [
"pytorch_linux_xenial_py3_6_gcc5_4_test",
"pytorch_linux_xenial_py3_6_gcc5_4_test2",
]
self.assertListEqual(
filter_job_names(job_names, ""),
job_names,
"empty regex should match all jobs",
)
self.assertListEqual(filter_job_names(job_names, ".*"), job_names)
self.assertListEqual(filter_job_names(job_names, ".*xenial.*"), job_names)
self.assertListEqual(
filter_job_names(job_names, ".*xenial.*test2"),
["pytorch_linux_xenial_py3_6_gcc5_4_test2"],
)
self.assertListEqual(filter_job_names(job_names, ".*xenial.*test3"), [])
self.assertRaises(
Exception,
lambda: filter_job_names(job_names, "["),
msg="malformed regex should throw exception",
)
if __name__ == "__main__":
main()