def test_has_metric( self, store: RealtimeMetricsStore, mock_update_lpq_eligibility: mock.Mock ) -> None: store.increment_project_event_counter(project_id=17, timestamp=0) with TaskRunner(): _scan_for_suspect_projects() assert mock_update_lpq_eligibility.delay.called
def test_no_metrics_not_in_lpq( self, store: RealtimeMetricsStore, mock_update_lpq_eligibility: mock.Mock ) -> None: assert store.get_lpq_projects() == set() with TaskRunner(): _scan_for_suspect_projects() assert store.get_lpq_projects() == set() assert not mock_update_lpq_eligibility.delay.called
def test_is_eligible_in_lpq( self, store: RealtimeMetricsStore, monkeypatch: "pytest.MonkeyPatch" ) -> None: store.add_project_to_lpq(17) monkeypatch.setattr( low_priority_symbolication, "excessive_event_rate", lambda proj, counts: True ) _update_lpq_eligibility(project_id=17, cutoff=10) assert store.get_lpq_projects() == {17}
def test_is_eligible_recently_moved( self, store: RealtimeMetricsStore, monkeypatch: "pytest.MonkeyPatch" ) -> None: store._backoff_timer = 10 # Abusing the fact that removing always updates the backoff timer even if it's a noop store.remove_projects_from_lpq({17}) monkeypatch.setattr( low_priority_symbolication, "excessive_event_rate", lambda proj, counts: True ) _update_lpq_eligibility(17, 10) assert store.get_lpq_projects() == set()
def test_not_eligible_recently_moved(self, store: RealtimeMetricsStore) -> None: store._backoff_timer = 10 store.add_project_to_lpq(17) _update_lpq_eligibility(17, 10) assert store.get_lpq_projects() == {17}
def test_not_eligible_not_lpq(self, store: RealtimeMetricsStore) -> None: _update_lpq_eligibility(project_id=17, cutoff=10) assert store.get_lpq_projects() == set()
def test_no_counts_no_durations_in_lpq(self, store: RealtimeMetricsStore) -> None: store.add_project_to_lpq(17) assert store.get_lpq_projects() == {17} _update_lpq_eligibility(project_id=17, cutoff=10) assert store.get_lpq_projects() == set()