aboutsummaryrefslogtreecommitdiff
path: root/pgo_tools/monitor_pgo_profiles.py
diff options
context:
space:
mode:
Diffstat (limited to 'pgo_tools/monitor_pgo_profiles.py')
-rwxr-xr-xpgo_tools/monitor_pgo_profiles.py70
1 files changed, 19 insertions, 51 deletions
diff --git a/pgo_tools/monitor_pgo_profiles.py b/pgo_tools/monitor_pgo_profiles.py
index be159b94..5c17423b 100755
--- a/pgo_tools/monitor_pgo_profiles.py
+++ b/pgo_tools/monitor_pgo_profiles.py
@@ -7,14 +7,11 @@
import argparse
import datetime
-import sys
-import subprocess
import logging
+import subprocess
+import sys
from typing import List, NamedTuple, Optional, Tuple
-from cros_utils import email_sender
-from cros_utils import tiny_render
-
PGO_BUILDBOT_LINK = ('https://ci.chromium.org/p/chromeos/builders/toolchain/'
'pgo-generate-llvm-next-orchestrator')
@@ -54,47 +51,35 @@ def fetch_most_recent_profdata(arch: str) -> ProfdataInfo:
return max(infos)
-def compose_complaint_email(
+def compose_complaint(
out_of_date_profiles: List[Tuple[datetime.datetime, ProfdataInfo]]
-) -> Optional[Tuple[str, tiny_render.Piece]]:
+) -> Optional[str]:
if not out_of_date_profiles:
return None
if len(out_of_date_profiles) == 1:
- subject = '1 llvm profile is out of date'
- body = ['out-of-date profile:']
+ body_lines = ['1 profile is out of date:']
else:
- subject = f'{len(out_of_date_profiles)} llvm profiles are out of date'
- body = ['out-of-date profiles:']
+ body_lines = [f'{len(out_of_date_profiles)} profiles are out of date:']
- out_of_date_items = []
for arch, profdata_info in out_of_date_profiles:
- out_of_date_items.append(
- f'{arch} (most recent profile was from {profdata_info.date} at '
+ body_lines.append(
+ f'- {arch} (most recent profile was from {profdata_info.date} at '
f'{profdata_info.location!r})')
- body += [
- tiny_render.UnorderedList(out_of_date_items),
- tiny_render.line_break,
- tiny_render.line_break,
+ body_lines.append('\n')
+ body_lines.append(
'PTAL to see if the llvm-pgo-generate bots are functioning normally. '
- 'Their status can be found at ',
- tiny_render.Link(href=PGO_BUILDBOT_LINK, inner=PGO_BUILDBOT_LINK),
- '.',
- ]
- return subject, body
+ f'Their status can be found at {PGO_BUILDBOT_LINK}.')
+ return '\n'.join(body_lines)
def main() -> None:
logging.basicConfig(level=logging.INFO)
parser = argparse.ArgumentParser(
- description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
- parser.add_argument(
- '--dry_run',
- action='store_true',
- help="Don't actually send an email",
- )
+ description=__doc__,
+ formatter_class=argparse.RawDescriptionHelpFormatter)
parser.add_argument(
'--max_age_days',
# These builders run ~weekly. If we fail to generate two in a row,
@@ -119,29 +104,12 @@ def main() -> None:
if age >= max_age:
out_of_date_profiles.append((arch, most_recent))
- email = compose_complaint_email(out_of_date_profiles)
- if not email:
- logging.info('No email to send; quit')
- return
-
- subject, body = email
+ complaint = compose_complaint(out_of_date_profiles)
+ if complaint:
+ logging.error('%s', complaint)
+ sys.exit(1)
- identifier = 'llvm-pgo-monitor'
- subject = f'[{identifier}] {subject}'
-
- logging.info('Sending email with title %r', subject)
- if args.dry_run:
- logging.info('Dry run specified\nSubject: %s\nBody:\n%s', subject,
- tiny_render.render_text_pieces(body))
- else:
- email_sender.EmailSender().SendX20Email(
- subject=subject,
- identifier=identifier,
- well_known_recipients=['mage'],
- direct_recipients=['gbiv@google.com'],
- text_body=tiny_render.render_text_pieces(body),
- html_body=tiny_render.render_html_pieces(body),
- )
+ logging.info('Nothing seems wrong')
if __name__ == '__main__':