def test_no_action_when_in_progress(get_outcome_checker_mock, record_backfilled): outcome_checker_mock = get_outcome_checker_mock(OutcomeStatus.IN_PROGRESS) secretary = SecretaryTool(outcome_checker_mock) assert BackfillRecord.objects.filter(status=BackfillRecord.BACKFILLED).count() == 1 secretary.check_outcome() assert BackfillRecord.objects.filter(status=BackfillRecord.BACKFILLED).count() == 1
def test_check_outcome_after_fail(get_outcome_checker_mock, record_backfilled): outcome_checker_mock = get_outcome_checker_mock(OutcomeStatus.FAILED) secretary = SecretaryTool(outcome_checker_mock) assert BackfillRecord.objects.filter(status=BackfillRecord.BACKFILLED).count() == 1 assert BackfillRecord.objects.filter(status=BackfillRecord.FAILED).count() == 0 secretary.check_outcome() assert BackfillRecord.objects.filter(status=BackfillRecord.BACKFILLED).count() == 0 assert BackfillRecord.objects.filter(status=BackfillRecord.FAILED).count() == 1
def test_secretary_tool_resets_settings_if_expired(expired_performance_settings): assert PerformanceSettings.objects.count() == 1 expired_last_reset_date = json.loads(expired_performance_settings.settings)["last_reset_date"] SecretaryTool.validate_settings() assert PerformanceSettings.objects.count() == 1 settings_after = PerformanceSettings.objects.filter(name="perf_sheriff_bot").first() assert json.loads(settings_after.settings)["last_reset_date"] != expired_last_reset_date
def test_secretary_tool_uses_existing_settings(performance_settings): assert PerformanceSettings.objects.count() == 1 last_reset_date_before = json.loads(performance_settings.settings)["last_reset_date"] SecretaryTool.validate_settings() assert PerformanceSettings.objects.count() == 1 settings_after = PerformanceSettings.objects.filter(name="perf_sheriff_bot").first() assert json.loads(settings_after.settings)["last_reset_date"] == last_reset_date_before
def test_secretary_tool_updates_only_matured_reports( test_perf_alert, create_record, record_from_mature_report ): # create new report with records create_record(test_perf_alert) assert BackfillRecord.objects.count() == 2 assert BackfillRecord.objects.filter(status=BackfillRecord.PRELIMINARY).count() == 2 SecretaryTool.mark_reports_for_backfill() assert BackfillRecord.objects.filter(status=BackfillRecord.PRELIMINARY).count() == 1
def perf_sheriff_bot_factory(days_to_lookup: timedelta) -> PerfSheriffBot: report_maintainer = __report_maintainer_factory(days_to_lookup) backfill_tool = __backfill_tool_factory() secretary_tool = SecretaryTool() notify_client = notify_client_factory() return PerfSheriffBot(report_maintainer, backfill_tool, secretary_tool, notify_client)
def test_secretary_tool_updates_only_matured_reports(test_perf_alert, test_perf_alert_2, create_record): # create new report with records create_record(test_perf_alert) # create mature report with records date_past = datetime.utcnow() - timedelta(hours=5) with patch('django.utils.timezone.now', Mock(return_value=date_past)): create_record(test_perf_alert_2) assert BackfillRecord.objects.count() == 2 assert BackfillRecord.objects.filter( status=BackfillRecord.PRELIMINARY).count() == 2 SecretaryTool.mark_reports_for_backfill() assert BackfillRecord.objects.filter( status=BackfillRecord.PRELIMINARY).count() == 1
def secretary(): return SecretaryTool()
def test_secretary_tool_creates_new_settings_if_none_exist(db): assert PerformanceSettings.objects.count() == 0 SecretaryTool.validate_settings() assert PerformanceSettings.objects.count() == 1