зеркало из https://github.com/mozilla/treeherder.git
Bug 1260791 - Refactor and improve performance alert unit tests
This commit is contained in:
Родитель
e2c92101df
Коммит
11bb8a0a8a
|
@ -579,3 +579,27 @@ def text_summary_lines(jm, failure_lines, test_repository, artifacts):
|
||||||
summary_lines.append(summary_line)
|
summary_lines.append(summary_line)
|
||||||
|
|
||||||
return summary_lines
|
return summary_lines
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def test_perf_alert_summary(test_repository, test_perf_signature):
|
||||||
|
from treeherder.perf.models import PerformanceAlertSummary
|
||||||
|
return PerformanceAlertSummary.objects.create(
|
||||||
|
repository=test_repository,
|
||||||
|
prev_result_set_id=0,
|
||||||
|
result_set_id=1,
|
||||||
|
last_updated=datetime.datetime.now())
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def test_perf_alert(test_perf_signature, test_perf_alert_summary):
|
||||||
|
from treeherder.perf.models import PerformanceAlert
|
||||||
|
return PerformanceAlert.objects.create(
|
||||||
|
summary=test_perf_alert_summary,
|
||||||
|
series_signature=test_perf_signature,
|
||||||
|
is_regression=True,
|
||||||
|
amount_pct=0.5,
|
||||||
|
amount_abs=50.0,
|
||||||
|
prev_value=100.0,
|
||||||
|
new_value=150.0,
|
||||||
|
t_value=20.0)
|
||||||
|
|
|
@ -7,64 +7,36 @@ from treeherder.perf.models import (PerformanceAlert,
|
||||||
PerformanceAlertSummary)
|
PerformanceAlertSummary)
|
||||||
|
|
||||||
|
|
||||||
def test_summary_modification(test_repository, test_perf_signature):
|
def test_summary_modification(test_repository, test_perf_signature,
|
||||||
s = PerformanceAlertSummary.objects.create(
|
test_perf_alert_summary, test_perf_alert):
|
||||||
id=1,
|
(s, a) = (test_perf_alert_summary, test_perf_alert)
|
||||||
repository=test_repository,
|
|
||||||
prev_result_set_id=0,
|
|
||||||
result_set_id=1,
|
|
||||||
last_updated=datetime.datetime.now())
|
|
||||||
p = PerformanceAlert.objects.create(
|
|
||||||
id=1,
|
|
||||||
summary=s,
|
|
||||||
series_signature=test_perf_signature,
|
|
||||||
is_regression=True,
|
|
||||||
amount_pct=0.5,
|
|
||||||
amount_abs=50.0,
|
|
||||||
prev_value=100.0,
|
|
||||||
new_value=150.0,
|
|
||||||
t_value=20.0)
|
|
||||||
|
|
||||||
assert s.bug_number is None
|
assert s.bug_number is None
|
||||||
assert s.status == PerformanceAlertSummary.UNTRIAGED
|
assert s.status == PerformanceAlertSummary.UNTRIAGED
|
||||||
|
|
||||||
# acknowledge alert, make sure summary status is updated
|
# acknowledge alert, make sure summary status is updated
|
||||||
p.status = PerformanceAlert.ACKNOWLEDGED
|
a.status = PerformanceAlert.ACKNOWLEDGED
|
||||||
p.save()
|
a.save()
|
||||||
s = PerformanceAlertSummary.objects.get(id=1)
|
s = PerformanceAlertSummary.objects.get(id=1)
|
||||||
assert s.status == PerformanceAlertSummary.INVESTIGATING
|
assert s.status == PerformanceAlertSummary.INVESTIGATING
|
||||||
|
|
||||||
# reset alert to untriaged, likewise make sure summary status
|
# reset alert to untriaged, likewise make sure summary status
|
||||||
# gets updated
|
# gets updated
|
||||||
p.status = PerformanceAlert.UNTRIAGED
|
a.status = PerformanceAlert.UNTRIAGED
|
||||||
p.save()
|
a.save()
|
||||||
s = PerformanceAlertSummary.objects.get(id=1)
|
s = PerformanceAlertSummary.objects.get(id=1)
|
||||||
assert s.status == PerformanceAlertSummary.UNTRIAGED
|
assert s.status == PerformanceAlertSummary.UNTRIAGED
|
||||||
|
|
||||||
|
|
||||||
def test_alert_modification(test_repository, test_perf_signature):
|
def test_alert_modification(test_repository, test_perf_signature,
|
||||||
s = PerformanceAlertSummary.objects.create(
|
test_perf_alert_summary, test_perf_alert):
|
||||||
id=1,
|
p = test_perf_alert
|
||||||
repository=test_repository,
|
|
||||||
prev_result_set_id=0,
|
|
||||||
result_set_id=1,
|
|
||||||
last_updated=datetime.datetime.now())
|
|
||||||
s2 = PerformanceAlertSummary.objects.create(
|
s2 = PerformanceAlertSummary.objects.create(
|
||||||
id=2,
|
id=2,
|
||||||
repository=test_repository,
|
repository=test_repository,
|
||||||
prev_result_set_id=1,
|
prev_result_set_id=1,
|
||||||
result_set_id=2,
|
result_set_id=2,
|
||||||
last_updated=datetime.datetime.now())
|
last_updated=datetime.datetime.now())
|
||||||
p = PerformanceAlert.objects.create(
|
|
||||||
id=1,
|
|
||||||
summary=s,
|
|
||||||
series_signature=test_perf_signature,
|
|
||||||
is_regression=True,
|
|
||||||
amount_pct=0.5,
|
|
||||||
amount_abs=50.0,
|
|
||||||
prev_value=100.0,
|
|
||||||
new_value=150.0,
|
|
||||||
t_value=20.0)
|
|
||||||
|
|
||||||
assert p.related_summary is None
|
assert p.related_summary is None
|
||||||
assert p.status == PerformanceAlert.UNTRIAGED
|
assert p.status == PerformanceAlert.UNTRIAGED
|
||||||
|
|
|
@ -7,25 +7,7 @@ from treeherder.perf.models import (PerformanceAlert,
|
||||||
PerformanceAlertSummary)
|
PerformanceAlertSummary)
|
||||||
|
|
||||||
|
|
||||||
def test_alerts(webapp, test_repository, test_perf_signature, test_user,
|
def test_alerts_get(webapp, test_repository, test_perf_alert):
|
||||||
test_sheriff):
|
|
||||||
s = PerformanceAlertSummary.objects.create(
|
|
||||||
id=1,
|
|
||||||
repository=test_repository,
|
|
||||||
prev_result_set_id=0,
|
|
||||||
result_set_id=1,
|
|
||||||
last_updated=datetime.datetime.now())
|
|
||||||
PerformanceAlert.objects.create(
|
|
||||||
id=1,
|
|
||||||
summary=s,
|
|
||||||
series_signature=test_perf_signature,
|
|
||||||
is_regression=True,
|
|
||||||
amount_pct=0.5,
|
|
||||||
amount_abs=50.0,
|
|
||||||
prev_value=100.0,
|
|
||||||
new_value=150.0,
|
|
||||||
t_value=20.0)
|
|
||||||
|
|
||||||
resp = webapp.get(reverse('performance-alerts-list'))
|
resp = webapp.get(reverse('performance-alerts-list'))
|
||||||
assert resp.status_int == 200
|
assert resp.status_int == 200
|
||||||
|
|
||||||
|
@ -48,7 +30,11 @@ def test_alerts(webapp, test_repository, test_perf_signature, test_user,
|
||||||
])
|
])
|
||||||
assert resp.json['results'][0]['related_summary_id'] is None
|
assert resp.json['results'][0]['related_summary_id'] is None
|
||||||
|
|
||||||
# create a new summary and reassign the alert to it
|
|
||||||
|
def test_alerts_put(webapp, test_repository, test_perf_alert, test_user,
|
||||||
|
test_sheriff):
|
||||||
|
# create a new summary and try to reassign the alert to it with varying
|
||||||
|
# levels of permission, then verify the return value changes accordingly
|
||||||
PerformanceAlertSummary.objects.create(
|
PerformanceAlertSummary.objects.create(
|
||||||
id=2,
|
id=2,
|
||||||
repository=test_repository,
|
repository=test_repository,
|
||||||
|
@ -56,6 +42,10 @@ def test_alerts(webapp, test_repository, test_perf_signature, test_user,
|
||||||
result_set_id=2,
|
result_set_id=2,
|
||||||
last_updated=datetime.datetime.now())
|
last_updated=datetime.datetime.now())
|
||||||
|
|
||||||
|
resp = webapp.get(reverse('performance-alerts-list'))
|
||||||
|
assert resp.status_int == 200
|
||||||
|
assert resp.json['results'][0]['related_summary_id'] is None
|
||||||
|
|
||||||
# verify that we fail if not authenticated
|
# verify that we fail if not authenticated
|
||||||
webapp.put_json(reverse('performance-alerts-list') + '1/', {
|
webapp.put_json(reverse('performance-alerts-list') + '1/', {
|
||||||
'related_summary_id': 2,
|
'related_summary_id': 2,
|
||||||
|
|
|
@ -1,35 +1,51 @@
|
||||||
import datetime
|
from django.contrib.auth.models import User
|
||||||
|
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
from rest_framework.test import APIClient
|
from rest_framework.test import APIClient
|
||||||
|
|
||||||
from treeherder.perf.models import (PerformanceAlert,
|
from treeherder.perf.models import PerformanceAlertSummary
|
||||||
PerformanceAlertSummary)
|
|
||||||
|
|
||||||
|
|
||||||
def test_alert_summaries(webapp, test_repository, test_perf_signature,
|
def test_alert_summaries_get(webapp, test_perf_alert_summary,
|
||||||
test_user, test_sheriff):
|
test_perf_alert):
|
||||||
s = PerformanceAlertSummary.objects.create(
|
|
||||||
id=1,
|
|
||||||
repository=test_repository,
|
|
||||||
prev_result_set_id=0,
|
|
||||||
result_set_id=1,
|
|
||||||
last_updated=datetime.datetime.now())
|
|
||||||
PerformanceAlert.objects.create(
|
|
||||||
id=1,
|
|
||||||
summary=s,
|
|
||||||
series_signature=test_perf_signature,
|
|
||||||
is_regression=True,
|
|
||||||
amount_pct=0.5,
|
|
||||||
amount_abs=50.0,
|
|
||||||
prev_value=100.0,
|
|
||||||
new_value=150.0,
|
|
||||||
t_value=20.0)
|
|
||||||
|
|
||||||
# verify that we get the performance summary + alert on GET
|
# verify that we get the performance summary + alert on GET
|
||||||
resp = webapp.get(reverse('performance-alert-summaries-list'))
|
resp = webapp.get(reverse('performance-alert-summaries-list'))
|
||||||
assert resp.status_int == 200
|
assert resp.status_int == 200
|
||||||
|
|
||||||
|
# should just have the one alert summary (with one alert)
|
||||||
|
assert resp.json['next'] is None
|
||||||
|
assert resp.json['previous'] is None
|
||||||
|
assert len(resp.json['results']) == 1
|
||||||
|
assert set(resp.json['results'][0].keys()) == set([
|
||||||
|
'alerts',
|
||||||
|
'bug_number',
|
||||||
|
'framework',
|
||||||
|
'id',
|
||||||
|
'last_updated',
|
||||||
|
'prev_result_set_id',
|
||||||
|
'related_alerts',
|
||||||
|
'repository',
|
||||||
|
'result_set_id',
|
||||||
|
'status',
|
||||||
|
])
|
||||||
|
assert len(resp.json['results'][0]['alerts']) == 1
|
||||||
|
assert set(resp.json['results'][0]['alerts'][0].keys()) == set([
|
||||||
|
'id',
|
||||||
|
'status',
|
||||||
|
'series_signature',
|
||||||
|
'is_regression',
|
||||||
|
'prev_value',
|
||||||
|
'new_value',
|
||||||
|
't_value',
|
||||||
|
'amount_abs',
|
||||||
|
'amount_pct',
|
||||||
|
'summary_id',
|
||||||
|
'related_summary_id'
|
||||||
|
])
|
||||||
|
assert len(resp.json['results'][0]['related_alerts']) == 0
|
||||||
|
|
||||||
|
|
||||||
|
def test_alert_summaries_put(webapp, test_repository, test_perf_signature,
|
||||||
|
test_perf_alert_summary, test_user, test_sheriff):
|
||||||
# verify that we fail if not authenticated
|
# verify that we fail if not authenticated
|
||||||
webapp.put_json(reverse('performance-alert-summaries-list') + '1/', {
|
webapp.put_json(reverse('performance-alert-summaries-list') + '1/', {
|
||||||
'status': 1
|
'status': 1
|
||||||
|
|
Загрузка…
Ссылка в новой задаче