Skip to content
Open
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
38 changes: 37 additions & 1 deletion tests/perf/test_email.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
import pytest

from treeherder.perf.email import DeletionNotificationWriter, DeletionReportContent
from treeherder.perf.email import (
AlertNotificationWriter,
DeletionNotificationWriter,
DeletionReportContent,
)


class TestDeletionReportContent:
Expand Down Expand Up @@ -53,3 +57,35 @@ def __prepare_expected_content(test_perf_signature):
)
)
return expected_content


class TestAlertNotificationWriter:
def test_subject_and_content_use_suite_when_test_field_is_empty(
self, test_perf_alert, test_perf_alert_summary
):
test_perf_alert.series_signature.test = ""
test_perf_alert.series_signature.save()

writer = AlertNotificationWriter()
email = writer.prepare_new_email(
"test@example.com", test_perf_alert, test_perf_alert_summary
)

suite = test_perf_alert.series_signature.suite
assert suite in email["subject"]
assert suite in email["content"]

def test_subject_and_content_use_suite_dot_test_when_test_field_is_set(
self, test_perf_alert, test_perf_alert_summary
):
suite = test_perf_alert.series_signature.suite
test = test_perf_alert.series_signature.test
expected_test_name = f"{suite}.{test}"

writer = AlertNotificationWriter()
email = writer.prepare_new_email(
"test@example.com", test_perf_alert, test_perf_alert_summary
)

assert expected_test_name in email["subject"]
assert expected_test_name in email["content"]
12 changes: 9 additions & 3 deletions treeherder/perf/email.py
Original file line number Diff line number Diff line change
Expand Up @@ -321,15 +321,21 @@ def prepare_new_email(
self, email: str, alert: PerformanceAlert, alert_summary: PerformanceAlertSummary
) -> dict:
self._write_address(email)
self._write_subject(alert.series_signature.test)
self._write_content(alert.series_signature.test, str(alert_summary.id))

if not alert.series_signature.test:
test_name = alert.series_signature.suite
else:
test_name = f"{alert.series_signature.suite}.{alert.series_signature.test}"

self._write_subject(test_name)
self._write_content(test_name, str(alert_summary.id))
return self.email

def _write_address(self, email: str):
self._email.address = email

def _write_subject(self, test: str):
self._email.subject = f"Alert: Test {test} detected a performance change"
self._email.subject = f"Alert: Detected a performance change to {test} "

def _write_content(self, test: str, alert_summary_id: str):
content = AlertNotificationContent()
Expand Down