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)
Beispiel #7
0
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()
Beispiel #9
0
def test_secretary_tool_creates_new_settings_if_none_exist(db):
    assert PerformanceSettings.objects.count() == 0

    SecretaryTool.validate_settings()

    assert PerformanceSettings.objects.count() == 1