def test_no_action_when_in_progress(get_outcome_checker_mock, record_backfilled): outcome_checker_mock = get_outcome_checker_mock(OutcomeStatus.IN_PROGRESS) secretary = Secretary(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_secretary_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"] Secretary.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_uses_existing_settings(performance_settings): assert PerformanceSettings.objects.count() == 1 last_reset_date_before = json.loads( performance_settings.settings)["last_reset_date"] Secretary.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_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 Secretary.mark_reports_for_backfill() assert BackfillRecord.objects.filter( status=BackfillRecord.PRELIMINARY).count() == 1
def test_check_outcome_after_fail(get_outcome_checker_mock, record_backfilled): outcome_checker_mock = get_outcome_checker_mock(OutcomeStatus.FAILED) secretary = Secretary(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 sherlock_factory(days_to_lookup: timedelta) -> Sherlock: report_maintainer = __report_maintainer_factory(days_to_lookup) backfill_tool = backfill_tool_factory() secretary = Secretary() notify_client = notify_client_factory() return Sherlock(report_maintainer, backfill_tool, secretary, notify_client)
def secretary(): return Secretary()
def test_secretary_creates_new_settings_if_none_exist(db): assert PerformanceSettings.objects.count() == 0 Secretary.validate_settings() assert PerformanceSettings.objects.count() == 1