oncall-engine/engine/apps/alerts/tests
Joey Orlando d5b43b0439
minor improvements for check_escalation_finished celery task (#2554)
# What this PR does

This PR adds some enhancements to the `check_escalation_finished` celery
task. It short-circuits auditing of an alert group if it does not have
an escalation chain associated with it. In
`EscalationSnapshotMixin.start_escalation_if_needed`
we will not set `raw_escalation_snapshot`
([here](https://github.com/grafana/oncall/blob/dev/engine/apps/alerts/escalation_snapshot/escalation_snapshot_mixin.py#L262))
in this case:
```python3
def start_escalation_if_needed(self, countdown=START_ESCALATION_DELAY, eta=None):
        """
        :type self:AlertGroup
        """
        AlertGroup = apps.get_model("alerts", "AlertGroup")

        is_on_maintenace_or_debug_mode = self.channel.maintenance_mode is not None

        if (
            self.is_restricted
            or is_on_maintenace_or_debug_mode
            or self.pause_escalation
            or not self.escalation_chain_exists <-- here
        ):
            logger.debug(
                f"Not escalating alert group w/ pk: {self.pk}\n"
                f"is_restricted: {self.is_restricted}\n"
                f"is_on_maintenace_or_debug_mode: {is_on_maintenace_or_debug_mode}\n"
                f"pause_escalation: {self.pause_escalation}\n"
                f"escalation_chain_exists: {self.escalation_chain_exists}"
            )
            return

        logger.debug(f"Start escalation for alert group with pk: {self.pk}")

        # take raw escalation snapshot from db if escalation is paused
        raw_escalation_snapshot = (
            self.build_raw_escalation_snapshot() if not self.pause_escalation else self.raw_escalation_snapshot
        )
        task_id = celery_uuid()

        AlertGroup.all_objects.filter(pk=self.pk,).update(
            active_escalation_id=task_id,
            is_escalation_finished=False,
            raw_escalation_snapshot=raw_escalation_snapshot,
        )
```

`EscalationSnapshotMixin.escalation_chain_exists` is as such:
```python3
@property
    def escalation_chain_exists(self) -> bool:
        if self.pause_escalation:
            return False
        elif not self.channel_filter:
            return False
        return self.channel_filter.escalation_chain is not None
```

## Checklist

- [x] Unit, integration, and e2e (if applicable) tests updated
- [ ] Documentation added (or `pr:no public docs` PR label added if not
required) (N/A)
- [ ] `CHANGELOG.md` updated (or `pr:no changelog` PR label added if not
required) (N/A)
2023-07-17 14:04:53 +00:00
..
__init__.py World, meet OnCall! 2022-06-03 08:09:47 -06:00
conftest.py modify check_escalation_finished_task task (#1266) 2023-03-17 10:14:08 +00:00
factories.py add mypy static type checker to backend codebase (#2151) 2023-06-12 12:50:33 -04:00
test_alert.py Add escalation chain option when creating a direct page alert group (#1143) 2023-01-18 12:58:26 -03:00
test_alert_group.py Remove outdated Slack functionality to create alerts (#2383) 2023-06-29 10:09:02 +00:00
test_alert_group_renderer.py Refactor get_user_verbal_for_team_for_slack. (#809) 2023-03-07 10:09:37 +00:00
test_alert_manager.py World, meet OnCall! 2022-06-03 08:09:47 -06:00
test_alert_receiver_channel.py Remove INTEGRATIONS_TO_REVERSE_URL_MAP (#2533) 2023-07-17 04:43:24 +00:00
test_channel_filter.py augment API response pagination attributes (#2471) 2023-07-14 11:19:40 -04:00
test_check_escalation_finished_task.py minor improvements for check_escalation_finished celery task (#2554) 2023-07-17 14:04:53 +00:00
test_custom_button.py add mypy static type checker to backend codebase (#2151) 2023-06-12 12:50:33 -04:00
test_custom_webhook_result.py Add escalation chain support for new webhooks (#1654) 2023-04-05 12:03:55 +00:00
test_default_templates.py Fix warnings when running backend tests (#2079) 2023-06-06 18:38:00 +00:00
test_escalation_chain.py Allow changing team for escalation chains (#1658) 2023-03-30 10:43:00 +01:00
test_escalation_policy_snapshot.py Fix warnings when running backend tests (#2079) 2023-06-06 18:38:00 +00:00
test_escalation_snapshot.py Add escalation chain support for new webhooks (#1654) 2023-04-05 12:03:55 +00:00
test_escalation_snapshot_mixin.py modify check_escalation_finished_task task (#1266) 2023-03-17 10:14:08 +00:00
test_grafana_alerting_sync.py Update find contact point name, receiver could be missing key (#2046) 2023-05-29 18:52:24 +00:00
test_incident_log_builder.py World, meet OnCall! 2022-06-03 08:09:47 -06:00
test_maintenance.py remove organization maintenance mode + fix integration maintenance mode (#2511) 2023-07-12 16:41:44 -04:00
test_notify_ical_schedule_shift.py add mypy static type checker to backend codebase (#2151) 2023-06-12 12:50:33 -04:00
test_notify_user.py Add RBAC Support (#777) 2022-11-29 09:41:56 +01:00
test_paging.py Direct paging improvements (#2537) 2023-07-17 14:21:56 +01:00
test_representative.py World, meet OnCall! 2022-06-03 08:09:47 -06:00
test_silence.py OnCall prometheus metrics exporter (#1605) 2023-05-25 18:26:13 +00:00
test_utils.py Fix outgoing webhook to resolve IP from parsed hostname 2022-09-22 14:35:37 -03:00
test_wipe.py World, meet OnCall! 2022-06-03 08:09:47 -06:00