Skip to content

Commit a9b64b9

Browse files
author
Alex Finder
committed
Add filtering by all sheriffed frameworks in Alerts View
1 parent f408054 commit a9b64b9

File tree

4 files changed

+65
-6
lines changed

4 files changed

+65
-6
lines changed

tests/webapp/api/test_performance_alertsummary_api.py

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,11 @@
66

77
from tests.conftest import create_perf_alert
88
from treeherder.model.models import Push
9-
from treeherder.perf.models import PerformanceAlert, PerformanceAlertSummary
9+
from treeherder.perf.models import (
10+
PerformanceAlert,
11+
PerformanceAlertSummary,
12+
PerformanceFramework,
13+
)
1014

1115

1216
@pytest.fixture
@@ -130,6 +134,36 @@ def test_alert_summaries_get(
130134
}
131135

132136

137+
def test_alert_summaries_sheriffed_frameworks(
138+
client, test_perf_alert_summary, test_perf_alert_summary_2, test_perf_framework
139+
):
140+
browsertime = PerformanceFramework.objects.create(name="browsertime", enabled=True)
141+
platform_microbench = PerformanceFramework.objects.create(
142+
name="platform_microbench", enabled=True
143+
)
144+
test_perf_alert_summary.framework = browsertime
145+
test_perf_alert_summary.save()
146+
test_perf_alert_summary_2.framework = platform_microbench
147+
test_perf_alert_summary_2.save()
148+
resp = client.get(
149+
reverse("performance-alert-summaries-list"), {"show_sheriffed_frameworks": True}
150+
)
151+
assert resp.status_code == 200
152+
153+
assert len(resp.json()["results"]) == 1
154+
assert resp.json()["results"][0]["framework"] == browsertime.id
155+
156+
test_perf_alert_summary.framework = test_perf_framework
157+
test_perf_alert_summary.save()
158+
159+
resp = client.get(
160+
reverse("performance-alert-summaries-list"), {"show_sheriffed_frameworks": True}
161+
)
162+
assert resp.status_code == 200
163+
164+
assert len(resp.json()["results"]) == 0
165+
166+
133167
def test_alert_summaries_get_onhold(
134168
client,
135169
test_perf_alert_summary,

treeherder/webapp/api/performance_data.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -347,6 +347,7 @@ class PerformanceAlertSummaryFilter(django_filters.FilterSet):
347347
hide_related_and_invalid = django_filters.BooleanFilter(method="_hide_related_and_invalid")
348348
with_assignee = django_filters.CharFilter(method="_with_assignee")
349349
timerange = django_filters.NumberFilter(method="_timerange")
350+
show_sheriffed_frameworks = django_filters.BooleanFilter(method="_show_sheriffed_frameworks")
350351

351352
def _filter_text(self, queryset, name, value):
352353
sep = Value(" ")
@@ -418,6 +419,19 @@ def _timerange(self, queryset, name, value):
418419
push__time__gt=datetime.datetime.utcfromtimestamp(int(time.time() - int(value)))
419420
)
420421

422+
def _show_sheriffed_frameworks(self, queryset, name, value):
423+
return queryset.filter(
424+
framework__name__in=[
425+
"browsertime",
426+
"awsy",
427+
"talos",
428+
"build_metrics",
429+
"js-bench",
430+
"mozperftest",
431+
"devtools",
432+
]
433+
)
434+
421435
class Meta:
422436
model = PerformanceAlertSummary
423437
fields = [

ui/perfherder/alerts/AlertsView.jsx

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,11 @@ class AlertsView extends React.Component {
148148
const frameworkOptions = cloneDeep(frameworks);
149149
const ignoreFrameworks = { id: -1, name: 'all frameworks' };
150150
frameworkOptions.unshift(ignoreFrameworks);
151+
const ignoreNonSheriffedFrameworks = {
152+
id: -2,
153+
name: 'all sheriffed frameworks',
154+
};
155+
frameworkOptions.unshift(ignoreNonSheriffedFrameworks);
151156
return frameworkOptions;
152157
};
153158

@@ -207,6 +212,9 @@ class AlertsView extends React.Component {
207212
if (listMode && params.framework === doNotFilter) {
208213
delete params.framework;
209214
}
215+
if (listMode && params.framework === -2) {
216+
delete params.framework;
217+
}
210218

211219
return params;
212220
};
@@ -271,6 +279,9 @@ class AlertsView extends React.Component {
271279
if (hideAssignedToOthers) {
272280
params.with_assignee = user.username;
273281
}
282+
if (framework.id === -2) {
283+
params.show_sheriffed_frameworks = true;
284+
}
274285
}
275286

276287
const url = getApiUrl(

ui/perfherder/alerts/AlertsViewControls.jsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -138,14 +138,14 @@ export default class AlertsViewControls extends React.Component {
138138

139139
let sortedFrameworks = sortData(frameworkOptions, 'name', false);
140140
const allFrameworks = 'all frameworks';
141-
const mozperftest = 'mozperftest';
141+
const allSheriffedFrameworks = 'all sheriffed frameworks';
142142
const platformMicrobench = 'platform_microbench';
143143

144144
sortedFrameworks = sortedFrameworks.filter(
145145
(framework) =>
146-
framework.name !== mozperftest &&
147146
framework.name !== platformMicrobench &&
148-
framework.name !== allFrameworks,
147+
framework.name !== allFrameworks &&
148+
framework.name !== allSheriffedFrameworks,
149149
);
150150

151151
const frameworkNames =
@@ -165,8 +165,8 @@ export default class AlertsViewControls extends React.Component {
165165
selectedItem: framework.name,
166166
updateData: this.updateFramework,
167167
namespace: 'framework',
168-
pinned: [allFrameworks],
169-
otherPinned: [mozperftest, platformMicrobench],
168+
pinned: [allFrameworks, allSheriffedFrameworks],
169+
otherPinned: [platformMicrobench],
170170
},
171171
];
172172

0 commit comments

Comments
 (0)