|
60 | 60 | git_fetch_counter: metrics.Counter = meter.create_counter(name="fetch") |
61 | 61 | git_fetch_duration: metrics.Histogram = meter.create_histogram(name="fetch.duration_ms") |
62 | 62 | pr_summary_report: metrics.Counter = meter.create_counter(name="pr_summary_reports") |
| 63 | +email_success_counter: metrics.Counter = meter.create_counter(name="email.success") |
| 64 | +email_failure_counter: metrics.Counter = meter.create_counter(name="email.failure") |
| 65 | +email_conflict_counter: metrics.Counter = meter.create_counter(name="email.conflict") |
| 66 | +email_send_fail_counter: metrics.Counter = meter.create_counter(name="email.send_fail") |
63 | 67 | pr_created: metrics.Counter = meter.create_counter(name="pull_requests.created") |
64 | 68 | pr_updated: metrics.Counter = meter.create_counter(name="pull_requests.updated") |
65 | 69 | pr_closed: metrics.Counter = meter.create_counter(name="pull_requests.closed") |
@@ -227,6 +231,15 @@ def furnish_ci_email_body(ctx: EmailBodyContext) -> str: |
227 | 231 | ) |
228 | 232 |
|
229 | 233 |
|
| 234 | +def bump_email_status_counters(status: Status): |
| 235 | + if status == Status.SUCCESS: |
| 236 | + email_success_counter.add(1) |
| 237 | + elif status == Status.FAILURE: |
| 238 | + email_failure_counter.add(1) |
| 239 | + else: |
| 240 | + email_conflict_counter.add(1) |
| 241 | + |
| 242 | + |
230 | 243 | def generate_msg_id(host: str) -> str: |
231 | 244 | """Generate an email message ID based on the provided host.""" |
232 | 245 | checksum = hashlib.sha256(str(time.time()).encode("utf-8")).hexdigest() |
@@ -331,6 +344,7 @@ async def send_email( |
331 | 344 | rc = await proc.wait() |
332 | 345 | if rc != 0: |
333 | 346 | logger.error(f"failed to send email: {stdout.decode()} {stderr.decode()}") |
| 347 | + email_send_fail_counter.add(1) |
334 | 348 |
|
335 | 349 |
|
336 | 350 | def _is_pr_flagged(pr: PullRequest) -> bool: |
@@ -1201,6 +1215,7 @@ async def evaluate_ci_result( |
1201 | 1215 | ctx = build_email_body_context(self.repo, pr, status, series, inline_logs) |
1202 | 1216 | body = furnish_ci_email_body(ctx) |
1203 | 1217 | await send_email(email, series, subject, body) |
| 1218 | + bump_email_status_counters(status) |
1204 | 1219 |
|
1205 | 1220 | def expire_branches(self) -> None: |
1206 | 1221 | for branch in self.branches: |
|
0 commit comments