Esempio n. 1
0
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
Esempio n. 2
0
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
Esempio n. 3
0
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
Esempio n. 4
0
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
Esempio n. 5
0
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
Esempio n. 6
0
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)
Esempio n. 7
0
def secretary():
    return Secretary()
Esempio n. 8
0
def test_secretary_creates_new_settings_if_none_exist(db):
    assert PerformanceSettings.objects.count() == 0

    Secretary.validate_settings()

    assert PerformanceSettings.objects.count() == 1