зеркало из https://github.com/mozilla/treeherder.git
Bug 1642554 - Implement model for engineer traction formula
This commit is contained in:
Родитель
ca79f78542
Коммит
2fbe6d3260
|
@ -30,6 +30,9 @@ coverage
|
|||
coverage.xml
|
||||
.coverage
|
||||
|
||||
# pytest-testmon cached structure
|
||||
.testmondata
|
||||
|
||||
# Ignore tox installation
|
||||
.tox
|
||||
|
||||
|
|
|
@ -10,6 +10,10 @@ PyPOM
|
|||
# for git commit hooks
|
||||
pre-commit
|
||||
|
||||
# for test driven development
|
||||
pytest-testmon
|
||||
pytest-watch
|
||||
|
||||
# Required by django-extension's runserver_plus command.
|
||||
flake8
|
||||
pytest-django
|
||||
|
@ -18,5 +22,13 @@ black
|
|||
# To test async code
|
||||
pytest-asyncio
|
||||
|
||||
# To test code that's making system time calls
|
||||
pytest-freezegun
|
||||
|
||||
# To test code that's doing advanced communication
|
||||
# with web services via `requests` library
|
||||
betamax
|
||||
betamax-serializers
|
||||
|
||||
# make pinning versions easier
|
||||
pip-tools
|
||||
|
|
|
@ -20,6 +20,14 @@ attrs==19.3.0 \
|
|||
--hash=sha256:08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c \
|
||||
--hash=sha256:f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72 \
|
||||
# via black, pytest
|
||||
betamax-serializers==0.2.1 \
|
||||
--hash=sha256:1b23c46429c40a8873682854c88d805c787c72d252f3fa0c858e9c300682ceac \
|
||||
--hash=sha256:345c419b1b73171f2951c62ac3c701775ac4b76e13e86464ebf0ff2a978e4949 \
|
||||
# via -r requirements/dev.in
|
||||
betamax==0.8.1 \
|
||||
--hash=sha256:5bf004ceffccae881213fb722f34517166b84a34919b92ffc14d1dbd050b71c2 \
|
||||
--hash=sha256:aa5ad34cc8d018b35814fb0557d15c78ced9ac56fdc43ccacdb882aa7a5217c1 \
|
||||
# via -r requirements/dev.in, betamax-serializers
|
||||
black==19.10b0 \
|
||||
--hash=sha256:1b30e59be925fafc1ee4565e5e08abef6b03fe455102883820fe5ee2e4734e0b \
|
||||
--hash=sha256:c2edb73a08e9e0e6f65a0e6af18b059b8b1cdd5bef997d7a0b181df93dc81539 \
|
||||
|
@ -43,7 +51,7 @@ click==7.1.1 \
|
|||
colorama==0.4.3 \
|
||||
--hash=sha256:7d73d2a99753107a36ac6b455ee49046802e59d9d076ef8e47b61499fa29afff \
|
||||
--hash=sha256:e96da0d330793e2cb9485e9ddfd918d456036c7149416295932478192f4436a1 \
|
||||
# via pytest
|
||||
# via pytest, pytest-watch
|
||||
coverage==5.0.4 \
|
||||
--hash=sha256:03f630aba2b9b0d69871c2e8d23a69b7fe94a1e2f5f10df5049c0df99db639a0 \
|
||||
--hash=sha256:046a1a742e66d065d16fb564a26c2a15867f17695e7f3d358d7b1ad8a61bca30 \
|
||||
|
@ -76,7 +84,7 @@ coverage==5.0.4 \
|
|||
--hash=sha256:db1d4e38c9b15be1521722e946ee24f6db95b189d1447fa9ff18dd16ba89f732 \
|
||||
--hash=sha256:eda55e6e9ea258f5e4add23bcf33dc53b2c319e70806e180aecbff8d90ea24de \
|
||||
--hash=sha256:f372cdbb240e09ee855735b9d85e7f50730dcfb6296b74b95a3e5dea0615c4c1 \
|
||||
# via pytest-cov
|
||||
# via pytest-cov, pytest-testmon
|
||||
distlib==0.3.0 \
|
||||
--hash=sha256:2e166e231a26b36d6dfe35a48c4464346620f8645ed0ace01ee31822b288de21 \
|
||||
# via virtualenv
|
||||
|
@ -92,6 +100,9 @@ django==3.0.5 \
|
|||
--hash=sha256:642d8eceab321ca743ae71e0f985ff8fdca59f07aab3a9fb362c617d23e33a76 \
|
||||
--hash=sha256:d4666c2edefa38c5ede0ec1655424c56dc47ceb04b6d8d62a7eac09db89545c1 \
|
||||
# via django-debug-toolbar
|
||||
docopt==0.6.2 \
|
||||
--hash=sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491 \
|
||||
# via pytest-watch
|
||||
entrypoints==0.3 \
|
||||
--hash=sha256:589f874b313739ad35be6e0cd7efde2a4e9b6fea91edcc34e58ecbb8dbe56d19 \
|
||||
--hash=sha256:c70dd71abe5a8c85e55e12c19bd91ccfeec11a6e99044204511f9ed547d48451 \
|
||||
|
@ -104,6 +115,10 @@ flake8==3.7.9 \
|
|||
--hash=sha256:45681a117ecc81e870cbf1262835ae4af5e7a8b08e40b944a8a6e6b895914cfb \
|
||||
--hash=sha256:49356e766643ad15072a789a20915d3c91dc89fd313ccd71802303fd67e4deca \
|
||||
# via -r requirements/dev.in
|
||||
freezegun==0.3.15 \
|
||||
--hash=sha256:82c757a05b7c7ca3e176bfebd7d6779fd9139c7cb4ef969c38a28d74deef89b2 \
|
||||
--hash=sha256:e2062f2c7f95cc276a834c22f1a17179467176b624cc6f936e8bc3be5535ad1b \
|
||||
# via pytest-freezegun
|
||||
identify==1.4.14 \
|
||||
--hash=sha256:2bb8760d97d8df4408f4e805883dad26a2d076f04be92a10a3e43f09c6060742 \
|
||||
--hash=sha256:faffea0fd8ec86bb146ac538ac350ed0c73908326426d387eded0bcc9d077522 \
|
||||
|
@ -139,6 +154,9 @@ pathspec==0.8.0 \
|
|||
--hash=sha256:7d91249d21749788d07a2d0f94147accd8f845507400749ea19c1ec9054a12b0 \
|
||||
--hash=sha256:da45173eb3a6f2a5a487efba21f050af2b41948be6ab52b6a1e3ff22bb8b7061 \
|
||||
# via black
|
||||
pathtools==0.1.2 \
|
||||
--hash=sha256:7c35c5421a39bb82e58018febd90e3b6e5db34c5443aaaf742b3f33d4655f1c0 \
|
||||
# via watchdog
|
||||
pip-tools==4.5.1 \
|
||||
--hash=sha256:693f30e451875796b1b25203247f0b4cf48a4c4a5ab7341f4f33ffd498cdcc98 \
|
||||
--hash=sha256:be9c796aa88b2eec5cabf1323ba1cb60a08212b84bfb75b8b4037a8ef8cb8cb6 \
|
||||
|
@ -187,6 +205,10 @@ pytest-django==3.9.0 \
|
|||
--hash=sha256:64f99d565dd9497af412fcab2989fe40982c1282d4118ff422b407f3f7275ca5 \
|
||||
--hash=sha256:664e5f42242e5e182519388f01b9f25d824a9feb7cd17d8f863c8d776f38baf9 \
|
||||
# via -r requirements/dev.in
|
||||
pytest-freezegun==0.4.1 \
|
||||
--hash=sha256:060cdf192848e50a4a681a5e73f8b544c4ee5ebc1fab3cb7223a0097bac2f83f \
|
||||
--hash=sha256:1c77b2917883b8abf817fc39a1fd3f40ac43711eb923512abe7b6557e55eaaf1 \
|
||||
# via -r requirements/dev.in
|
||||
pytest-html==2.1.1 \
|
||||
--hash=sha256:6a4ac391e105e391208e3eb9bd294a60dd336447fd8e1acddff3a6de7f4e57c5 \
|
||||
--hash=sha256:9e4817e8be8ddde62e8653c8934d0f296b605da3d2277a052f762c56a8b32df2 \
|
||||
|
@ -199,14 +221,25 @@ pytest-selenium==1.17.0 \
|
|||
--hash=sha256:caf049839d12297e01f0521a968e44ae854f4eca1afd80b28f6a2510df02c883 \
|
||||
--hash=sha256:e8034ebabc3b55fad57bfb97e7b0b2137532dbc65f33706e1ce1ed8e547caa1a \
|
||||
# via -r requirements/dev.in
|
||||
pytest-testmon==1.0.2 \
|
||||
--hash=sha256:e79852203894bbd5a6adb7e0541316c0a3a84322e9766f746ed6b8b62f9897d9 \
|
||||
--hash=sha256:fdb016d953036051d1ef0e36569b7168cefa4914014789a65a4ffefc87f85ac5 \
|
||||
# via -r requirements/dev.in
|
||||
pytest-variables==1.9.0 \
|
||||
--hash=sha256:ccf4afcd70de1f5f18b4463758a19f24647a9def1805f675e80db851c9e00ac0 \
|
||||
--hash=sha256:f79851e4c92a94c93d3f1d02377b5ac97cc8800392e87d108d2cbfda774ecc2a \
|
||||
# via pytest-selenium
|
||||
pytest-watch==4.2.0 \
|
||||
--hash=sha256:06136f03d5b361718b8d0d234042f7b2f203910d8568f63df2f866b547b3d4b9 \
|
||||
# via -r requirements/dev.in
|
||||
pytest==5.4.1 \
|
||||
--hash=sha256:0e5b30f5cb04e887b91b1ee519fa3d89049595f428c1db76e73bd7f17b09b172 \
|
||||
--hash=sha256:84dde37075b8805f3d1f392cc47e38a0e59518fb46a431cfdaf7cf1ce805f970 \
|
||||
# via pytest-asyncio, pytest-base-url, pytest-cov, pytest-django, pytest-html, pytest-metadata, pytest-selenium, pytest-variables
|
||||
# via pytest-asyncio, pytest-base-url, pytest-cov, pytest-django, pytest-freezegun, pytest-html, pytest-metadata, pytest-selenium, pytest-testmon, pytest-variables, pytest-watch
|
||||
python-dateutil==2.8.1 \
|
||||
--hash=sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c \
|
||||
--hash=sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a \
|
||||
# via freezegun
|
||||
pytz==2019.3 \
|
||||
--hash=sha256:1c557d7d0e871de1f5ccd5833f60fb2550652da6be2693c1e02300743d21500d \
|
||||
--hash=sha256:b02c06db6cf09c12dd25137e563b31700d3b80fcc4ad23abb7a315f2789819be \
|
||||
|
@ -250,7 +283,7 @@ regex==2020.4.4 \
|
|||
requests==2.23.0 \
|
||||
--hash=sha256:43999036bfa82904b6af1d99e4882b560e5e2c68e5c4b0aa03b655f3d7d73fee \
|
||||
--hash=sha256:b3f43d496c6daba4493e7c431722aeb7dbc6288f52a6e04e7b6023b0247817e6 \
|
||||
# via pytest-base-url, pytest-selenium, responses
|
||||
# via betamax, pytest-base-url, pytest-selenium, responses
|
||||
responses==0.10.12 \
|
||||
--hash=sha256:0474ce3c897fbcc1aef286117c93499882d5c440f06a805947e4b1cb5ab3d474 \
|
||||
--hash=sha256:f83613479a021e233e82d52ffb3e2e0e2836d24b0cc88a0fa31978789f78d0e5 \
|
||||
|
@ -262,7 +295,7 @@ selenium==3.141.0 \
|
|||
six==1.14.0 \
|
||||
--hash=sha256:236bdbdce46e6e6a3d61a337c0f8b763ca1e8717c03b369e87a7ec7ce1319c0a \
|
||||
--hash=sha256:8f3cd2e254d8f793e7f3d6d9df77b92252b52637291d0f0da013c76ea2724b6c \
|
||||
# via django-extensions, packaging, pip-tools, responses, virtualenv
|
||||
# via django-extensions, freezegun, packaging, pip-tools, python-dateutil, responses, virtualenv
|
||||
sqlparse==0.3.1 \
|
||||
--hash=sha256:022fb9c87b524d1f7862b3037e541f68597a730a8843245c349fc93e1643dc4e \
|
||||
--hash=sha256:e162203737712307dfe78860cc56c8da8a852ab2ee33750e33aeadf38d12c548 \
|
||||
|
@ -302,6 +335,9 @@ virtualenv==20.0.17 \
|
|||
--hash=sha256:00cfe8605fb97f5a59d52baab78e6070e72c12ca64f51151695407cc0eb8a431 \
|
||||
--hash=sha256:c8364ec469084046c779c9a11ae6340094e8a0bf1d844330fc55c1cefe67c172 \
|
||||
# via pre-commit
|
||||
watchdog==0.10.2 \
|
||||
--hash=sha256:c560efb643faed5ef28784b2245cf8874f939569717a4a12826a173ac644456b \
|
||||
# via pytest-watch
|
||||
wcwidth==0.1.9 \
|
||||
--hash=sha256:cafe2186b3c009a04067022ce1dcd79cb38d8d65ee4f4791b8888d6599d1bbe1 \
|
||||
--hash=sha256:ee73862862a156bf77ff92b09034fc4825dd3af9cf81bc5b360668d425f3c5f1 \
|
||||
|
|
|
@ -56,13 +56,27 @@ Django can perform a number of checks to ensure you are configured correctly
|
|||
|
||||
./manage.py check
|
||||
|
||||
## Run the tests
|
||||
## Running tests
|
||||
|
||||
Be sure docker-compose is up, you are in the `treeherder` main directory, your virtual environment is activated, and your environment variables are set:
|
||||
|
||||
source .venv/bin/activate
|
||||
|
||||
Followed by either one of the two commands below.
|
||||
|
||||
### All tests
|
||||
|
||||
pytest tests
|
||||
|
||||
### Start TDD-enhanced test runner in the background
|
||||
|
||||
Whenever code changes are detected within the project, command below will run only the associated tests.
|
||||
Test runs will be triggered for either application or tests code changes.
|
||||
|
||||
This workflow ensures a considerably faster feedback loop for those wanting to do test driven development.
|
||||
|
||||
ptw --runner "pytest --testmon" --clear
|
||||
|
||||
## Pre commit checks
|
||||
|
||||
If you made some changes, and want to submit a pull request; run the `./runtests.sh` script (found in the main directory). It will run some linters to check your submission.
|
||||
|
|
|
@ -0,0 +1,308 @@
|
|||
import pytest
|
||||
from datetime import datetime, timedelta
|
||||
from requests import Session
|
||||
|
||||
from betamax import Betamax
|
||||
from betamax_serializers import pretty_json
|
||||
from typing import List
|
||||
|
||||
from treeherder.config.settings import BZ_DATETIME_FORMAT
|
||||
from treeherder.perf.sheriffing_criteria import (
|
||||
EngineerTractionFormula,
|
||||
NonBlockableSession,
|
||||
ENGINEER_TRACTION_SPECIFICATION,
|
||||
)
|
||||
from treeherder.perf.exceptions import NoFiledBugs
|
||||
|
||||
CASSETTE_LIBRARY_DIR = 'tests/sample_data/betamax_cassettes/perf_sheriffing_criteria'
|
||||
VCR_RECORDING_DATE = 'June 2nd, 2020'
|
||||
|
||||
|
||||
pytestmark = [pytest.mark.freeze_time(VCR_RECORDING_DATE, tick=True)]
|
||||
|
||||
|
||||
# Engineer traction formula - specification
|
||||
# -----------------------------------------
|
||||
# All bugs except NEW -- vs total filed bugs
|
||||
# Considers only
|
||||
# bugs filed by perf sheriffs
|
||||
# bugs that date back to last quantifying period
|
||||
# bugs’ state by the end of the 2nd week
|
||||
# bugs that are at least 2 weeks old
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def nonblock_session() -> Session:
|
||||
return NonBlockableSession(referer=ENGINEER_TRACTION_SPECIFICATION)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def unrecommended_session() -> Session:
|
||||
return Session()
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def betamax_recorder(nonblock_session):
|
||||
Betamax.register_serializer(pretty_json.PrettyJSONSerializer)
|
||||
return Betamax(nonblock_session, cassette_library_dir=CASSETTE_LIBRARY_DIR)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def quantified_bugs(betamax_recorder) -> list:
|
||||
params = {
|
||||
'longdesc': 'raptor speedometer',
|
||||
'longdesc_type': 'allwords',
|
||||
'longdesc_initial': 1,
|
||||
'keywords': 'perf,perf-alert',
|
||||
'keywords_type': 'anywords',
|
||||
'creation_time': '2019-12-17',
|
||||
'query_format': 'advanced',
|
||||
}
|
||||
|
||||
with betamax_recorder.use_cassette('quantified-bugs', serialize_with='prettyjson'):
|
||||
bug_resp = betamax_recorder.session.get(
|
||||
'https://bugzilla.mozilla.org/rest/bug',
|
||||
headers={'Accept': 'application/json'},
|
||||
params=params,
|
||||
timeout=60,
|
||||
)
|
||||
return bug_resp.json()['bugs']
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def cooled_down_bugs(nonblock_session, quantified_bugs) -> List[dict]:
|
||||
bugs = []
|
||||
for bug in quantified_bugs:
|
||||
created_at = datetime.strptime(bug['creation_time'], BZ_DATETIME_FORMAT)
|
||||
if created_at <= datetime.now() - timedelta(weeks=2):
|
||||
bugs.append(bug)
|
||||
return bugs
|
||||
|
||||
|
||||
def test_formula_initializes_with_non_blockable_sessions(nonblock_session):
|
||||
try:
|
||||
_ = EngineerTractionFormula(nonblock_session)
|
||||
except ValueError:
|
||||
pytest.fail()
|
||||
|
||||
try:
|
||||
_ = EngineerTractionFormula()
|
||||
except ValueError:
|
||||
pytest.fail()
|
||||
|
||||
|
||||
def test_formula_cannot_be_initialized_with_a_regular_session(unrecommended_session):
|
||||
with pytest.raises(ValueError):
|
||||
_ = EngineerTractionFormula(unrecommended_session)
|
||||
|
||||
|
||||
def test_formula_demands_at_least_framework_and_suite(betamax_recorder):
|
||||
engineer_traction = EngineerTractionFormula(betamax_recorder.session)
|
||||
|
||||
with pytest.raises(TypeError):
|
||||
engineer_traction('some_framework')
|
||||
|
||||
with pytest.raises(TypeError):
|
||||
engineer_traction()
|
||||
|
||||
with betamax_recorder.use_cassette('awsy-JS', serialize_with='prettyjson'):
|
||||
try:
|
||||
engineer_traction('awsy', 'JS')
|
||||
except TypeError:
|
||||
pytest.fail()
|
||||
|
||||
|
||||
def test_formula_exposes_oldest_timestamp(nonblock_session):
|
||||
engineer_traction = EngineerTractionFormula(nonblock_session)
|
||||
no_older_than = datetime.now() - timedelta(weeks=24, seconds=5)
|
||||
|
||||
assert engineer_traction.oldest_timestamp >= no_older_than
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
'cooled_down_bug',
|
||||
[
|
||||
{"creation_time": "2020-05-18T15:20:55Z"}, # older than 2 weeks
|
||||
{"creation_time": "2020-05-04T15:20:55Z"}, # older than 1 month
|
||||
{"creation_time": "2019-12-16T08:10:37Z"}, # older than 6 months
|
||||
],
|
||||
)
|
||||
def test_formula_correctly_detects_cooled_down_bugs(cooled_down_bug, nonblock_session):
|
||||
engineer_traction = EngineerTractionFormula(nonblock_session)
|
||||
|
||||
assert engineer_traction.has_cooled_down(cooled_down_bug)
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
'not_cooled_down_bug',
|
||||
[
|
||||
{'creation_time': '2020-05-31T00:00:00Z'}, # 2 days old
|
||||
{'creation_time': '2020-05-26T00:00:00Z'}, # 1 week old
|
||||
{'creation_time': '2020-05-19T23:00:00Z'}, # ~2 weeks old, except for 1 hour
|
||||
],
|
||||
)
|
||||
def test_formula_detects_bugs_that_didnt_cool_down_yet(not_cooled_down_bug, nonblock_session):
|
||||
engineer_traction = EngineerTractionFormula(nonblock_session)
|
||||
|
||||
assert not engineer_traction.has_cooled_down(not_cooled_down_bug)
|
||||
|
||||
|
||||
@pytest.mark.parametrize('bad_structured_bug', [{}, {'creation_time': 'jiberish-date'}])
|
||||
def test_formula_throws_adequate_error_for_bug(bad_structured_bug, nonblock_session):
|
||||
engineer_traction = EngineerTractionFormula(nonblock_session)
|
||||
|
||||
with pytest.raises(ValueError):
|
||||
engineer_traction.has_cooled_down(bad_structured_bug)
|
||||
|
||||
|
||||
def test_accessing_breakdown_without_prior_calculus_errors_out(nonblock_session):
|
||||
engineer_traction = EngineerTractionFormula(nonblock_session)
|
||||
|
||||
with pytest.raises(RuntimeError):
|
||||
_ = engineer_traction.breakdown()
|
||||
|
||||
|
||||
# Leveraging HTTP VCR
|
||||
|
||||
|
||||
def test_breakdown_updates_between_calculations(betamax_recorder):
|
||||
engineer_traction = EngineerTractionFormula(betamax_recorder.session)
|
||||
|
||||
test_moniker_A = ('build_metrics', 'build times')
|
||||
test_moniker_B = ('talos', 'tp5n', 'nonmain_startup_fileio')
|
||||
|
||||
cassette_preffix_A = '-'.join(filter(None, test_moniker_A))
|
||||
cassette_preffix_B = '-'.join(filter(None, test_moniker_B))
|
||||
|
||||
with betamax_recorder.use_cassette(f'{cassette_preffix_A}', serialize_with='prettyjson'):
|
||||
engineer_traction(*test_moniker_A) # let it perform calculus & cache breakdown
|
||||
breakdown_A = engineer_traction.breakdown()
|
||||
|
||||
with betamax_recorder.use_cassette(f'{cassette_preffix_B}', serialize_with='prettyjson'):
|
||||
engineer_traction(*test_moniker_B) # let it perform calculus & cache breakdown
|
||||
breakdown_B = engineer_traction.breakdown()
|
||||
|
||||
assert breakdown_A != breakdown_B
|
||||
|
||||
|
||||
def test_breakdown_resets_to_null_when_calculus_errors_out(betamax_recorder):
|
||||
engineer_traction = EngineerTractionFormula(betamax_recorder.session)
|
||||
|
||||
test_moniker_A = ('build_metrics', 'build times')
|
||||
test_moniker_B = ('nonexistent_framework', 'nonexistent_suite')
|
||||
|
||||
cassette_preffix_A = '-'.join(filter(None, test_moniker_A))
|
||||
cassette_preffix_B = '-'.join(filter(None, test_moniker_B))
|
||||
|
||||
# run happy path calculus
|
||||
with betamax_recorder.use_cassette(f'{cassette_preffix_A}', serialize_with='prettyjson'):
|
||||
engineer_traction(*test_moniker_A) # let it perform calculus & cache breakdown
|
||||
_ = engineer_traction.breakdown()
|
||||
|
||||
# now run alternated path calculus
|
||||
with betamax_recorder.use_cassette(f'{cassette_preffix_B}', serialize_with='prettyjson'):
|
||||
with pytest.raises(NoFiledBugs):
|
||||
engineer_traction(*test_moniker_B) # intentionally blows up while doing calculus
|
||||
|
||||
# cached breakdown got invalidated & can no longer be obtained
|
||||
with pytest.raises(RuntimeError):
|
||||
_ = engineer_traction.breakdown()
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
'framework, suite, test',
|
||||
[
|
||||
('build_metrics', 'build times', None),
|
||||
('build_metrics', 'installer size', None),
|
||||
('awsy', 'JS', None),
|
||||
('talos', 'tp5n', 'nonmain_startup_fileio'),
|
||||
],
|
||||
)
|
||||
def test_formula_fetches_bugs_from_quantifying_period(framework, suite, test, betamax_recorder):
|
||||
engineer_traction = EngineerTractionFormula(betamax_recorder.session)
|
||||
cassette = '-'.join(filter(None, [framework, suite, test]))
|
||||
|
||||
with betamax_recorder.use_cassette(f'{cassette}', serialize_with='prettyjson'):
|
||||
engineer_traction(framework, suite, test) # let it perform calculus & cache breakdown
|
||||
|
||||
all_filed_bugs, except_new_bugs = engineer_traction.breakdown()
|
||||
|
||||
assert len(all_filed_bugs) > 0
|
||||
for bug in all_filed_bugs:
|
||||
creation_time = datetime.strptime(bug['creation_time'], BZ_DATETIME_FORMAT)
|
||||
assert creation_time >= engineer_traction.oldest_timestamp
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
'framework, suite, test',
|
||||
[
|
||||
('build_metrics', 'build times', None),
|
||||
('build_metrics', 'installer size', None),
|
||||
('awsy', 'JS', None),
|
||||
('talos', 'tp5n', 'nonmain_startup_fileio'),
|
||||
],
|
||||
)
|
||||
def test_formula_filters_out_bugs_that_didnt_cool_down_yet(
|
||||
framework, suite, test, betamax_recorder
|
||||
):
|
||||
engineer_traction = EngineerTractionFormula(betamax_recorder.session)
|
||||
cassette = '-'.join(filter(None, [framework, suite, test]))
|
||||
|
||||
with betamax_recorder.use_cassette(f'{cassette}', serialize_with='prettyjson'):
|
||||
engineer_traction(framework, suite, test) # let it perform calculus & cache breakdown
|
||||
|
||||
# left with cooled down bugs only
|
||||
all_filed_bugs, _ = engineer_traction.breakdown()
|
||||
for bug in all_filed_bugs:
|
||||
assert engineer_traction.has_cooled_down(bug)
|
||||
|
||||
|
||||
def test_formula_counts_tracted_bugs(cooled_down_bugs, betamax_recorder):
|
||||
engineer_traction = EngineerTractionFormula(betamax_recorder.session)
|
||||
|
||||
with betamax_recorder.use_cassette('cooled-down-bug-history', serialize_with='prettyjson'):
|
||||
tracted_bugs = engineer_traction._filter_tracted_bugs(cooled_down_bugs)
|
||||
assert len(tracted_bugs) == 2
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
'framework, suite',
|
||||
[
|
||||
# Sheriffed tests
|
||||
('build_metrics', 'build times'), # 92%
|
||||
('build_metrics', 'installer size'), # 78%
|
||||
('awsy', 'JS'), # 55%
|
||||
],
|
||||
)
|
||||
def test_final_formula_confirms_sheriffed_tests(framework, suite, betamax_recorder):
|
||||
engineer_traction = EngineerTractionFormula(betamax_recorder.session)
|
||||
|
||||
with betamax_recorder.use_cassette(f'{framework}-{suite}', serialize_with='prettyjson'):
|
||||
assert engineer_traction(framework, suite) >= 0.35
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
'framework, suite',
|
||||
[
|
||||
# Non-sheriffed tests
|
||||
('raptor', 'raptor-speedometer-firefox'), # 33%
|
||||
('raptor', 'raptor-webaudio-firefox'), # 0%
|
||||
],
|
||||
)
|
||||
def test_final_formula_confirms_non_sheriffed_tests(framework, suite, betamax_recorder):
|
||||
engineer_traction = EngineerTractionFormula(betamax_recorder.session)
|
||||
|
||||
with betamax_recorder.use_cassette(f'{framework}-{suite}', serialize_with='prettyjson'):
|
||||
assert engineer_traction(framework, suite) < 0.35
|
||||
|
||||
|
||||
def test_formula_errors_up_when_no_bugs_were_filed(betamax_recorder):
|
||||
engineer_traction = EngineerTractionFormula(betamax_recorder.session)
|
||||
nonexistent_framework = 'nonexistent_framework'
|
||||
nonexistent_suite = 'nonexistent_suite'
|
||||
|
||||
with betamax_recorder.use_cassette(
|
||||
f'{nonexistent_framework}-{nonexistent_suite}', serialize_with='prettyjson'
|
||||
):
|
||||
with pytest.raises(NoFiledBugs):
|
||||
engineer_traction(nonexistent_framework, nonexistent_suite)
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -0,0 +1,217 @@
|
|||
{
|
||||
"http_interactions": [
|
||||
{
|
||||
"recorded_at": "2020-06-02T00:00:07",
|
||||
"request": {
|
||||
"body": {
|
||||
"encoding": "utf-8",
|
||||
"string": ""
|
||||
},
|
||||
"headers": {
|
||||
"Accept": ["application/json"],
|
||||
"Cookie": [
|
||||
"Bugzilla_login_request_cookie=xo1WpDktAv; github_secret=L8ybCTpaOmSasZVm9DZLL6OnwTZp6cGCouewcak3l7e6FTQftt2OdhUsgmDqyI33TJRQEHJ5MDmopopIv8MApQk1no5uo68278AerDRjNlzYf1iSZoDVTHUwQZzlSrJwIGRJnXIwDKCt55SsCyLZVAMCXDyIyqnUE7Ne9n8R5Vwx7016xj2sYFSUzpNzvODgs1jE5LjPD7GAQEYAKpLAvgQ6VEgxL3j9aWC5wkafOWnZ1KFtXTcJF1FHbPqO6k2P"
|
||||
],
|
||||
"User-Agent": ["treeherder/backend"]
|
||||
},
|
||||
"method": "GET",
|
||||
"uri": "https://bugzilla.mozilla.org/rest/bug/1605344/history"
|
||||
},
|
||||
"response": {
|
||||
"body": {
|
||||
"encoding": "UTF-8",
|
||||
"string": "{\"bugs\":[{\"alias\":null,\"history\":[{\"when\":\"2019-12-20T11:28:13Z\",\"who\":\"fstrugariu@mozilla.com\",\"changes\":[{\"removed\":\"Performance\",\"field_name\":\"component\",\"added\":\"General\"},{\"field_name\":\"version\",\"removed\":\"Version 3\",\"added\":\"unspecified\"},{\"field_name\":\"regressed_by\",\"removed\":\"\",\"added\":\"1604578\"},{\"added\":\"1600879\",\"field_name\":\"blocks\",\"removed\":\"\"},{\"added\":\"Firefox Build System\",\"field_name\":\"product\",\"removed\":\"Testing\"}]},{\"when\":\"2019-12-20T11:28:37Z\",\"changes\":[{\"field_name\":\"cc\",\"removed\":\"\",\"added\":\"cmanchester@mozilla.com\"},{\"added\":\"needinfo?(cmanchester@mozilla.com)\",\"field_name\":\"flagtypes.name\",\"removed\":\"\"}],\"who\":\"fstrugariu@mozilla.com\"},{\"when\":\"2019-12-20T17:13:15Z\",\"changes\":[{\"removed\":\"\",\"field_name\":\"depends_on\",\"added\":\"1596182\"},{\"removed\":\"needinfo?(cmanchester@mozilla.com)\",\"field_name\":\"flagtypes.name\",\"added\":\"\"}],\"who\":\"chmanchester@gmail.com\"},{\"who\":\"chmanchester@gmail.com\",\"changes\":[{\"removed\":\"NEW\",\"field_name\":\"status\",\"added\":\"RESOLVED\"},{\"field_name\":\"resolution\",\"removed\":\"\",\"added\":\"FIXED\"},{\"field_name\":\"cf_last_resolved\",\"removed\":\"\",\"added\":\"2020-01-03T18:51:37Z\"}],\"when\":\"2020-01-03T18:51:37Z\"},{\"when\":\"2020-01-06T15:20:55Z\",\"who\":\"ryanvm@gmail.com\",\"changes\":[{\"added\":\"cmanchester@mozilla.com\",\"removed\":\"nobody@mozilla.org\",\"field_name\":\"assigned_to\"},{\"added\":\"mozilla73\",\"removed\":\"---\",\"field_name\":\"target_milestone\"},{\"field_name\":\"cf_status_firefox_esr68\",\"removed\":\"---\",\"added\":\"unaffected\"},{\"added\":\"unaffected\",\"removed\":\"---\",\"field_name\":\"cf_status_firefox71\"},{\"added\":\"unaffected\",\"removed\":\"---\",\"field_name\":\"cf_status_firefox72\"},{\"field_name\":\"cf_status_firefox73\",\"removed\":\"---\",\"added\":\"fixed\"}]}],\"id\":1605344}]}"
|
||||
},
|
||||
"headers": {
|
||||
"Access-Control-Allow-Origin": ["*"],
|
||||
"Access-control-allow-headers": [
|
||||
"accept, content-type, origin, user-agent, x-requested-with, x-phabricator-token, x-bugzilla-login, x-bugzilla-token, x-bugzilla-api-key, x-bugzilla-password"
|
||||
],
|
||||
"Connection": ["keep-alive"],
|
||||
"Content-Security-Policy-Report-Only": [
|
||||
"default-src 'self'; worker-src 'none'; connect-src 'self' https://product-details.mozilla.org https://www.google-analytics.com https://treeherder.mozilla.org/api/failurecount/ https://crash-stats.mozilla.org/api/SuperSearch/; font-src 'self' https://fonts.gstatic.com; img-src 'self' data: blob: https://secure.gravatar.com; object-src 'none'; script-src 'self' 'nonce-WtIelObVV4FNJk7oYtWEVzMLBstrxVN7ZyxVttG63BUIFwtJ' 'unsafe-inline' https://www.google-analytics.com; style-src 'self' 'unsafe-inline'; frame-src https://crash-stop-addon.herokuapp.com; frame-ancestors 'self'; form-action 'self' https://www.google.com/search https://github.com/login/oauth/authorize https://github.com/login"
|
||||
],
|
||||
"Content-Type": ["application/json; charset=UTF-8"],
|
||||
"Date": ["Thu, 04 Jun 2020 09:21:20 GMT"],
|
||||
"ETag": ["lFMJzgLH2ozUL48Ip3BNOA"],
|
||||
"Referrer-policy": ["same-origin"],
|
||||
"Set-Cookie": [
|
||||
"github_secret=L8ybCTpaOmSasZVm9DZLL6OnwTZp6cGCouewcak3l7e6FTQftt2OdhUsgmDqyI33TJRQEHJ5MDmopopIv8MApQk1no5uo68278AerDRjNlzYf1iSZoDVTHUwQZzlSrJwIGRJnXIwDKCt55SsCyLZVAMCXDyIyqnUE7Ne9n8R5Vwx7016xj2sYFSUzpNzvODgs1jE5LjPD7GAQEYAKpLAvgQ6VEgxL3j9aWC5wkafOWnZ1KFtXTcJF1FHbPqO6k2P; path=/; secure; HttpOnly; SameSite=Lax"
|
||||
],
|
||||
"Status": ["200"],
|
||||
"Strict-Transport-Security": ["max-age=31536000; includeSubDomains"],
|
||||
"Vary": ["Accept-Encoding"],
|
||||
"X-content-type-options": ["nosniff"],
|
||||
"X-frame-options": ["SAMEORIGIN"],
|
||||
"X-xss-protection": ["1; mode=block"],
|
||||
"transfer-encoding": ["chunked"]
|
||||
},
|
||||
"status": {
|
||||
"code": 200,
|
||||
"message": "OK"
|
||||
},
|
||||
"url": "https://bugzilla.mozilla.org/rest/bug/1605344/history"
|
||||
}
|
||||
},
|
||||
{
|
||||
"recorded_at": "2020-06-02T00:00:07",
|
||||
"request": {
|
||||
"body": {
|
||||
"encoding": "utf-8",
|
||||
"string": ""
|
||||
},
|
||||
"headers": {
|
||||
"Accept": ["application/json"],
|
||||
"Cookie": [
|
||||
"Bugzilla_login_request_cookie=xo1WpDktAv; github_secret=L8ybCTpaOmSasZVm9DZLL6OnwTZp6cGCouewcak3l7e6FTQftt2OdhUsgmDqyI33TJRQEHJ5MDmopopIv8MApQk1no5uo68278AerDRjNlzYf1iSZoDVTHUwQZzlSrJwIGRJnXIwDKCt55SsCyLZVAMCXDyIyqnUE7Ne9n8R5Vwx7016xj2sYFSUzpNzvODgs1jE5LjPD7GAQEYAKpLAvgQ6VEgxL3j9aWC5wkafOWnZ1KFtXTcJF1FHbPqO6k2P"
|
||||
],
|
||||
"User-Agent": ["treeherder/backend"]
|
||||
},
|
||||
"method": "GET",
|
||||
"uri": "https://bugzilla.mozilla.org/rest/bug/1628973/history"
|
||||
},
|
||||
"response": {
|
||||
"body": {
|
||||
"encoding": "UTF-8",
|
||||
"string": "{\"bugs\":[{\"alias\":null,\"history\":[{\"changes\":[{\"added\":\"P2\",\"removed\":\"--\",\"field_name\":\"priority\"}],\"who\":\"dave.hunt@gmail.com\",\"when\":\"2020-04-10T08:20:26Z\"},{\"who\":\"marian.raiciof@softvision.ro\",\"changes\":[{\"added\":\"P1\",\"removed\":\"P2\",\"field_name\":\"priority\"},{\"added\":\"marian.raiciof@softvision.ro\",\"field_name\":\"assigned_to\",\"removed\":\"nobody@mozilla.org\"},{\"removed\":\"NEW\",\"field_name\":\"status\",\"added\":\"ASSIGNED\"}],\"when\":\"2020-04-10T11:34:01Z\"},{\"who\":\"aiakab@mozilla.com\",\"changes\":[{\"added\":\"RESOLVED\",\"removed\":\"ASSIGNED\",\"field_name\":\"status\"},{\"removed\":\"---\",\"field_name\":\"target_milestone\",\"added\":\"mozilla77\"},{\"added\":\"FIXED\",\"removed\":\"\",\"field_name\":\"resolution\"},{\"added\":\"2020-04-10T21:47:25Z\",\"field_name\":\"cf_last_resolved\",\"removed\":\"\"},{\"removed\":\"---\",\"field_name\":\"cf_status_firefox77\",\"added\":\"fixed\"},{\"added\":\"bugherder\",\"comment_id\":14748101,\"comment_count\":3,\"removed\":\"\",\"field_name\":\"comment_tag\"}],\"when\":\"2020-04-10T21:47:25Z\"},{\"who\":\"fstrugariu@mozilla.com\",\"changes\":[{\"added\":\"fstrugariu@mozilla.com\",\"field_name\":\"cc\",\"removed\":\"\"},{\"field_name\":\"keywords\",\"removed\":\"\",\"added\":\"perf-alert\"}],\"when\":\"2020-04-21T07:15:28Z\"},{\"changes\":[{\"field_name\":\"cc\",\"removed\":\"\",\"added\":\"gmierz2@outlook.com\"}],\"who\":\"gmierz2@outlook.com\",\"when\":\"2020-04-21T13:14:15Z\"}],\"id\":1628973}]}"
|
||||
},
|
||||
"headers": {
|
||||
"Access-Control-Allow-Origin": ["*"],
|
||||
"Access-control-allow-headers": [
|
||||
"accept, content-type, origin, user-agent, x-requested-with, x-phabricator-token, x-bugzilla-login, x-bugzilla-token, x-bugzilla-api-key, x-bugzilla-password"
|
||||
],
|
||||
"Connection": ["keep-alive"],
|
||||
"Content-Length": ["1316"],
|
||||
"Content-Security-Policy-Report-Only": [
|
||||
"default-src 'self'; worker-src 'none'; connect-src 'self' https://product-details.mozilla.org https://www.google-analytics.com https://treeherder.mozilla.org/api/failurecount/ https://crash-stats.mozilla.org/api/SuperSearch/; font-src 'self' https://fonts.gstatic.com; img-src 'self' data: blob: https://secure.gravatar.com; object-src 'none'; script-src 'self' 'nonce-W3rglXpayvl79MZCfxUwdmXDJEhrsxE1wxccrHeLa4GkWIpz' 'unsafe-inline' https://www.google-analytics.com; style-src 'self' 'unsafe-inline'; frame-src https://crash-stop-addon.herokuapp.com; frame-ancestors 'self'; form-action 'self' https://www.google.com/search https://github.com/login/oauth/authorize https://github.com/login"
|
||||
],
|
||||
"Content-Type": ["application/json; charset=UTF-8"],
|
||||
"Date": ["Thu, 04 Jun 2020 09:21:20 GMT"],
|
||||
"ETag": ["KqodfnthWaZiy+eSdvCcrA"],
|
||||
"Referrer-policy": ["same-origin"],
|
||||
"Set-Cookie": [
|
||||
"github_secret=L8ybCTpaOmSasZVm9DZLL6OnwTZp6cGCouewcak3l7e6FTQftt2OdhUsgmDqyI33TJRQEHJ5MDmopopIv8MApQk1no5uo68278AerDRjNlzYf1iSZoDVTHUwQZzlSrJwIGRJnXIwDKCt55SsCyLZVAMCXDyIyqnUE7Ne9n8R5Vwx7016xj2sYFSUzpNzvODgs1jE5LjPD7GAQEYAKpLAvgQ6VEgxL3j9aWC5wkafOWnZ1KFtXTcJF1FHbPqO6k2P; path=/; secure; HttpOnly; SameSite=Lax"
|
||||
],
|
||||
"Status": ["200"],
|
||||
"Strict-Transport-Security": ["max-age=31536000; includeSubDomains"],
|
||||
"Vary": ["Accept-Encoding"],
|
||||
"X-content-type-options": ["nosniff"],
|
||||
"X-frame-options": ["SAMEORIGIN"],
|
||||
"X-xss-protection": ["1; mode=block"]
|
||||
},
|
||||
"status": {
|
||||
"code": 200,
|
||||
"message": "OK"
|
||||
},
|
||||
"url": "https://bugzilla.mozilla.org/rest/bug/1628973/history"
|
||||
}
|
||||
},
|
||||
{
|
||||
"recorded_at": "2020-06-02T00:00:08",
|
||||
"request": {
|
||||
"body": {
|
||||
"encoding": "utf-8",
|
||||
"string": ""
|
||||
},
|
||||
"headers": {
|
||||
"Accept": ["application/json"],
|
||||
"Cookie": [
|
||||
"Bugzilla_login_request_cookie=xo1WpDktAv; github_secret=L8ybCTpaOmSasZVm9DZLL6OnwTZp6cGCouewcak3l7e6FTQftt2OdhUsgmDqyI33TJRQEHJ5MDmopopIv8MApQk1no5uo68278AerDRjNlzYf1iSZoDVTHUwQZzlSrJwIGRJnXIwDKCt55SsCyLZVAMCXDyIyqnUE7Ne9n8R5Vwx7016xj2sYFSUzpNzvODgs1jE5LjPD7GAQEYAKpLAvgQ6VEgxL3j9aWC5wkafOWnZ1KFtXTcJF1FHbPqO6k2P"
|
||||
],
|
||||
"User-Agent": ["treeherder/backend"]
|
||||
},
|
||||
"method": "GET",
|
||||
"uri": "https://bugzilla.mozilla.org/rest/bug/1633366/history"
|
||||
},
|
||||
"response": {
|
||||
"body": {
|
||||
"encoding": "UTF-8",
|
||||
"string": "{\"bugs\":[{\"id\":1633366,\"alias\":null,\"history\":[{\"when\":\"2020-04-27T10:42:31Z\",\"changes\":[{\"field_name\":\"cc\",\"removed\":\"\",\"added\":\"hskupin@gmail.com\"},{\"field_name\":\"regressed_by\",\"removed\":\"\",\"added\":\"1627434\"},{\"field_name\":\"blocks\",\"removed\":\"\",\"added\":\"1628613\"},{\"added\":\"needinfo?(hskupin@gmail.com)\",\"field_name\":\"flagtypes.name\",\"removed\":\"\"},{\"added\":\"affected\",\"field_name\":\"cf_status_firefox77\",\"removed\":\"---\"}],\"who\":\"fstrugariu@mozilla.com\"},{\"when\":\"2020-04-27T11:41:40Z\",\"changes\":[{\"removed\":\"--\",\"field_name\":\"priority\",\"added\":\"P2\"},{\"field_name\":\"cc\",\"removed\":\"\",\"added\":\"gmierz2@outlook.com\"},{\"added\":\"Raptor\",\"removed\":\"Performance\",\"field_name\":\"component\"},{\"removed\":\"needinfo?(hskupin@gmail.com)\",\"field_name\":\"flagtypes.name\",\"added\":\"\"}],\"who\":\"hskupin@gmail.com\"},{\"when\":\"2020-04-27T13:26:17Z\",\"who\":\"hskupin@gmail.com\",\"changes\":[{\"added\":\"ionut.goldan@outlook.com\",\"removed\":\"\",\"field_name\":\"cc\"},{\"field_name\":\"flagtypes.name\",\"removed\":\"\",\"added\":\"needinfo?(ionut.goldan@outlook.com), needinfo?(fstrugariu@mozilla.com)\"}]},{\"changes\":[{\"added\":\"johnp@gmx.de\",\"field_name\":\"cc\",\"removed\":\"\"}],\"who\":\"johnp@gmx.de\",\"when\":\"2020-04-29T22:04:17Z\"},{\"when\":\"2020-04-30T08:39:53Z\",\"who\":\"fstrugariu@mozilla.com\",\"changes\":[{\"added\":\"\",\"field_name\":\"flagtypes.name\",\"removed\":\"needinfo?(ionut.goldan@outlook.com)\"}]},{\"who\":\"fstrugariu@mozilla.com\",\"changes\":[{\"removed\":\"needinfo?(fstrugariu@mozilla.com)\",\"field_name\":\"flagtypes.name\",\"added\":\"needinfo?(hskupin@gmail.com)\"}],\"when\":\"2020-04-30T09:24:24Z\"},{\"who\":\"hskupin@gmail.com\",\"changes\":[{\"removed\":\"needinfo?(hskupin@gmail.com)\",\"field_name\":\"flagtypes.name\",\"added\":\"\"}],\"when\":\"2020-04-30T11:45:03Z\"},{\"when\":\"2020-04-30T11:56:36Z\",\"who\":\"shindli@mozilla.com\",\"changes\":[{\"added\":\"shindli@mozilla.com\",\"removed\":\"\",\"field_name\":\"cc\"}]},{\"changes\":[{\"comment_count\":6,\"comment_id\":14788407,\"field_name\":\"comment_revision\",\"removed\":\":whimboo, backed this out from autoland, with a bit of luck it should reach central in ~ 4 ish hours.\",\"added\":\":whimboo, backed the patch out from autoland, with a bit of luck it should reach central in ~ 4 ish hours.\\n\\nhttps://treeherder.mozilla.org/#/jobs?repo=autoland&resultStatus=testfailed%2Cbusted%2Cexception&classifiedState=unclassified&revision=45c58c03f69e7cf6f9bb567bdcc0580b31d92ce5\"}],\"who\":\"shindli@mozilla.com\",\"when\":\"2020-04-30T12:00:40Z\"},{\"when\":\"2020-04-30T12:32:27Z\",\"who\":\"hskupin@gmail.com\",\"changes\":[{\"added\":\"https://bugzilla.mozilla.org/show_bug.cgi?id=1634371\",\"removed\":\"\",\"field_name\":\"see_also\"}]},{\"when\":\"2020-05-01T12:22:56Z\",\"changes\":[{\"added\":\"unaffected\",\"field_name\":\"cf_status_firefox75\",\"removed\":\"---\"},{\"field_name\":\"cf_status_firefox76\",\"removed\":\"---\",\"added\":\"unaffected\"}],\"who\":\"release-mgmt-account-bot@mozilla.tld\"},{\"who\":\"hskupin@gmail.com\",\"changes\":[{\"added\":\"needinfo?(fstrugariu@mozilla.com)\",\"field_name\":\"flagtypes.name\",\"removed\":\"\"}],\"when\":\"2020-05-04T08:05:56Z\"},{\"who\":\"fstrugariu@mozilla.com\",\"changes\":[{\"added\":\"\",\"field_name\":\"flagtypes.name\",\"removed\":\"needinfo?(fstrugariu@mozilla.com)\"}],\"when\":\"2020-05-04T09:39:36Z\"},{\"when\":\"2020-05-04T09:59:12Z\",\"changes\":[{\"added\":\"needinfo?(gmierz2@outlook.com)\",\"field_name\":\"flagtypes.name\",\"removed\":\"\"}],\"who\":\"hskupin@gmail.com\"},{\"changes\":[{\"added\":\"0\",\"removed\":\"1\",\"field_name\":\"is_confirmed\"},{\"added\":\"\",\"field_name\":\"flagtypes.name\",\"removed\":\"needinfo?(gmierz2@outlook.com)\"},{\"removed\":\"NEW\",\"field_name\":\"status\",\"added\":\"UNCONFIRMED\"}],\"who\":\"gmierz2@outlook.com\",\"when\":\"2020-05-05T18:26:48Z\"},{\"when\":\"2020-05-05T18:29:09Z\",\"changes\":[{\"removed\":\"\",\"field_name\":\"resolution\",\"added\":\"FIXED\"},{\"field_name\":\"assigned_to\",\"removed\":\"nobody@mozilla.org\",\"added\":\"hskupin@gmail.com\"},{\"added\":\"P1\",\"removed\":\"P2\",\"field_name\":\"priority\"},{\"added\":\"RESOLVED\",\"removed\":\"UNCONFIRMED\",\"field_name\":\"status\"},{\"added\":\"mozilla77\",\"removed\":\"---\",\"field_name\":\"target_milestone\"},{\"added\":\"2020-05-05T18:29:09Z\",\"field_name\":\"cf_last_resolved\",\"removed\":\"\"},{\"field_name\":\"cf_status_firefox77\",\"removed\":\"affected\",\"added\":\"fixed\"}],\"who\":\"hskupin@gmail.com\"},{\"changes\":[{\"field_name\":\"cf_status_firefox_esr68\",\"removed\":\"---\",\"added\":\"unaffected\"}],\"who\":\"ryanvm@gmail.com\",\"when\":\"2020-05-07T02:53:35Z\"}]}]}"
|
||||
},
|
||||
"headers": {
|
||||
"Access-Control-Allow-Origin": ["*"],
|
||||
"Access-control-allow-headers": [
|
||||
"accept, content-type, origin, user-agent, x-requested-with, x-bugzilla-login, x-bugzilla-password, x-bugzilla-api-key, x-phabricator-token, x-bugzilla-token"
|
||||
],
|
||||
"Connection": ["keep-alive"],
|
||||
"Content-Security-Policy-Report-Only": [
|
||||
"default-src 'self'; worker-src 'none'; connect-src 'self' https://product-details.mozilla.org https://www.google-analytics.com https://treeherder.mozilla.org/api/failurecount/ https://crash-stats.mozilla.org/api/SuperSearch/; font-src 'self' https://fonts.gstatic.com; img-src 'self' data: blob: https://secure.gravatar.com; object-src 'none'; script-src 'self' 'nonce-w3P3cyr5gckBo7WyuTcP6kGw76ZoAuTYLQDWxbjGtbiyEenz' 'unsafe-inline' https://www.google-analytics.com; style-src 'self' 'unsafe-inline'; frame-src https://crash-stop-addon.herokuapp.com; frame-ancestors 'self'; form-action 'self' https://www.google.com/search https://github.com/login/oauth/authorize https://github.com/login"
|
||||
],
|
||||
"Content-Type": ["application/json; charset=UTF-8"],
|
||||
"Date": ["Thu, 04 Jun 2020 09:21:21 GMT"],
|
||||
"ETag": ["YZEmSkZIn1hhWlEPEao4sQ"],
|
||||
"Referrer-policy": ["same-origin"],
|
||||
"Set-Cookie": [
|
||||
"github_secret=L8ybCTpaOmSasZVm9DZLL6OnwTZp6cGCouewcak3l7e6FTQftt2OdhUsgmDqyI33TJRQEHJ5MDmopopIv8MApQk1no5uo68278AerDRjNlzYf1iSZoDVTHUwQZzlSrJwIGRJnXIwDKCt55SsCyLZVAMCXDyIyqnUE7Ne9n8R5Vwx7016xj2sYFSUzpNzvODgs1jE5LjPD7GAQEYAKpLAvgQ6VEgxL3j9aWC5wkafOWnZ1KFtXTcJF1FHbPqO6k2P; path=/; secure; HttpOnly; SameSite=Lax"
|
||||
],
|
||||
"Status": ["200"],
|
||||
"Strict-Transport-Security": ["max-age=31536000; includeSubDomains"],
|
||||
"Vary": ["Accept-Encoding"],
|
||||
"X-content-type-options": ["nosniff"],
|
||||
"X-frame-options": ["SAMEORIGIN"],
|
||||
"X-xss-protection": ["1; mode=block"],
|
||||
"transfer-encoding": ["chunked"]
|
||||
},
|
||||
"status": {
|
||||
"code": 200,
|
||||
"message": "OK"
|
||||
},
|
||||
"url": "https://bugzilla.mozilla.org/rest/bug/1633366/history"
|
||||
}
|
||||
},
|
||||
{
|
||||
"recorded_at": "2020-06-02T00:00:08",
|
||||
"request": {
|
||||
"body": {
|
||||
"encoding": "utf-8",
|
||||
"string": ""
|
||||
},
|
||||
"headers": {
|
||||
"Accept": ["application/json"],
|
||||
"Cookie": [
|
||||
"Bugzilla_login_request_cookie=xo1WpDktAv; github_secret=L8ybCTpaOmSasZVm9DZLL6OnwTZp6cGCouewcak3l7e6FTQftt2OdhUsgmDqyI33TJRQEHJ5MDmopopIv8MApQk1no5uo68278AerDRjNlzYf1iSZoDVTHUwQZzlSrJwIGRJnXIwDKCt55SsCyLZVAMCXDyIyqnUE7Ne9n8R5Vwx7016xj2sYFSUzpNzvODgs1jE5LjPD7GAQEYAKpLAvgQ6VEgxL3j9aWC5wkafOWnZ1KFtXTcJF1FHbPqO6k2P"
|
||||
],
|
||||
"User-Agent": ["treeherder/backend"]
|
||||
},
|
||||
"method": "GET",
|
||||
"uri": "https://bugzilla.mozilla.org/rest/bug/1638265/history"
|
||||
},
|
||||
"response": {
|
||||
"body": {
|
||||
"encoding": "UTF-8",
|
||||
"string": "{\"bugs\":[{\"history\":[{\"changes\":[{\"field_name\":\"version\",\"removed\":\"Version 3\",\"added\":\"unspecified\"},{\"added\":\"Toolchains\",\"field_name\":\"component\",\"removed\":\"Performance\"},{\"field_name\":\"cc\",\"removed\":\"\",\"added\":\"dmajor@mozilla.com\"},{\"removed\":\"\",\"field_name\":\"flagtypes.name\",\"added\":\"needinfo?(dmajor@mozilla.com)\"},{\"added\":\"Firefox Build System\",\"removed\":\"Testing\",\"field_name\":\"product\"}],\"who\":\"fstrugariu@mozilla.com\",\"when\":\"2020-05-15T09:22:49Z\"},{\"when\":\"2020-05-15T11:12:14Z\",\"who\":\"dmajor@mozilla.com\",\"changes\":[{\"added\":\"needinfo?(fstrugariu@mozilla.com)\",\"field_name\":\"flagtypes.name\",\"removed\":\"needinfo?(dmajor@mozilla.com)\"}]},{\"when\":\"2020-05-15T12:20:58Z\",\"who\":\"release-mgmt-account-bot@mozilla.tld\",\"changes\":[{\"added\":\"unaffected\",\"removed\":\"---\",\"field_name\":\"cf_status_firefox76\"},{\"added\":\"unaffected\",\"removed\":\"---\",\"field_name\":\"cf_status_firefox77\"}]},{\"when\":\"2020-05-15T15:05:36Z\",\"changes\":[{\"added\":\"https://bugzilla.mozilla.org/show_bug.cgi?id=1638303\",\"field_name\":\"see_also\",\"removed\":\"\"}],\"who\":\"jcristau@mozilla.com\"},{\"when\":\"2020-05-16T15:17:14Z\",\"who\":\"mayankleoboy1@gmail.com\",\"changes\":[{\"added\":\"mayankleoboy1@gmail.com\",\"field_name\":\"cc\",\"removed\":\"\"}]},{\"who\":\"fstrugariu@mozilla.com\",\"changes\":[{\"added\":\"\",\"field_name\":\"flagtypes.name\",\"removed\":\"needinfo?(fstrugariu@mozilla.com)\"}],\"when\":\"2020-05-18T08:39:34Z\"},{\"when\":\"2020-05-20T11:33:04Z\",\"who\":\"jcristau@mozilla.com\",\"changes\":[{\"removed\":\"\",\"field_name\":\"cc\",\"added\":\"jcristau@mozilla.com\"},{\"added\":\"disabled\",\"removed\":\"affected\",\"field_name\":\"cf_status_firefox78\"}]}],\"alias\":null,\"id\":1638265}]}"
|
||||
},
|
||||
"headers": {
|
||||
"Access-Control-Allow-Origin": ["*"],
|
||||
"Access-control-allow-headers": [
|
||||
"accept, content-type, origin, user-agent, x-requested-with, x-phabricator-token, x-bugzilla-login, x-bugzilla-token, x-bugzilla-api-key, x-bugzilla-password"
|
||||
],
|
||||
"Connection": ["keep-alive"],
|
||||
"Content-Security-Policy-Report-Only": [
|
||||
"default-src 'self'; worker-src 'none'; connect-src 'self' https://product-details.mozilla.org https://www.google-analytics.com https://treeherder.mozilla.org/api/failurecount/ https://crash-stats.mozilla.org/api/SuperSearch/; font-src 'self' https://fonts.gstatic.com; img-src 'self' data: blob: https://secure.gravatar.com; object-src 'none'; script-src 'self' 'nonce-6UuKcwWB0kgFFGekU1CSMFRKMtNWfAaEffnzQ43LwuaOtXC0' 'unsafe-inline' https://www.google-analytics.com; style-src 'self' 'unsafe-inline'; frame-src https://crash-stop-addon.herokuapp.com; frame-ancestors 'self'; form-action 'self' https://www.google.com/search https://github.com/login/oauth/authorize https://github.com/login"
|
||||
],
|
||||
"Content-Type": ["application/json; charset=UTF-8"],
|
||||
"Date": ["Thu, 04 Jun 2020 09:21:21 GMT"],
|
||||
"ETag": ["RK8Xzxwo6JXL5H3il8zR1g"],
|
||||
"Referrer-policy": ["same-origin"],
|
||||
"Set-Cookie": [
|
||||
"github_secret=L8ybCTpaOmSasZVm9DZLL6OnwTZp6cGCouewcak3l7e6FTQftt2OdhUsgmDqyI33TJRQEHJ5MDmopopIv8MApQk1no5uo68278AerDRjNlzYf1iSZoDVTHUwQZzlSrJwIGRJnXIwDKCt55SsCyLZVAMCXDyIyqnUE7Ne9n8R5Vwx7016xj2sYFSUzpNzvODgs1jE5LjPD7GAQEYAKpLAvgQ6VEgxL3j9aWC5wkafOWnZ1KFtXTcJF1FHbPqO6k2P; path=/; secure; HttpOnly; SameSite=Lax"
|
||||
],
|
||||
"Status": ["200"],
|
||||
"Strict-Transport-Security": ["max-age=31536000; includeSubDomains"],
|
||||
"Vary": ["Accept-Encoding"],
|
||||
"X-content-type-options": ["nosniff"],
|
||||
"X-frame-options": ["SAMEORIGIN"],
|
||||
"X-xss-protection": ["1; mode=block"],
|
||||
"transfer-encoding": ["chunked"]
|
||||
},
|
||||
"status": {
|
||||
"code": 200,
|
||||
"message": "OK"
|
||||
},
|
||||
"url": "https://bugzilla.mozilla.org/rest/bug/1638265/history"
|
||||
}
|
||||
}
|
||||
],
|
||||
"recorded_with": "betamax/0.8.1"
|
||||
}
|
|
@ -0,0 +1,58 @@
|
|||
{
|
||||
"http_interactions": [
|
||||
{
|
||||
"recorded_at": "2020-06-02T00:00:09",
|
||||
"request": {
|
||||
"body": {
|
||||
"encoding": "utf-8",
|
||||
"string": ""
|
||||
},
|
||||
"headers": {
|
||||
"Accept": ["application/json"],
|
||||
"Cookie": [
|
||||
"Bugzilla_login_request_cookie=bCrLir7EuL; github_secret=7qhPkhsgKCnyBAiTJxNvUtAWbVj9uVPJvMrUhJBX9osIZ9U9PVNB2CLw4aAk07kmnglov4VOZbv2nwsx9YCrPV8ruRZSYIqh1JlOKnEMFb5pcf3eZRyGVmjbWZYceYjZVUfqaDW0MJbv5KHdu9AUWp91yAFWT85pKsnPeEGpFbuAVlUW8Ib9zMGoGRI1d0jjzuU9DB4VyRljRKt9pRIgtzEXaJyNcst1cToVZhLtDtm9HacV0eZHQUuYunCho52i"
|
||||
],
|
||||
"User-Agent": ["treeherder/backend"]
|
||||
},
|
||||
"method": "GET",
|
||||
"uri": "https://bugzilla.mozilla.org/rest/bug?longdesc=nonexistent_framework%2Cnonexistent_suite&longdesc_type=allwordssubstr&longdesc_initial=1&keywords=perf%2Cperf-alert&keywords_type=anywords&creation_time=2019-12-17T00%3A00%3A00Z&query_format=advanced&include_fields=id%2Ctype%2Cresolution%2Clast_change_time%2Cis_open%2Ccreation_time%2Csummary%2Cwhiteboard%2Cstatus%2Ckeywords"
|
||||
},
|
||||
"response": {
|
||||
"body": {
|
||||
"encoding": "UTF-8",
|
||||
"string": "{\"bugs\":[]}"
|
||||
},
|
||||
"headers": {
|
||||
"Access-Control-Allow-Origin": ["*"],
|
||||
"Access-control-allow-headers": [
|
||||
"accept, content-type, origin, user-agent, x-requested-with, x-bugzilla-api-key, x-phabricator-token, x-bugzilla-token, x-bugzilla-login, x-bugzilla-password"
|
||||
],
|
||||
"Connection": ["keep-alive"],
|
||||
"Content-Security-Policy-Report-Only": [
|
||||
"default-src 'self'; worker-src 'none'; connect-src 'self' https://product-details.mozilla.org https://www.google-analytics.com https://treeherder.mozilla.org/api/failurecount/ https://crash-stats.mozilla.org/api/SuperSearch/; font-src 'self' https://fonts.gstatic.com; img-src 'self' data: blob: https://secure.gravatar.com; object-src 'none'; script-src 'self' 'nonce-veqDacAKzd2T8viNBWCdDbJ61ciZt9Rpgj8WDgtyuuigMcJH' 'unsafe-inline' https://www.google-analytics.com; style-src 'self' 'unsafe-inline'; frame-src https://crash-stop-addon.herokuapp.com; frame-ancestors 'self'; form-action 'self' https://www.google.com/search https://github.com/login/oauth/authorize https://github.com/login"
|
||||
],
|
||||
"Content-Type": ["application/json; charset=UTF-8"],
|
||||
"Date": ["Thu, 04 Jun 2020 09:20:59 GMT"],
|
||||
"ETag": ["MiQPxvkqecldlG5tcvevvw"],
|
||||
"Referrer-policy": ["same-origin"],
|
||||
"Set-Cookie": [
|
||||
"github_secret=7qhPkhsgKCnyBAiTJxNvUtAWbVj9uVPJvMrUhJBX9osIZ9U9PVNB2CLw4aAk07kmnglov4VOZbv2nwsx9YCrPV8ruRZSYIqh1JlOKnEMFb5pcf3eZRyGVmjbWZYceYjZVUfqaDW0MJbv5KHdu9AUWp91yAFWT85pKsnPeEGpFbuAVlUW8Ib9zMGoGRI1d0jjzuU9DB4VyRljRKt9pRIgtzEXaJyNcst1cToVZhLtDtm9HacV0eZHQUuYunCho52i; path=/; secure; HttpOnly; SameSite=Lax"
|
||||
],
|
||||
"Status": ["200"],
|
||||
"Strict-Transport-Security": ["max-age=31536000; includeSubDomains"],
|
||||
"Vary": ["Accept-Encoding"],
|
||||
"X-content-type-options": ["nosniff"],
|
||||
"X-frame-options": ["SAMEORIGIN"],
|
||||
"X-xss-protection": ["1; mode=block"],
|
||||
"transfer-encoding": ["chunked"]
|
||||
},
|
||||
"status": {
|
||||
"code": 200,
|
||||
"message": "OK"
|
||||
},
|
||||
"url": "https://bugzilla.mozilla.org/rest/bug?longdesc=nonexistent_framework%2Cnonexistent_suite&longdesc_type=allwordssubstr&longdesc_initial=1&keywords=perf%2Cperf-alert&keywords_type=anywords&creation_time=2019-12-17T00%3A00%3A00Z&query_format=advanced&include_fields=id%2Ctype%2Cresolution%2Clast_change_time%2Cis_open%2Ccreation_time%2Csummary%2Cwhiteboard%2Cstatus%2Ckeywords"
|
||||
}
|
||||
}
|
||||
],
|
||||
"recorded_with": "betamax/0.8.1"
|
||||
}
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -0,0 +1,215 @@
|
|||
{
|
||||
"http_interactions": [
|
||||
{
|
||||
"recorded_at": "2020-06-02T00:00:06",
|
||||
"request": {
|
||||
"body": {
|
||||
"encoding": "utf-8",
|
||||
"string": ""
|
||||
},
|
||||
"headers": {
|
||||
"Accept": ["application/json"],
|
||||
"User-Agent": ["treeherder/backend"]
|
||||
},
|
||||
"method": "GET",
|
||||
"uri": "https://bugzilla.mozilla.org/rest/bug?longdesc=raptor%2Craptor-speedometer-firefox&longdesc_type=allwordssubstr&longdesc_initial=1&keywords=perf%2Cperf-alert&keywords_type=anywords&creation_time=2019-12-17T00%3A00%3A00Z&query_format=advanced&include_fields=id%2Ctype%2Cresolution%2Clast_change_time%2Cis_open%2Ccreation_time%2Csummary%2Cwhiteboard%2Cstatus%2Ckeywords"
|
||||
},
|
||||
"response": {
|
||||
"body": {
|
||||
"encoding": "UTF-8",
|
||||
"string": "{\"bugs\":[{\"resolution\":\"FIXED\",\"summary\":\"26.33 - 26.81% raptor-webaudio-firefox (macosx1014-64-shippable) regression on push 65cf656ecce94b8c8bc4933cf57eb760a3b8d10f (Wed December 18 2019)\",\"id\":1605344,\"is_open\":false,\"keywords\":[\"perf\",\"perf-alert\",\"regression\"],\"whiteboard\":\"\",\"creation_time\":\"2019-12-20T11:26:17Z\",\"last_change_time\":\"2020-01-06T15:20:55Z\",\"type\":\"defect\",\"status\":\"RESOLVED\"},{\"summary\":\"3.85 - 59% raptor-tp6-yandex-firefox-cold / raptor-tp6-yandex-firefox-cold fcp (windows7-32-shippable) regression on push 0e9235af0109f5d732564a19aa139eaf0788c910 (Fri April 24 2020)\",\"resolution\":\"FIXED\",\"creation_time\":\"2020-04-27T10:38:07Z\",\"whiteboard\":\"\",\"is_open\":false,\"keywords\":[\"perf\",\"perf-alert\",\"regression\"],\"id\":1633366,\"last_change_time\":\"2020-05-07T02:53:35Z\",\"status\":\"RESOLVED\",\"type\":\"defect\"},{\"status\":\"NEW\",\"type\":\"defect\",\"last_change_time\":\"2020-05-22T13:30:26Z\",\"whiteboard\":\"\",\"creation_time\":\"2020-05-15T09:22:11Z\",\"id\":1638265,\"is_open\":true,\"keywords\":[\"perf\",\"perf-alert\",\"regression\"],\"summary\":\"2.04 - 6.81% raptor-motionmark-htmlsuite-firefox / raptor-speedometer-firefox / raptor-tp6 raptor-webaudio-firefox (linux64-shippable, linux64-shippable-qr) regression on push 80ba3f3cfaf9b31341bca28e2e6aea383cec8acc (Thu May 14 2020)\",\"resolution\":\"\"}]}"
|
||||
},
|
||||
"headers": {
|
||||
"Access-Control-Allow-Origin": ["*"],
|
||||
"Access-control-allow-headers": [
|
||||
"accept, content-type, origin, user-agent, x-requested-with, x-bugzilla-login, x-bugzilla-password, x-bugzilla-token, x-phabricator-token, x-bugzilla-api-key"
|
||||
],
|
||||
"Connection": ["keep-alive"],
|
||||
"Content-Length": ["1294"],
|
||||
"Content-Security-Policy-Report-Only": [
|
||||
"default-src 'self'; worker-src 'none'; connect-src 'self' https://product-details.mozilla.org https://www.google-analytics.com https://treeherder.mozilla.org/api/failurecount/ https://crash-stats.mozilla.org/api/SuperSearch/; font-src 'self' https://fonts.gstatic.com; img-src 'self' data: blob: https://secure.gravatar.com; object-src 'none'; script-src 'self' 'nonce-MDjOO08n42TshP5wqSLgJr31ZxDzyGtKu52dwKqt8kRFFne6' 'unsafe-inline' https://www.google-analytics.com; style-src 'self' 'unsafe-inline'; frame-src https://crash-stop-addon.herokuapp.com; frame-ancestors 'self'; form-action 'self' https://www.google.com/search https://github.com/login/oauth/authorize https://github.com/login"
|
||||
],
|
||||
"Content-Type": ["application/json; charset=UTF-8"],
|
||||
"Date": ["Thu, 04 Jun 2020 09:21:27 GMT"],
|
||||
"ETag": ["/gsSKVOMQU0kt67aLM6JjQ"],
|
||||
"Referrer-policy": ["same-origin"],
|
||||
"Set-Cookie": [
|
||||
"Bugzilla_login_request_cookie=KkMbuxW4Ry; path=/; secure; HttpOnly; SameSite=Lax",
|
||||
"github_secret=IwfS7q21Vz3TN7k26Hs2iihgiGljsS90wqT2WBMdpzoT9ZLwFLIB9cQBTP41717NNDkAzJmn0QV5Do3NxtMRwZP3iDsayAf3jCKS1esdFElpo6MRCigcPWS7lIUtcmisQHY7OAyrqtkx85euNmZ8vbKF1EuNeDNrPXawF2eOC6JEWSq5O2yXxRR17nhp6laOx71DKRR17LEVVPuI54yO2D1xrrTdECizZU4es6dVOKIUYPG47KOYzmo5VUzYMD10; path=/; secure; HttpOnly; SameSite=Lax"
|
||||
],
|
||||
"Status": ["200"],
|
||||
"Strict-Transport-Security": ["max-age=31536000; includeSubDomains"],
|
||||
"Vary": ["Accept-Encoding"],
|
||||
"X-content-type-options": ["nosniff"],
|
||||
"X-frame-options": ["SAMEORIGIN"],
|
||||
"X-xss-protection": ["1; mode=block"]
|
||||
},
|
||||
"status": {
|
||||
"code": 200,
|
||||
"message": "OK"
|
||||
},
|
||||
"url": "https://bugzilla.mozilla.org/rest/bug?longdesc=raptor%2Craptor-speedometer-firefox&longdesc_type=allwordssubstr&longdesc_initial=1&keywords=perf%2Cperf-alert&keywords_type=anywords&creation_time=2019-12-17T00%3A00%3A00Z&query_format=advanced&include_fields=id%2Ctype%2Cresolution%2Clast_change_time%2Cis_open%2Ccreation_time%2Csummary%2Cwhiteboard%2Cstatus%2Ckeywords"
|
||||
}
|
||||
},
|
||||
{
|
||||
"recorded_at": "2020-06-02T00:00:06",
|
||||
"request": {
|
||||
"body": {
|
||||
"encoding": "utf-8",
|
||||
"string": ""
|
||||
},
|
||||
"headers": {
|
||||
"Accept": ["application/json"],
|
||||
"Cookie": [
|
||||
"Bugzilla_login_request_cookie=KkMbuxW4Ry; github_secret=IwfS7q21Vz3TN7k26Hs2iihgiGljsS90wqT2WBMdpzoT9ZLwFLIB9cQBTP41717NNDkAzJmn0QV5Do3NxtMRwZP3iDsayAf3jCKS1esdFElpo6MRCigcPWS7lIUtcmisQHY7OAyrqtkx85euNmZ8vbKF1EuNeDNrPXawF2eOC6JEWSq5O2yXxRR17nhp6laOx71DKRR17LEVVPuI54yO2D1xrrTdECizZU4es6dVOKIUYPG47KOYzmo5VUzYMD10"
|
||||
],
|
||||
"User-Agent": ["treeherder/backend"]
|
||||
},
|
||||
"method": "GET",
|
||||
"uri": "https://bugzilla.mozilla.org/rest/bug/1605344/history"
|
||||
},
|
||||
"response": {
|
||||
"body": {
|
||||
"encoding": "UTF-8",
|
||||
"string": "{\"bugs\":[{\"history\":[{\"when\":\"2019-12-20T11:28:13Z\",\"changes\":[{\"removed\":\"Performance\",\"field_name\":\"component\",\"added\":\"General\"},{\"added\":\"unspecified\",\"field_name\":\"version\",\"removed\":\"Version 3\"},{\"added\":\"1604578\",\"field_name\":\"regressed_by\",\"removed\":\"\"},{\"field_name\":\"blocks\",\"removed\":\"\",\"added\":\"1600879\"},{\"added\":\"Firefox Build System\",\"field_name\":\"product\",\"removed\":\"Testing\"}],\"who\":\"fstrugariu@mozilla.com\"},{\"when\":\"2019-12-20T11:28:37Z\",\"changes\":[{\"field_name\":\"cc\",\"removed\":\"\",\"added\":\"cmanchester@mozilla.com\"},{\"field_name\":\"flagtypes.name\",\"removed\":\"\",\"added\":\"needinfo?(cmanchester@mozilla.com)\"}],\"who\":\"fstrugariu@mozilla.com\"},{\"changes\":[{\"added\":\"1596182\",\"removed\":\"\",\"field_name\":\"depends_on\"},{\"added\":\"\",\"removed\":\"needinfo?(cmanchester@mozilla.com)\",\"field_name\":\"flagtypes.name\"}],\"who\":\"chmanchester@gmail.com\",\"when\":\"2019-12-20T17:13:15Z\"},{\"when\":\"2020-01-03T18:51:37Z\",\"changes\":[{\"added\":\"RESOLVED\",\"removed\":\"NEW\",\"field_name\":\"status\"},{\"added\":\"FIXED\",\"removed\":\"\",\"field_name\":\"resolution\"},{\"added\":\"2020-01-03T18:51:37Z\",\"field_name\":\"cf_last_resolved\",\"removed\":\"\"}],\"who\":\"chmanchester@gmail.com\"},{\"when\":\"2020-01-06T15:20:55Z\",\"changes\":[{\"added\":\"cmanchester@mozilla.com\",\"field_name\":\"assigned_to\",\"removed\":\"nobody@mozilla.org\"},{\"added\":\"mozilla73\",\"removed\":\"---\",\"field_name\":\"target_milestone\"},{\"removed\":\"---\",\"field_name\":\"cf_status_firefox_esr68\",\"added\":\"unaffected\"},{\"field_name\":\"cf_status_firefox71\",\"removed\":\"---\",\"added\":\"unaffected\"},{\"removed\":\"---\",\"field_name\":\"cf_status_firefox72\",\"added\":\"unaffected\"},{\"field_name\":\"cf_status_firefox73\",\"removed\":\"---\",\"added\":\"fixed\"}],\"who\":\"ryanvm@gmail.com\"}],\"alias\":null,\"id\":1605344}]}"
|
||||
},
|
||||
"headers": {
|
||||
"Access-Control-Allow-Origin": ["*"],
|
||||
"Access-control-allow-headers": [
|
||||
"accept, content-type, origin, user-agent, x-requested-with, x-bugzilla-api-key, x-phabricator-token, x-bugzilla-token, x-bugzilla-password, x-bugzilla-login"
|
||||
],
|
||||
"Connection": ["keep-alive"],
|
||||
"Content-Security-Policy-Report-Only": [
|
||||
"default-src 'self'; worker-src 'none'; connect-src 'self' https://product-details.mozilla.org https://www.google-analytics.com https://treeherder.mozilla.org/api/failurecount/ https://crash-stats.mozilla.org/api/SuperSearch/; font-src 'self' https://fonts.gstatic.com; img-src 'self' data: blob: https://secure.gravatar.com; object-src 'none'; script-src 'self' 'nonce-3r8zJ8d8hr1wNVZM35PtIP2jU5jftrL0Fq84sj0Bk7t4Tcx0' 'unsafe-inline' https://www.google-analytics.com; style-src 'self' 'unsafe-inline'; frame-src https://crash-stop-addon.herokuapp.com; frame-ancestors 'self'; form-action 'self' https://www.google.com/search https://github.com/login/oauth/authorize https://github.com/login"
|
||||
],
|
||||
"Content-Type": ["application/json; charset=UTF-8"],
|
||||
"Date": ["Thu, 04 Jun 2020 09:21:28 GMT"],
|
||||
"ETag": ["lFMJzgLH2ozUL48Ip3BNOA"],
|
||||
"Referrer-policy": ["same-origin"],
|
||||
"Set-Cookie": [
|
||||
"github_secret=IwfS7q21Vz3TN7k26Hs2iihgiGljsS90wqT2WBMdpzoT9ZLwFLIB9cQBTP41717NNDkAzJmn0QV5Do3NxtMRwZP3iDsayAf3jCKS1esdFElpo6MRCigcPWS7lIUtcmisQHY7OAyrqtkx85euNmZ8vbKF1EuNeDNrPXawF2eOC6JEWSq5O2yXxRR17nhp6laOx71DKRR17LEVVPuI54yO2D1xrrTdECizZU4es6dVOKIUYPG47KOYzmo5VUzYMD10; path=/; secure; HttpOnly; SameSite=Lax"
|
||||
],
|
||||
"Status": ["200"],
|
||||
"Strict-Transport-Security": ["max-age=31536000; includeSubDomains"],
|
||||
"Vary": ["Accept-Encoding"],
|
||||
"X-content-type-options": ["nosniff"],
|
||||
"X-frame-options": ["SAMEORIGIN"],
|
||||
"X-xss-protection": ["1; mode=block"],
|
||||
"transfer-encoding": ["chunked"]
|
||||
},
|
||||
"status": {
|
||||
"code": 200,
|
||||
"message": "OK"
|
||||
},
|
||||
"url": "https://bugzilla.mozilla.org/rest/bug/1605344/history"
|
||||
}
|
||||
},
|
||||
{
|
||||
"recorded_at": "2020-06-02T00:00:06",
|
||||
"request": {
|
||||
"body": {
|
||||
"encoding": "utf-8",
|
||||
"string": ""
|
||||
},
|
||||
"headers": {
|
||||
"Accept": ["application/json"],
|
||||
"Cookie": [
|
||||
"Bugzilla_login_request_cookie=KkMbuxW4Ry; github_secret=IwfS7q21Vz3TN7k26Hs2iihgiGljsS90wqT2WBMdpzoT9ZLwFLIB9cQBTP41717NNDkAzJmn0QV5Do3NxtMRwZP3iDsayAf3jCKS1esdFElpo6MRCigcPWS7lIUtcmisQHY7OAyrqtkx85euNmZ8vbKF1EuNeDNrPXawF2eOC6JEWSq5O2yXxRR17nhp6laOx71DKRR17LEVVPuI54yO2D1xrrTdECizZU4es6dVOKIUYPG47KOYzmo5VUzYMD10"
|
||||
],
|
||||
"User-Agent": ["treeherder/backend"]
|
||||
},
|
||||
"method": "GET",
|
||||
"uri": "https://bugzilla.mozilla.org/rest/bug/1633366/history"
|
||||
},
|
||||
"response": {
|
||||
"body": {
|
||||
"encoding": "UTF-8",
|
||||
"string": "{\"bugs\":[{\"history\":[{\"when\":\"2020-04-27T10:42:31Z\",\"who\":\"fstrugariu@mozilla.com\",\"changes\":[{\"removed\":\"\",\"field_name\":\"cc\",\"added\":\"hskupin@gmail.com\"},{\"field_name\":\"regressed_by\",\"added\":\"1627434\",\"removed\":\"\"},{\"field_name\":\"blocks\",\"added\":\"1628613\",\"removed\":\"\"},{\"removed\":\"\",\"added\":\"needinfo?(hskupin@gmail.com)\",\"field_name\":\"flagtypes.name\"},{\"field_name\":\"cf_status_firefox77\",\"added\":\"affected\",\"removed\":\"---\"}]},{\"when\":\"2020-04-27T11:41:40Z\",\"who\":\"hskupin@gmail.com\",\"changes\":[{\"field_name\":\"priority\",\"added\":\"P2\",\"removed\":\"--\"},{\"removed\":\"\",\"field_name\":\"cc\",\"added\":\"gmierz2@outlook.com\"},{\"removed\":\"Performance\",\"added\":\"Raptor\",\"field_name\":\"component\"},{\"field_name\":\"flagtypes.name\",\"added\":\"\",\"removed\":\"needinfo?(hskupin@gmail.com)\"}]},{\"changes\":[{\"removed\":\"\",\"added\":\"ionut.goldan@outlook.com\",\"field_name\":\"cc\"},{\"field_name\":\"flagtypes.name\",\"added\":\"needinfo?(ionut.goldan@outlook.com), needinfo?(fstrugariu@mozilla.com)\",\"removed\":\"\"}],\"who\":\"hskupin@gmail.com\",\"when\":\"2020-04-27T13:26:17Z\"},{\"changes\":[{\"removed\":\"\",\"added\":\"johnp@gmx.de\",\"field_name\":\"cc\"}],\"who\":\"johnp@gmx.de\",\"when\":\"2020-04-29T22:04:17Z\"},{\"changes\":[{\"removed\":\"needinfo?(ionut.goldan@outlook.com)\",\"field_name\":\"flagtypes.name\",\"added\":\"\"}],\"when\":\"2020-04-30T08:39:53Z\",\"who\":\"fstrugariu@mozilla.com\"},{\"who\":\"fstrugariu@mozilla.com\",\"when\":\"2020-04-30T09:24:24Z\",\"changes\":[{\"added\":\"needinfo?(hskupin@gmail.com)\",\"field_name\":\"flagtypes.name\",\"removed\":\"needinfo?(fstrugariu@mozilla.com)\"}]},{\"changes\":[{\"removed\":\"needinfo?(hskupin@gmail.com)\",\"added\":\"\",\"field_name\":\"flagtypes.name\"}],\"who\":\"hskupin@gmail.com\",\"when\":\"2020-04-30T11:45:03Z\"},{\"changes\":[{\"removed\":\"\",\"field_name\":\"cc\",\"added\":\"shindli@mozilla.com\"}],\"when\":\"2020-04-30T11:56:36Z\",\"who\":\"shindli@mozilla.com\"},{\"when\":\"2020-04-30T12:00:40Z\",\"who\":\"shindli@mozilla.com\",\"changes\":[{\"removed\":\":whimboo, backed this out from autoland, with a bit of luck it should reach central in ~ 4 ish hours.\",\"comment_count\":6,\"comment_id\":14788407,\"added\":\":whimboo, backed the patch out from autoland, with a bit of luck it should reach central in ~ 4 ish hours.\\n\\nhttps://treeherder.mozilla.org/#/jobs?repo=autoland&resultStatus=testfailed%2Cbusted%2Cexception&classifiedState=unclassified&revision=45c58c03f69e7cf6f9bb567bdcc0580b31d92ce5\",\"field_name\":\"comment_revision\"}]},{\"who\":\"hskupin@gmail.com\",\"when\":\"2020-04-30T12:32:27Z\",\"changes\":[{\"field_name\":\"see_also\",\"added\":\"https://bugzilla.mozilla.org/show_bug.cgi?id=1634371\",\"removed\":\"\"}]},{\"who\":\"release-mgmt-account-bot@mozilla.tld\",\"when\":\"2020-05-01T12:22:56Z\",\"changes\":[{\"removed\":\"---\",\"field_name\":\"cf_status_firefox75\",\"added\":\"unaffected\"},{\"removed\":\"---\",\"field_name\":\"cf_status_firefox76\",\"added\":\"unaffected\"}]},{\"changes\":[{\"field_name\":\"flagtypes.name\",\"added\":\"needinfo?(fstrugariu@mozilla.com)\",\"removed\":\"\"}],\"who\":\"hskupin@gmail.com\",\"when\":\"2020-05-04T08:05:56Z\"},{\"changes\":[{\"added\":\"\",\"field_name\":\"flagtypes.name\",\"removed\":\"needinfo?(fstrugariu@mozilla.com)\"}],\"who\":\"fstrugariu@mozilla.com\",\"when\":\"2020-05-04T09:39:36Z\"},{\"changes\":[{\"removed\":\"\",\"field_name\":\"flagtypes.name\",\"added\":\"needinfo?(gmierz2@outlook.com)\"}],\"who\":\"hskupin@gmail.com\",\"when\":\"2020-05-04T09:59:12Z\"},{\"when\":\"2020-05-05T18:26:48Z\",\"who\":\"gmierz2@outlook.com\",\"changes\":[{\"removed\":\"1\",\"added\":\"0\",\"field_name\":\"is_confirmed\"},{\"field_name\":\"flagtypes.name\",\"added\":\"\",\"removed\":\"needinfo?(gmierz2@outlook.com)\"},{\"removed\":\"NEW\",\"added\":\"UNCONFIRMED\",\"field_name\":\"status\"}]},{\"when\":\"2020-05-05T18:29:09Z\",\"who\":\"hskupin@gmail.com\",\"changes\":[{\"removed\":\"\",\"added\":\"FIXED\",\"field_name\":\"resolution\"},{\"field_name\":\"assigned_to\",\"added\":\"hskupin@gmail.com\",\"removed\":\"nobody@mozilla.org\"},{\"removed\":\"P2\",\"field_name\":\"priority\",\"added\":\"P1\"},{\"field_name\":\"status\",\"added\":\"RESOLVED\",\"removed\":\"UNCONFIRMED\"},{\"added\":\"mozilla77\",\"field_name\":\"target_milestone\",\"removed\":\"---\"},{\"field_name\":\"cf_last_resolved\",\"added\":\"2020-05-05T18:29:09Z\",\"removed\":\"\"},{\"added\":\"fixed\",\"field_name\":\"cf_status_firefox77\",\"removed\":\"affected\"}]},{\"changes\":[{\"removed\":\"---\",\"added\":\"unaffected\",\"field_name\":\"cf_status_firefox_esr68\"}],\"when\":\"2020-05-07T02:53:35Z\",\"who\":\"ryanvm@gmail.com\"}],\"alias\":null,\"id\":1633366}]}"
|
||||
},
|
||||
"headers": {
|
||||
"Access-Control-Allow-Origin": ["*"],
|
||||
"Access-control-allow-headers": [
|
||||
"accept, content-type, origin, user-agent, x-requested-with, x-bugzilla-token, x-bugzilla-login, x-phabricator-token, x-bugzilla-api-key, x-bugzilla-password"
|
||||
],
|
||||
"Connection": ["keep-alive"],
|
||||
"Content-Security-Policy-Report-Only": [
|
||||
"default-src 'self'; worker-src 'none'; connect-src 'self' https://product-details.mozilla.org https://www.google-analytics.com https://treeherder.mozilla.org/api/failurecount/ https://crash-stats.mozilla.org/api/SuperSearch/; font-src 'self' https://fonts.gstatic.com; img-src 'self' data: blob: https://secure.gravatar.com; object-src 'none'; script-src 'self' 'nonce-Jep3C2eAYqQxjdUtMBneGfRMiFhQpwzw3bWn2kEoC482vv9F' 'unsafe-inline' https://www.google-analytics.com; style-src 'self' 'unsafe-inline'; frame-src https://crash-stop-addon.herokuapp.com; frame-ancestors 'self'; form-action 'self' https://www.google.com/search https://github.com/login/oauth/authorize https://github.com/login"
|
||||
],
|
||||
"Content-Type": ["application/json; charset=UTF-8"],
|
||||
"Date": ["Thu, 04 Jun 2020 09:21:28 GMT"],
|
||||
"ETag": ["YZEmSkZIn1hhWlEPEao4sQ"],
|
||||
"Referrer-policy": ["same-origin"],
|
||||
"Set-Cookie": [
|
||||
"github_secret=IwfS7q21Vz3TN7k26Hs2iihgiGljsS90wqT2WBMdpzoT9ZLwFLIB9cQBTP41717NNDkAzJmn0QV5Do3NxtMRwZP3iDsayAf3jCKS1esdFElpo6MRCigcPWS7lIUtcmisQHY7OAyrqtkx85euNmZ8vbKF1EuNeDNrPXawF2eOC6JEWSq5O2yXxRR17nhp6laOx71DKRR17LEVVPuI54yO2D1xrrTdECizZU4es6dVOKIUYPG47KOYzmo5VUzYMD10; path=/; secure; HttpOnly; SameSite=Lax"
|
||||
],
|
||||
"Status": ["200"],
|
||||
"Strict-Transport-Security": ["max-age=31536000; includeSubDomains"],
|
||||
"Vary": ["Accept-Encoding"],
|
||||
"X-content-type-options": ["nosniff"],
|
||||
"X-frame-options": ["SAMEORIGIN"],
|
||||
"X-xss-protection": ["1; mode=block"],
|
||||
"transfer-encoding": ["chunked"]
|
||||
},
|
||||
"status": {
|
||||
"code": 200,
|
||||
"message": "OK"
|
||||
},
|
||||
"url": "https://bugzilla.mozilla.org/rest/bug/1633366/history"
|
||||
}
|
||||
},
|
||||
{
|
||||
"recorded_at": "2020-06-02T00:00:06",
|
||||
"request": {
|
||||
"body": {
|
||||
"encoding": "utf-8",
|
||||
"string": ""
|
||||
},
|
||||
"headers": {
|
||||
"Accept": ["application/json"],
|
||||
"Cookie": [
|
||||
"Bugzilla_login_request_cookie=KkMbuxW4Ry; github_secret=IwfS7q21Vz3TN7k26Hs2iihgiGljsS90wqT2WBMdpzoT9ZLwFLIB9cQBTP41717NNDkAzJmn0QV5Do3NxtMRwZP3iDsayAf3jCKS1esdFElpo6MRCigcPWS7lIUtcmisQHY7OAyrqtkx85euNmZ8vbKF1EuNeDNrPXawF2eOC6JEWSq5O2yXxRR17nhp6laOx71DKRR17LEVVPuI54yO2D1xrrTdECizZU4es6dVOKIUYPG47KOYzmo5VUzYMD10"
|
||||
],
|
||||
"User-Agent": ["treeherder/backend"]
|
||||
},
|
||||
"method": "GET",
|
||||
"uri": "https://bugzilla.mozilla.org/rest/bug/1638265/history"
|
||||
},
|
||||
"response": {
|
||||
"body": {
|
||||
"encoding": "UTF-8",
|
||||
"string": "{\"bugs\":[{\"alias\":null,\"history\":[{\"when\":\"2020-05-15T09:22:49Z\",\"changes\":[{\"added\":\"unspecified\",\"removed\":\"Version 3\",\"field_name\":\"version\"},{\"removed\":\"Performance\",\"field_name\":\"component\",\"added\":\"Toolchains\"},{\"added\":\"dmajor@mozilla.com\",\"removed\":\"\",\"field_name\":\"cc\"},{\"added\":\"needinfo?(dmajor@mozilla.com)\",\"removed\":\"\",\"field_name\":\"flagtypes.name\"},{\"added\":\"Firefox Build System\",\"field_name\":\"product\",\"removed\":\"Testing\"}],\"who\":\"fstrugariu@mozilla.com\"},{\"when\":\"2020-05-15T11:12:14Z\",\"changes\":[{\"field_name\":\"flagtypes.name\",\"removed\":\"needinfo?(dmajor@mozilla.com)\",\"added\":\"needinfo?(fstrugariu@mozilla.com)\"}],\"who\":\"dmajor@mozilla.com\"},{\"changes\":[{\"added\":\"unaffected\",\"removed\":\"---\",\"field_name\":\"cf_status_firefox76\"},{\"added\":\"unaffected\",\"removed\":\"---\",\"field_name\":\"cf_status_firefox77\"}],\"who\":\"release-mgmt-account-bot@mozilla.tld\",\"when\":\"2020-05-15T12:20:58Z\"},{\"changes\":[{\"removed\":\"\",\"field_name\":\"see_also\",\"added\":\"https://bugzilla.mozilla.org/show_bug.cgi?id=1638303\"}],\"who\":\"jcristau@mozilla.com\",\"when\":\"2020-05-15T15:05:36Z\"},{\"when\":\"2020-05-16T15:17:14Z\",\"changes\":[{\"added\":\"mayankleoboy1@gmail.com\",\"removed\":\"\",\"field_name\":\"cc\"}],\"who\":\"mayankleoboy1@gmail.com\"},{\"when\":\"2020-05-18T08:39:34Z\",\"who\":\"fstrugariu@mozilla.com\",\"changes\":[{\"removed\":\"needinfo?(fstrugariu@mozilla.com)\",\"field_name\":\"flagtypes.name\",\"added\":\"\"}]},{\"when\":\"2020-05-20T11:33:04Z\",\"who\":\"jcristau@mozilla.com\",\"changes\":[{\"removed\":\"\",\"field_name\":\"cc\",\"added\":\"jcristau@mozilla.com\"},{\"added\":\"disabled\",\"removed\":\"affected\",\"field_name\":\"cf_status_firefox78\"}]}],\"id\":1638265}]}"
|
||||
},
|
||||
"headers": {
|
||||
"Access-Control-Allow-Origin": ["*"],
|
||||
"Access-control-allow-headers": [
|
||||
"accept, content-type, origin, user-agent, x-requested-with, x-bugzilla-api-key, x-phabricator-token, x-bugzilla-token, x-bugzilla-password, x-bugzilla-login"
|
||||
],
|
||||
"Connection": ["keep-alive"],
|
||||
"Content-Length": ["1611"],
|
||||
"Content-Security-Policy-Report-Only": [
|
||||
"default-src 'self'; worker-src 'none'; connect-src 'self' https://product-details.mozilla.org https://www.google-analytics.com https://treeherder.mozilla.org/api/failurecount/ https://crash-stats.mozilla.org/api/SuperSearch/; font-src 'self' https://fonts.gstatic.com; img-src 'self' data: blob: https://secure.gravatar.com; object-src 'none'; script-src 'self' 'nonce-NA6DF83IhFED8JgZ1bRrjtb57Y3z9gJVNPCi0IuGthkpRJk3' 'unsafe-inline' https://www.google-analytics.com; style-src 'self' 'unsafe-inline'; frame-src https://crash-stop-addon.herokuapp.com; frame-ancestors 'self'; form-action 'self' https://www.google.com/search https://github.com/login/oauth/authorize https://github.com/login"
|
||||
],
|
||||
"Content-Type": ["application/json; charset=UTF-8"],
|
||||
"Date": ["Thu, 04 Jun 2020 09:21:28 GMT"],
|
||||
"ETag": ["RK8Xzxwo6JXL5H3il8zR1g"],
|
||||
"Referrer-policy": ["same-origin"],
|
||||
"Set-Cookie": [
|
||||
"github_secret=IwfS7q21Vz3TN7k26Hs2iihgiGljsS90wqT2WBMdpzoT9ZLwFLIB9cQBTP41717NNDkAzJmn0QV5Do3NxtMRwZP3iDsayAf3jCKS1esdFElpo6MRCigcPWS7lIUtcmisQHY7OAyrqtkx85euNmZ8vbKF1EuNeDNrPXawF2eOC6JEWSq5O2yXxRR17nhp6laOx71DKRR17LEVVPuI54yO2D1xrrTdECizZU4es6dVOKIUYPG47KOYzmo5VUzYMD10; path=/; secure; HttpOnly; SameSite=Lax"
|
||||
],
|
||||
"Status": ["200"],
|
||||
"Strict-Transport-Security": ["max-age=31536000; includeSubDomains"],
|
||||
"Vary": ["Accept-Encoding"],
|
||||
"X-content-type-options": ["nosniff"],
|
||||
"X-frame-options": ["SAMEORIGIN"],
|
||||
"X-xss-protection": ["1; mode=block"]
|
||||
},
|
||||
"status": {
|
||||
"code": 200,
|
||||
"message": "OK"
|
||||
},
|
||||
"url": "https://bugzilla.mozilla.org/rest/bug/1638265/history"
|
||||
}
|
||||
}
|
||||
],
|
||||
"recorded_with": "betamax/0.8.1"
|
||||
}
|
|
@ -0,0 +1,215 @@
|
|||
{
|
||||
"http_interactions": [
|
||||
{
|
||||
"recorded_at": "2020-06-02T00:00:06",
|
||||
"request": {
|
||||
"body": {
|
||||
"encoding": "utf-8",
|
||||
"string": ""
|
||||
},
|
||||
"headers": {
|
||||
"Accept": ["application/json"],
|
||||
"User-Agent": ["treeherder/backend"]
|
||||
},
|
||||
"method": "GET",
|
||||
"uri": "https://bugzilla.mozilla.org/rest/bug?longdesc=raptor%2Craptor-webaudio-firefox&longdesc_type=allwordssubstr&longdesc_initial=1&keywords=perf%2Cperf-alert&keywords_type=anywords&creation_time=2019-12-17T00%3A00%3A00Z&query_format=advanced&include_fields=id%2Ctype%2Cresolution%2Clast_change_time%2Cis_open%2Ccreation_time%2Csummary%2Cwhiteboard%2Cstatus%2Ckeywords"
|
||||
},
|
||||
"response": {
|
||||
"body": {
|
||||
"encoding": "UTF-8",
|
||||
"string": "{\"bugs\":[{\"status\":\"RESOLVED\",\"whiteboard\":\"\",\"creation_time\":\"2019-12-20T11:26:17Z\",\"last_change_time\":\"2020-01-06T15:20:55Z\",\"summary\":\"26.33 - 26.81% raptor-webaudio-firefox (macosx1014-64-shippable) regression on push 65cf656ecce94b8c8bc4933cf57eb760a3b8d10f (Wed December 18 2019)\",\"type\":\"defect\",\"is_open\":false,\"resolution\":\"FIXED\",\"keywords\":[\"perf\",\"perf-alert\",\"regression\"],\"id\":1605344},{\"keywords\":[\"perf\",\"perf-alert\",\"regression\"],\"resolution\":\"FIXED\",\"id\":1625980,\"last_change_time\":\"2020-04-22T12:59:40Z\",\"summary\":\"48.34 - 55.4% raptor-webaudio-firefox (linux64, macosx, windows10) regression on push efa017cf034f4485591fd9afe0ba2960ffafadc0 (Fri March 27 2020)\",\"type\":\"defect\",\"is_open\":false,\"creation_time\":\"2020-03-30T15:09:35Z\",\"status\":\"RESOLVED\",\"whiteboard\":\"\"},{\"status\":\"NEW\",\"whiteboard\":\"\",\"creation_time\":\"2020-05-15T09:22:11Z\",\"last_change_time\":\"2020-05-22T13:30:26Z\",\"type\":\"defect\",\"summary\":\"2.04 - 6.81% raptor-motionmark-htmlsuite-firefox / raptor-speedometer-firefox / raptor-tp6 raptor-webaudio-firefox (linux64-shippable, linux64-shippable-qr) regression on push 80ba3f3cfaf9b31341bca28e2e6aea383cec8acc (Thu May 14 2020)\",\"is_open\":true,\"keywords\":[\"perf\",\"perf-alert\",\"regression\"],\"resolution\":\"\",\"id\":1638265}]}"
|
||||
},
|
||||
"headers": {
|
||||
"Access-Control-Allow-Origin": ["*"],
|
||||
"Access-control-allow-headers": [
|
||||
"accept, content-type, origin, user-agent, x-requested-with, x-bugzilla-login, x-phabricator-token, x-bugzilla-token, x-bugzilla-password, x-bugzilla-api-key"
|
||||
],
|
||||
"Connection": ["keep-alive"],
|
||||
"Content-Length": ["1258"],
|
||||
"Content-Security-Policy-Report-Only": [
|
||||
"default-src 'self'; worker-src 'none'; connect-src 'self' https://product-details.mozilla.org https://www.google-analytics.com https://treeherder.mozilla.org/api/failurecount/ https://crash-stats.mozilla.org/api/SuperSearch/; font-src 'self' https://fonts.gstatic.com; img-src 'self' data: blob: https://secure.gravatar.com; object-src 'none'; script-src 'self' 'nonce-9bQGU49w719fHR4xDHFPKqrqEQWNDluh7EQQ8lTxAlnAvO0T' 'unsafe-inline' https://www.google-analytics.com; style-src 'self' 'unsafe-inline'; frame-src https://crash-stop-addon.herokuapp.com; frame-ancestors 'self'; form-action 'self' https://www.google.com/search https://github.com/login/oauth/authorize https://github.com/login"
|
||||
],
|
||||
"Content-Type": ["application/json; charset=UTF-8"],
|
||||
"Date": ["Thu, 04 Jun 2020 09:21:35 GMT"],
|
||||
"ETag": ["OqMMMLYfj7TlwfDhbOMItw"],
|
||||
"Referrer-policy": ["same-origin"],
|
||||
"Set-Cookie": [
|
||||
"Bugzilla_login_request_cookie=aB15wokxpC; path=/; secure; HttpOnly; SameSite=Lax",
|
||||
"github_secret=MOFfdorDoGZ9ZZm9o7A7zPDDaB6kniqWQR6ANMyuK46R6km6Ej2FZOOzaczUGITh5TgPXC1r6AhLfWDR9kQHKlyiWbcnTixDwTnMBRiLWgbbfFwTctfKFP60zwQtMqzDtI16Svn8ctq6jXr7PWnH8f8C2Qq3lAhm5XPg1tL8uBUWo271hKOEcNNoMZKSB8XNeDNqfTzvv1wGn6hJGUCKifN0NmvdwOkAnAwThQoYp4i3waagz86oX1xku6Ab6qY6; path=/; secure; HttpOnly; SameSite=Lax"
|
||||
],
|
||||
"Status": ["200"],
|
||||
"Strict-Transport-Security": ["max-age=31536000; includeSubDomains"],
|
||||
"Vary": ["Accept-Encoding"],
|
||||
"X-content-type-options": ["nosniff"],
|
||||
"X-frame-options": ["SAMEORIGIN"],
|
||||
"X-xss-protection": ["1; mode=block"]
|
||||
},
|
||||
"status": {
|
||||
"code": 200,
|
||||
"message": "OK"
|
||||
},
|
||||
"url": "https://bugzilla.mozilla.org/rest/bug?longdesc=raptor%2Craptor-webaudio-firefox&longdesc_type=allwordssubstr&longdesc_initial=1&keywords=perf%2Cperf-alert&keywords_type=anywords&creation_time=2019-12-17T00%3A00%3A00Z&query_format=advanced&include_fields=id%2Ctype%2Cresolution%2Clast_change_time%2Cis_open%2Ccreation_time%2Csummary%2Cwhiteboard%2Cstatus%2Ckeywords"
|
||||
}
|
||||
},
|
||||
{
|
||||
"recorded_at": "2020-06-02T00:00:06",
|
||||
"request": {
|
||||
"body": {
|
||||
"encoding": "utf-8",
|
||||
"string": ""
|
||||
},
|
||||
"headers": {
|
||||
"Accept": ["application/json"],
|
||||
"Cookie": [
|
||||
"Bugzilla_login_request_cookie=aB15wokxpC; github_secret=MOFfdorDoGZ9ZZm9o7A7zPDDaB6kniqWQR6ANMyuK46R6km6Ej2FZOOzaczUGITh5TgPXC1r6AhLfWDR9kQHKlyiWbcnTixDwTnMBRiLWgbbfFwTctfKFP60zwQtMqzDtI16Svn8ctq6jXr7PWnH8f8C2Qq3lAhm5XPg1tL8uBUWo271hKOEcNNoMZKSB8XNeDNqfTzvv1wGn6hJGUCKifN0NmvdwOkAnAwThQoYp4i3waagz86oX1xku6Ab6qY6"
|
||||
],
|
||||
"User-Agent": ["treeherder/backend"]
|
||||
},
|
||||
"method": "GET",
|
||||
"uri": "https://bugzilla.mozilla.org/rest/bug/1605344/history"
|
||||
},
|
||||
"response": {
|
||||
"body": {
|
||||
"encoding": "UTF-8",
|
||||
"string": "{\"bugs\":[{\"alias\":null,\"history\":[{\"when\":\"2019-12-20T11:28:13Z\",\"who\":\"fstrugariu@mozilla.com\",\"changes\":[{\"field_name\":\"component\",\"removed\":\"Performance\",\"added\":\"General\"},{\"field_name\":\"version\",\"removed\":\"Version 3\",\"added\":\"unspecified\"},{\"added\":\"1604578\",\"field_name\":\"regressed_by\",\"removed\":\"\"},{\"added\":\"1600879\",\"removed\":\"\",\"field_name\":\"blocks\"},{\"added\":\"Firefox Build System\",\"field_name\":\"product\",\"removed\":\"Testing\"}]},{\"who\":\"fstrugariu@mozilla.com\",\"changes\":[{\"added\":\"cmanchester@mozilla.com\",\"field_name\":\"cc\",\"removed\":\"\"},{\"added\":\"needinfo?(cmanchester@mozilla.com)\",\"removed\":\"\",\"field_name\":\"flagtypes.name\"}],\"when\":\"2019-12-20T11:28:37Z\"},{\"who\":\"chmanchester@gmail.com\",\"changes\":[{\"added\":\"1596182\",\"removed\":\"\",\"field_name\":\"depends_on\"},{\"added\":\"\",\"removed\":\"needinfo?(cmanchester@mozilla.com)\",\"field_name\":\"flagtypes.name\"}],\"when\":\"2019-12-20T17:13:15Z\"},{\"who\":\"chmanchester@gmail.com\",\"changes\":[{\"field_name\":\"status\",\"removed\":\"NEW\",\"added\":\"RESOLVED\"},{\"field_name\":\"resolution\",\"removed\":\"\",\"added\":\"FIXED\"},{\"added\":\"2020-01-03T18:51:37Z\",\"removed\":\"\",\"field_name\":\"cf_last_resolved\"}],\"when\":\"2020-01-03T18:51:37Z\"},{\"when\":\"2020-01-06T15:20:55Z\",\"changes\":[{\"removed\":\"nobody@mozilla.org\",\"field_name\":\"assigned_to\",\"added\":\"cmanchester@mozilla.com\"},{\"field_name\":\"target_milestone\",\"removed\":\"---\",\"added\":\"mozilla73\"},{\"added\":\"unaffected\",\"field_name\":\"cf_status_firefox_esr68\",\"removed\":\"---\"},{\"field_name\":\"cf_status_firefox71\",\"removed\":\"---\",\"added\":\"unaffected\"},{\"added\":\"unaffected\",\"removed\":\"---\",\"field_name\":\"cf_status_firefox72\"},{\"removed\":\"---\",\"field_name\":\"cf_status_firefox73\",\"added\":\"fixed\"}],\"who\":\"ryanvm@gmail.com\"}],\"id\":1605344}]}"
|
||||
},
|
||||
"headers": {
|
||||
"Access-Control-Allow-Origin": ["*"],
|
||||
"Access-control-allow-headers": [
|
||||
"accept, content-type, origin, user-agent, x-requested-with, x-phabricator-token, x-bugzilla-login, x-bugzilla-token, x-bugzilla-api-key, x-bugzilla-password"
|
||||
],
|
||||
"Connection": ["keep-alive"],
|
||||
"Content-Security-Policy-Report-Only": [
|
||||
"default-src 'self'; worker-src 'none'; connect-src 'self' https://product-details.mozilla.org https://www.google-analytics.com https://treeherder.mozilla.org/api/failurecount/ https://crash-stats.mozilla.org/api/SuperSearch/; font-src 'self' https://fonts.gstatic.com; img-src 'self' data: blob: https://secure.gravatar.com; object-src 'none'; script-src 'self' 'nonce-v2PcCYqcx3hPf31RMptfKwYnpyYDirYxs0WrgZRUr9buIorp' 'unsafe-inline' https://www.google-analytics.com; style-src 'self' 'unsafe-inline'; frame-src https://crash-stop-addon.herokuapp.com; frame-ancestors 'self'; form-action 'self' https://www.google.com/search https://github.com/login/oauth/authorize https://github.com/login"
|
||||
],
|
||||
"Content-Type": ["application/json; charset=UTF-8"],
|
||||
"Date": ["Thu, 04 Jun 2020 09:21:35 GMT"],
|
||||
"ETag": ["lFMJzgLH2ozUL48Ip3BNOA"],
|
||||
"Referrer-policy": ["same-origin"],
|
||||
"Set-Cookie": [
|
||||
"github_secret=MOFfdorDoGZ9ZZm9o7A7zPDDaB6kniqWQR6ANMyuK46R6km6Ej2FZOOzaczUGITh5TgPXC1r6AhLfWDR9kQHKlyiWbcnTixDwTnMBRiLWgbbfFwTctfKFP60zwQtMqzDtI16Svn8ctq6jXr7PWnH8f8C2Qq3lAhm5XPg1tL8uBUWo271hKOEcNNoMZKSB8XNeDNqfTzvv1wGn6hJGUCKifN0NmvdwOkAnAwThQoYp4i3waagz86oX1xku6Ab6qY6; path=/; secure; HttpOnly; SameSite=Lax"
|
||||
],
|
||||
"Status": ["200"],
|
||||
"Strict-Transport-Security": ["max-age=31536000; includeSubDomains"],
|
||||
"Vary": ["Accept-Encoding"],
|
||||
"X-content-type-options": ["nosniff"],
|
||||
"X-frame-options": ["SAMEORIGIN"],
|
||||
"X-xss-protection": ["1; mode=block"],
|
||||
"transfer-encoding": ["chunked"]
|
||||
},
|
||||
"status": {
|
||||
"code": 200,
|
||||
"message": "OK"
|
||||
},
|
||||
"url": "https://bugzilla.mozilla.org/rest/bug/1605344/history"
|
||||
}
|
||||
},
|
||||
{
|
||||
"recorded_at": "2020-06-02T00:00:06",
|
||||
"request": {
|
||||
"body": {
|
||||
"encoding": "utf-8",
|
||||
"string": ""
|
||||
},
|
||||
"headers": {
|
||||
"Accept": ["application/json"],
|
||||
"Cookie": [
|
||||
"Bugzilla_login_request_cookie=aB15wokxpC; github_secret=MOFfdorDoGZ9ZZm9o7A7zPDDaB6kniqWQR6ANMyuK46R6km6Ej2FZOOzaczUGITh5TgPXC1r6AhLfWDR9kQHKlyiWbcnTixDwTnMBRiLWgbbfFwTctfKFP60zwQtMqzDtI16Svn8ctq6jXr7PWnH8f8C2Qq3lAhm5XPg1tL8uBUWo271hKOEcNNoMZKSB8XNeDNqfTzvv1wGn6hJGUCKifN0NmvdwOkAnAwThQoYp4i3waagz86oX1xku6Ab6qY6"
|
||||
],
|
||||
"User-Agent": ["treeherder/backend"]
|
||||
},
|
||||
"method": "GET",
|
||||
"uri": "https://bugzilla.mozilla.org/rest/bug/1625980/history"
|
||||
},
|
||||
"response": {
|
||||
"body": {
|
||||
"encoding": "UTF-8",
|
||||
"string": "{\"bugs\":[{\"alias\":null,\"history\":[{\"who\":\"fstrugariu@mozilla.com\",\"changes\":[{\"added\":\"Toolchains\",\"field_name\":\"component\",\"removed\":\"Performance\"},{\"added\":\"unspecified\",\"field_name\":\"version\",\"removed\":\"Version 3\"},{\"field_name\":\"product\",\"added\":\"Firefox Build System\",\"removed\":\"Testing\"}],\"when\":\"2020-03-30T15:10:03Z\"},{\"when\":\"2020-03-30T15:26:27Z\",\"changes\":[{\"removed\":\"\",\"field_name\":\"cc\",\"added\":\"padenot@mozilla.com\"}],\"who\":\"padenot@mozilla.com\"},{\"who\":\"rstewart@mozilla.com\",\"changes\":[{\"removed\":\"--\",\"added\":\"P5\",\"field_name\":\"priority\"},{\"added\":\"rstewart@mozilla.com\",\"field_name\":\"cc\",\"removed\":\"\"}],\"when\":\"2020-03-31T15:13:32Z\"},{\"changes\":[{\"removed\":\"\",\"added\":\"tspurway@mozilla.com\",\"field_name\":\"cc\"},{\"removed\":\"affected\",\"added\":\"fix-optional\",\"field_name\":\"cf_status_firefox76\"}],\"who\":\"tspurway@mozilla.com\",\"when\":\"2020-04-06T13:10:48Z\"},{\"changes\":[{\"removed\":\"\",\"added\":\"needinfo?(fstrugariu@mozilla.com)\",\"field_name\":\"flagtypes.name\"}],\"who\":\"ryanvm@gmail.com\",\"when\":\"2020-04-22T02:52:05Z\"},{\"when\":\"2020-04-22T07:36:27Z\",\"changes\":[{\"removed\":\"needinfo?(fstrugariu@mozilla.com)\",\"added\":\"\",\"field_name\":\"flagtypes.name\"}],\"who\":\"fstrugariu@mozilla.com\"},{\"changes\":[{\"removed\":\"NEW\",\"added\":\"RESOLVED\",\"field_name\":\"status\"},{\"field_name\":\"resolution\",\"added\":\"FIXED\",\"removed\":\"\"},{\"added\":\"2020-04-22T07:36:46Z\",\"field_name\":\"cf_last_resolved\",\"removed\":\"\"}],\"who\":\"fstrugariu@mozilla.com\",\"when\":\"2020-04-22T07:36:46Z\"},{\"when\":\"2020-04-22T12:59:40Z\",\"who\":\"ryanvm@gmail.com\",\"changes\":[{\"field_name\":\"assigned_to\",\"added\":\"dmajor@mozilla.com\",\"removed\":\"nobody@mozilla.org\"},{\"removed\":\"\",\"field_name\":\"depends_on\",\"added\":\"1630661\"},{\"field_name\":\"target_milestone\",\"added\":\"mozilla77\",\"removed\":\"---\"},{\"removed\":\"---\",\"added\":\"unaffected\",\"field_name\":\"cf_status_firefox_esr68\"},{\"removed\":\"---\",\"added\":\"unaffected\",\"field_name\":\"cf_status_firefox75\"},{\"added\":\"fixed\",\"field_name\":\"cf_status_firefox76\",\"removed\":\"fix-optional\"},{\"added\":\"fixed\",\"field_name\":\"cf_status_firefox77\",\"removed\":\"---\"}]}],\"id\":1625980}]}"
|
||||
},
|
||||
"headers": {
|
||||
"Access-Control-Allow-Origin": ["*"],
|
||||
"Access-control-allow-headers": [
|
||||
"accept, content-type, origin, user-agent, x-requested-with, x-bugzilla-password, x-bugzilla-token, x-phabricator-token, x-bugzilla-api-key, x-bugzilla-login"
|
||||
],
|
||||
"Connection": ["keep-alive"],
|
||||
"Content-Security-Policy-Report-Only": [
|
||||
"default-src 'self'; worker-src 'none'; connect-src 'self' https://product-details.mozilla.org https://www.google-analytics.com https://treeherder.mozilla.org/api/failurecount/ https://crash-stats.mozilla.org/api/SuperSearch/; font-src 'self' https://fonts.gstatic.com; img-src 'self' data: blob: https://secure.gravatar.com; object-src 'none'; script-src 'self' 'nonce-7rg5k6dQqn4dsVnfYa19V7TaSne4jWhwhakZzQhKyF7aFpfG' 'unsafe-inline' https://www.google-analytics.com; style-src 'self' 'unsafe-inline'; frame-src https://crash-stop-addon.herokuapp.com; frame-ancestors 'self'; form-action 'self' https://www.google.com/search https://github.com/login/oauth/authorize https://github.com/login"
|
||||
],
|
||||
"Content-Type": ["application/json; charset=UTF-8"],
|
||||
"Date": ["Thu, 04 Jun 2020 09:21:35 GMT"],
|
||||
"ETag": ["ekKayj0awLY2RGXGuZRFpA"],
|
||||
"Referrer-policy": ["same-origin"],
|
||||
"Set-Cookie": [
|
||||
"github_secret=MOFfdorDoGZ9ZZm9o7A7zPDDaB6kniqWQR6ANMyuK46R6km6Ej2FZOOzaczUGITh5TgPXC1r6AhLfWDR9kQHKlyiWbcnTixDwTnMBRiLWgbbfFwTctfKFP60zwQtMqzDtI16Svn8ctq6jXr7PWnH8f8C2Qq3lAhm5XPg1tL8uBUWo271hKOEcNNoMZKSB8XNeDNqfTzvv1wGn6hJGUCKifN0NmvdwOkAnAwThQoYp4i3waagz86oX1xku6Ab6qY6; path=/; secure; HttpOnly; SameSite=Lax"
|
||||
],
|
||||
"Status": ["200"],
|
||||
"Strict-Transport-Security": ["max-age=31536000; includeSubDomains"],
|
||||
"Vary": ["Accept-Encoding"],
|
||||
"X-content-type-options": ["nosniff"],
|
||||
"X-frame-options": ["SAMEORIGIN"],
|
||||
"X-xss-protection": ["1; mode=block"],
|
||||
"transfer-encoding": ["chunked"]
|
||||
},
|
||||
"status": {
|
||||
"code": 200,
|
||||
"message": "OK"
|
||||
},
|
||||
"url": "https://bugzilla.mozilla.org/rest/bug/1625980/history"
|
||||
}
|
||||
},
|
||||
{
|
||||
"recorded_at": "2020-06-02T00:00:07",
|
||||
"request": {
|
||||
"body": {
|
||||
"encoding": "utf-8",
|
||||
"string": ""
|
||||
},
|
||||
"headers": {
|
||||
"Accept": ["application/json"],
|
||||
"Cookie": [
|
||||
"Bugzilla_login_request_cookie=aB15wokxpC; github_secret=MOFfdorDoGZ9ZZm9o7A7zPDDaB6kniqWQR6ANMyuK46R6km6Ej2FZOOzaczUGITh5TgPXC1r6AhLfWDR9kQHKlyiWbcnTixDwTnMBRiLWgbbfFwTctfKFP60zwQtMqzDtI16Svn8ctq6jXr7PWnH8f8C2Qq3lAhm5XPg1tL8uBUWo271hKOEcNNoMZKSB8XNeDNqfTzvv1wGn6hJGUCKifN0NmvdwOkAnAwThQoYp4i3waagz86oX1xku6Ab6qY6"
|
||||
],
|
||||
"User-Agent": ["treeherder/backend"]
|
||||
},
|
||||
"method": "GET",
|
||||
"uri": "https://bugzilla.mozilla.org/rest/bug/1638265/history"
|
||||
},
|
||||
"response": {
|
||||
"body": {
|
||||
"encoding": "UTF-8",
|
||||
"string": "{\"bugs\":[{\"id\":1638265,\"history\":[{\"who\":\"fstrugariu@mozilla.com\",\"changes\":[{\"added\":\"unspecified\",\"field_name\":\"version\",\"removed\":\"Version 3\"},{\"removed\":\"Performance\",\"field_name\":\"component\",\"added\":\"Toolchains\"},{\"added\":\"dmajor@mozilla.com\",\"field_name\":\"cc\",\"removed\":\"\"},{\"field_name\":\"flagtypes.name\",\"removed\":\"\",\"added\":\"needinfo?(dmajor@mozilla.com)\"},{\"field_name\":\"product\",\"removed\":\"Testing\",\"added\":\"Firefox Build System\"}],\"when\":\"2020-05-15T09:22:49Z\"},{\"changes\":[{\"field_name\":\"flagtypes.name\",\"removed\":\"needinfo?(dmajor@mozilla.com)\",\"added\":\"needinfo?(fstrugariu@mozilla.com)\"}],\"who\":\"dmajor@mozilla.com\",\"when\":\"2020-05-15T11:12:14Z\"},{\"when\":\"2020-05-15T12:20:58Z\",\"changes\":[{\"added\":\"unaffected\",\"field_name\":\"cf_status_firefox76\",\"removed\":\"---\"},{\"added\":\"unaffected\",\"removed\":\"---\",\"field_name\":\"cf_status_firefox77\"}],\"who\":\"release-mgmt-account-bot@mozilla.tld\"},{\"when\":\"2020-05-15T15:05:36Z\",\"changes\":[{\"added\":\"https://bugzilla.mozilla.org/show_bug.cgi?id=1638303\",\"removed\":\"\",\"field_name\":\"see_also\"}],\"who\":\"jcristau@mozilla.com\"},{\"when\":\"2020-05-16T15:17:14Z\",\"changes\":[{\"field_name\":\"cc\",\"removed\":\"\",\"added\":\"mayankleoboy1@gmail.com\"}],\"who\":\"mayankleoboy1@gmail.com\"},{\"changes\":[{\"added\":\"\",\"field_name\":\"flagtypes.name\",\"removed\":\"needinfo?(fstrugariu@mozilla.com)\"}],\"who\":\"fstrugariu@mozilla.com\",\"when\":\"2020-05-18T08:39:34Z\"},{\"when\":\"2020-05-20T11:33:04Z\",\"who\":\"jcristau@mozilla.com\",\"changes\":[{\"field_name\":\"cc\",\"removed\":\"\",\"added\":\"jcristau@mozilla.com\"},{\"added\":\"disabled\",\"removed\":\"affected\",\"field_name\":\"cf_status_firefox78\"}]}],\"alias\":null}]}"
|
||||
},
|
||||
"headers": {
|
||||
"Access-Control-Allow-Origin": ["*"],
|
||||
"Access-control-allow-headers": [
|
||||
"accept, content-type, origin, user-agent, x-requested-with, x-bugzilla-api-key, x-phabricator-token, x-bugzilla-token, x-bugzilla-password, x-bugzilla-login"
|
||||
],
|
||||
"Connection": ["keep-alive"],
|
||||
"Content-Length": ["1611"],
|
||||
"Content-Security-Policy-Report-Only": [
|
||||
"default-src 'self'; worker-src 'none'; connect-src 'self' https://product-details.mozilla.org https://www.google-analytics.com https://treeherder.mozilla.org/api/failurecount/ https://crash-stats.mozilla.org/api/SuperSearch/; font-src 'self' https://fonts.gstatic.com; img-src 'self' data: blob: https://secure.gravatar.com; object-src 'none'; script-src 'self' 'nonce-LrQBPJf1z87SmHQIwHNZ1U8gvXQdbv9ZGQqK5tM5E2KmWSGj' 'unsafe-inline' https://www.google-analytics.com; style-src 'self' 'unsafe-inline'; frame-src https://crash-stop-addon.herokuapp.com; frame-ancestors 'self'; form-action 'self' https://www.google.com/search https://github.com/login/oauth/authorize https://github.com/login"
|
||||
],
|
||||
"Content-Type": ["application/json; charset=UTF-8"],
|
||||
"Date": ["Thu, 04 Jun 2020 09:21:36 GMT"],
|
||||
"ETag": ["RK8Xzxwo6JXL5H3il8zR1g"],
|
||||
"Referrer-policy": ["same-origin"],
|
||||
"Set-Cookie": [
|
||||
"github_secret=MOFfdorDoGZ9ZZm9o7A7zPDDaB6kniqWQR6ANMyuK46R6km6Ej2FZOOzaczUGITh5TgPXC1r6AhLfWDR9kQHKlyiWbcnTixDwTnMBRiLWgbbfFwTctfKFP60zwQtMqzDtI16Svn8ctq6jXr7PWnH8f8C2Qq3lAhm5XPg1tL8uBUWo271hKOEcNNoMZKSB8XNeDNqfTzvv1wGn6hJGUCKifN0NmvdwOkAnAwThQoYp4i3waagz86oX1xku6Ab6qY6; path=/; secure; HttpOnly; SameSite=Lax"
|
||||
],
|
||||
"Status": ["200"],
|
||||
"Strict-Transport-Security": ["max-age=31536000; includeSubDomains"],
|
||||
"Vary": ["Accept-Encoding"],
|
||||
"X-content-type-options": ["nosniff"],
|
||||
"X-frame-options": ["SAMEORIGIN"],
|
||||
"X-xss-protection": ["1; mode=block"]
|
||||
},
|
||||
"status": {
|
||||
"code": 200,
|
||||
"message": "OK"
|
||||
},
|
||||
"url": "https://bugzilla.mozilla.org/rest/bug/1638265/history"
|
||||
}
|
||||
}
|
||||
],
|
||||
"recorded_with": "betamax/0.8.1"
|
||||
}
|
|
@ -0,0 +1,162 @@
|
|||
{
|
||||
"http_interactions": [
|
||||
{
|
||||
"recorded_at": "2020-06-02T00:00:07",
|
||||
"request": {
|
||||
"body": {
|
||||
"encoding": "utf-8",
|
||||
"string": ""
|
||||
},
|
||||
"headers": {
|
||||
"Accept": ["application/json"],
|
||||
"User-Agent": ["treeherder/backend"]
|
||||
},
|
||||
"method": "GET",
|
||||
"uri": "https://bugzilla.mozilla.org/rest/bug?longdesc=talos%2Ctp5n+nonmain_startup_fileio&longdesc_type=allwordssubstr&longdesc_initial=1&keywords=perf%2Cperf-alert&keywords_type=anywords&creation_time=2019-12-17T00%3A00%3A00Z&query_format=advanced&include_fields=id%2Ctype%2Cresolution%2Clast_change_time%2Cis_open%2Ccreation_time%2Csummary%2Cwhiteboard%2Cstatus%2Ckeywords"
|
||||
},
|
||||
"response": {
|
||||
"body": {
|
||||
"encoding": "UTF-8",
|
||||
"string": "{\"bugs\":[{\"resolution\":\"WONTFIX\",\"keywords\":[\"perf\",\"perf-alert\",\"regression\",\"talos-regression\"],\"status\":\"RESOLVED\",\"creation_time\":\"2020-01-23T10:05:52Z\",\"summary\":\"8.71 - 10.81% tp5n nonmain_startup_fileio (windows7-32-shippable) regression on push f2b46092eeb876758677e8ffa2043f358a2edb1c (Tue January 21 2020)\",\"id\":1611101,\"is_open\":false,\"whiteboard\":\"\",\"last_change_time\":\"2020-02-04T02:46:48Z\",\"type\":\"defect\"},{\"type\":\"defect\",\"whiteboard\":\"\",\"last_change_time\":\"2020-02-28T18:55:52Z\",\"summary\":\"5.15% tp5n nonmain_startup_fileio (windows7-32-shippable) regression on push 50c371b37a9fcd994a5866db73bd0d078e19f95d (Wed January 22 2020)\",\"id\":1611190,\"is_open\":false,\"keywords\":[\"perf\",\"perf-alert\",\"regression\",\"talos-regression\"],\"resolution\":\"WONTFIX\",\"status\":\"RESOLVED\",\"creation_time\":\"2020-01-23T16:23:57Z\"},{\"type\":\"defect\",\"whiteboard\":\"\",\"last_change_time\":\"2020-05-26T05:53:49Z\",\"summary\":\"149.99% tp5n nonmain_startup_fileio (windows7-32-shippable) regression on push 6c10970490f3cc19e644964f583be1a047c08b2c (Wed May 20 2020)\",\"id\":1639894,\"is_open\":false,\"keywords\":[\"perf\",\"perf-alert\",\"regression\",\"talos-regression\"],\"resolution\":\"INVALID\",\"creation_time\":\"2020-05-21T15:19:34Z\",\"status\":\"RESOLVED\"}]}"
|
||||
},
|
||||
"headers": {
|
||||
"Access-Control-Allow-Origin": ["*"],
|
||||
"Access-control-allow-headers": [
|
||||
"accept, content-type, origin, user-agent, x-requested-with, x-bugzilla-token, x-bugzilla-api-key, x-bugzilla-password, x-phabricator-token, x-bugzilla-login"
|
||||
],
|
||||
"Connection": ["keep-alive"],
|
||||
"Content-Security-Policy-Report-Only": [
|
||||
"default-src 'self'; worker-src 'none'; connect-src 'self' https://product-details.mozilla.org https://www.google-analytics.com https://treeherder.mozilla.org/api/failurecount/ https://crash-stats.mozilla.org/api/SuperSearch/; font-src 'self' https://fonts.gstatic.com; img-src 'self' data: blob: https://secure.gravatar.com; object-src 'none'; script-src 'self' 'nonce-RnTlauE8MbFVm9PmyK4JC6TiylLNDriUN1yCTtkukqryglSP' 'unsafe-inline' https://www.google-analytics.com; style-src 'self' 'unsafe-inline'; frame-src https://crash-stop-addon.herokuapp.com; frame-ancestors 'self'; form-action 'self' https://www.google.com/search https://github.com/login/oauth/authorize https://github.com/login"
|
||||
],
|
||||
"Content-Type": ["application/json; charset=UTF-8"],
|
||||
"Date": ["Thu, 04 Jun 2020 09:25:33 GMT"],
|
||||
"ETag": ["3ueA+v/2MuJPoEgQG4pdwQ"],
|
||||
"Referrer-policy": ["same-origin"],
|
||||
"Set-Cookie": [
|
||||
"Bugzilla_login_request_cookie=smq8lHZ9je; path=/; secure; HttpOnly; SameSite=Lax",
|
||||
"github_secret=w0Uv1hjmIh4THsgWc0u7VDfqWm7CcpUpLqiCWGTF03FiB0RMJvT6kCIBi7aogdszaHFNO2vNMUFzXaVAoijSyOv6kOJP8rrmvSfGhQ9Vkw1lphEMH7DkJn7N7L8EIyaRwl9FeFuRrMVraHfvqaroMQ9bHMnCVewbedOxwxZPxRMi2YvRgCXiCndZAFiWjXFV3qMf3hSbCcRnwYnweDfKEjERNsR40srZ6QvD5YiRkgMNvLWeWr84GaIGDrWlqBDX; path=/; secure; HttpOnly; SameSite=Lax"
|
||||
],
|
||||
"Status": ["200"],
|
||||
"Strict-Transport-Security": ["max-age=31536000; includeSubDomains"],
|
||||
"Vary": ["Accept-Encoding"],
|
||||
"X-content-type-options": ["nosniff"],
|
||||
"X-frame-options": ["SAMEORIGIN"],
|
||||
"X-xss-protection": ["1; mode=block"],
|
||||
"transfer-encoding": ["chunked"]
|
||||
},
|
||||
"status": {
|
||||
"code": 200,
|
||||
"message": "OK"
|
||||
},
|
||||
"url": "https://bugzilla.mozilla.org/rest/bug?longdesc=talos%2Ctp5n+nonmain_startup_fileio&longdesc_type=allwordssubstr&longdesc_initial=1&keywords=perf%2Cperf-alert&keywords_type=anywords&creation_time=2019-12-17T00%3A00%3A00Z&query_format=advanced&include_fields=id%2Ctype%2Cresolution%2Clast_change_time%2Cis_open%2Ccreation_time%2Csummary%2Cwhiteboard%2Cstatus%2Ckeywords"
|
||||
}
|
||||
},
|
||||
{
|
||||
"recorded_at": "2020-06-02T00:00:07",
|
||||
"request": {
|
||||
"body": {
|
||||
"encoding": "utf-8",
|
||||
"string": ""
|
||||
},
|
||||
"headers": {
|
||||
"Accept": ["application/json"],
|
||||
"Cookie": [
|
||||
"Bugzilla_login_request_cookie=smq8lHZ9je; github_secret=w0Uv1hjmIh4THsgWc0u7VDfqWm7CcpUpLqiCWGTF03FiB0RMJvT6kCIBi7aogdszaHFNO2vNMUFzXaVAoijSyOv6kOJP8rrmvSfGhQ9Vkw1lphEMH7DkJn7N7L8EIyaRwl9FeFuRrMVraHfvqaroMQ9bHMnCVewbedOxwxZPxRMi2YvRgCXiCndZAFiWjXFV3qMf3hSbCcRnwYnweDfKEjERNsR40srZ6QvD5YiRkgMNvLWeWr84GaIGDrWlqBDX"
|
||||
],
|
||||
"User-Agent": ["treeherder/backend"]
|
||||
},
|
||||
"method": "GET",
|
||||
"uri": "https://bugzilla.mozilla.org/rest/bug/1611101/history"
|
||||
},
|
||||
"response": {
|
||||
"body": {
|
||||
"encoding": "UTF-8",
|
||||
"string": "{\"bugs\":[{\"id\":1611101,\"alias\":null,\"history\":[{\"when\":\"2020-01-23T10:09:05Z\",\"who\":\"marian.raiciof@softvision.ro\",\"changes\":[{\"field_name\":\"cc\",\"added\":\"jrediger@mozilla.com\",\"removed\":\"\"},{\"removed\":\"Performance\",\"added\":\"Telemetry\",\"field_name\":\"component\"},{\"added\":\"unspecified\",\"field_name\":\"version\",\"removed\":\"Version 3\"},{\"removed\":\"\",\"field_name\":\"regressed_by\",\"added\":\"1610282\"},{\"removed\":\"\",\"added\":\"1607747\",\"field_name\":\"blocks\"},{\"added\":\"Toolkit\",\"field_name\":\"product\",\"removed\":\"Testing\"},{\"added\":\"mozilla74\",\"field_name\":\"target_milestone\",\"removed\":\"---\"},{\"added\":\"needinfo?(jrediger@mozilla.com)\",\"field_name\":\"flagtypes.name\",\"removed\":\"\"},{\"added\":\"unaffected\",\"field_name\":\"cf_status_firefox_esr68\",\"removed\":\"---\"},{\"removed\":\"---\",\"added\":\"unaffected\",\"field_name\":\"cf_status_firefox72\"},{\"field_name\":\"cf_status_firefox73\",\"added\":\"unaffected\",\"removed\":\"---\"},{\"field_name\":\"cf_status_firefox74\",\"added\":\"affected\",\"removed\":\"---\"}]},{\"who\":\"jrediger@mozilla.com\",\"changes\":[{\"added\":\"\",\"field_name\":\"flagtypes.name\",\"removed\":\"needinfo?(jrediger@mozilla.com)\"}],\"when\":\"2020-01-23T15:48:19Z\"},{\"changes\":[{\"added\":\"RESOLVED\",\"field_name\":\"status\",\"removed\":\"NEW\"},{\"removed\":\"\",\"added\":\"WONTFIX\",\"field_name\":\"resolution\"},{\"removed\":\"\",\"field_name\":\"flagtypes.name\",\"added\":\"needinfo?(jrediger@mozilla.com)\"},{\"removed\":\"\",\"added\":\"2020-01-27T16:02:06Z\",\"field_name\":\"cf_last_resolved\"}],\"who\":\"marian.raiciof@softvision.ro\",\"when\":\"2020-01-27T16:02:06Z\"},{\"when\":\"2020-01-27T16:02:35Z\",\"changes\":[{\"added\":\"\",\"field_name\":\"resolution\",\"removed\":\"WONTFIX\"},{\"field_name\":\"status\",\"added\":\"REOPENED\",\"removed\":\"RESOLVED\"}],\"who\":\"marian.raiciof@softvision.ro\"},{\"when\":\"2020-01-29T08:23:26Z\",\"changes\":[{\"removed\":\"needinfo?(jrediger@mozilla.com)\",\"added\":\"\",\"field_name\":\"flagtypes.name\"}],\"who\":\"jrediger@mozilla.com\"},{\"when\":\"2020-01-29T09:10:01Z\",\"who\":\"marian.raiciof@softvision.ro\",\"changes\":[{\"removed\":\"REOPENED\",\"added\":\"RESOLVED\",\"field_name\":\"status\"},{\"field_name\":\"resolution\",\"added\":\"WONTFIX\",\"removed\":\"\"},{\"added\":\"2020-01-29T09:10:01Z\",\"field_name\":\"cf_last_resolved\",\"removed\":\"2020-01-27T16:02:06Z\"}]},{\"who\":\"ryanvm@gmail.com\",\"changes\":[{\"field_name\":\"cf_status_firefox74\",\"added\":\"wontfix\",\"removed\":\"affected\"}],\"when\":\"2020-02-04T02:46:48Z\"}]}]}"
|
||||
},
|
||||
"headers": {
|
||||
"Access-Control-Allow-Origin": ["*"],
|
||||
"Access-control-allow-headers": [
|
||||
"accept, content-type, origin, user-agent, x-requested-with, x-bugzilla-token, x-phabricator-token, x-bugzilla-api-key, x-bugzilla-password, x-bugzilla-login"
|
||||
],
|
||||
"Connection": ["keep-alive"],
|
||||
"Content-Security-Policy-Report-Only": [
|
||||
"default-src 'self'; worker-src 'none'; connect-src 'self' https://product-details.mozilla.org https://www.google-analytics.com https://treeherder.mozilla.org/api/failurecount/ https://crash-stats.mozilla.org/api/SuperSearch/; font-src 'self' https://fonts.gstatic.com; img-src 'self' data: blob: https://secure.gravatar.com; object-src 'none'; script-src 'self' 'nonce-Nzdy7vn5vEqIPYDCpbraqOOh1wWQ5A2CNJssijaD0qHrcD2x' 'unsafe-inline' https://www.google-analytics.com; style-src 'self' 'unsafe-inline'; frame-src https://crash-stop-addon.herokuapp.com; frame-ancestors 'self'; form-action 'self' https://www.google.com/search https://github.com/login/oauth/authorize https://github.com/login"
|
||||
],
|
||||
"Content-Type": ["application/json; charset=UTF-8"],
|
||||
"Date": ["Thu, 04 Jun 2020 09:25:34 GMT"],
|
||||
"ETag": ["kR+OxsFJ97/Mw5tPdVAvzg"],
|
||||
"Referrer-policy": ["same-origin"],
|
||||
"Set-Cookie": [
|
||||
"github_secret=w0Uv1hjmIh4THsgWc0u7VDfqWm7CcpUpLqiCWGTF03FiB0RMJvT6kCIBi7aogdszaHFNO2vNMUFzXaVAoijSyOv6kOJP8rrmvSfGhQ9Vkw1lphEMH7DkJn7N7L8EIyaRwl9FeFuRrMVraHfvqaroMQ9bHMnCVewbedOxwxZPxRMi2YvRgCXiCndZAFiWjXFV3qMf3hSbCcRnwYnweDfKEjERNsR40srZ6QvD5YiRkgMNvLWeWr84GaIGDrWlqBDX; path=/; secure; HttpOnly; SameSite=Lax"
|
||||
],
|
||||
"Status": ["200"],
|
||||
"Strict-Transport-Security": ["max-age=31536000; includeSubDomains"],
|
||||
"Vary": ["Accept-Encoding"],
|
||||
"X-content-type-options": ["nosniff"],
|
||||
"X-frame-options": ["SAMEORIGIN"],
|
||||
"X-xss-protection": ["1; mode=block"],
|
||||
"transfer-encoding": ["chunked"]
|
||||
},
|
||||
"status": {
|
||||
"code": 200,
|
||||
"message": "OK"
|
||||
},
|
||||
"url": "https://bugzilla.mozilla.org/rest/bug/1611101/history"
|
||||
}
|
||||
},
|
||||
{
|
||||
"recorded_at": "2020-06-02T00:00:07",
|
||||
"request": {
|
||||
"body": {
|
||||
"encoding": "utf-8",
|
||||
"string": ""
|
||||
},
|
||||
"headers": {
|
||||
"Accept": ["application/json"],
|
||||
"Cookie": [
|
||||
"Bugzilla_login_request_cookie=smq8lHZ9je; github_secret=w0Uv1hjmIh4THsgWc0u7VDfqWm7CcpUpLqiCWGTF03FiB0RMJvT6kCIBi7aogdszaHFNO2vNMUFzXaVAoijSyOv6kOJP8rrmvSfGhQ9Vkw1lphEMH7DkJn7N7L8EIyaRwl9FeFuRrMVraHfvqaroMQ9bHMnCVewbedOxwxZPxRMi2YvRgCXiCndZAFiWjXFV3qMf3hSbCcRnwYnweDfKEjERNsR40srZ6QvD5YiRkgMNvLWeWr84GaIGDrWlqBDX"
|
||||
],
|
||||
"User-Agent": ["treeherder/backend"]
|
||||
},
|
||||
"method": "GET",
|
||||
"uri": "https://bugzilla.mozilla.org/rest/bug/1611190/history"
|
||||
},
|
||||
"response": {
|
||||
"body": {
|
||||
"encoding": "UTF-8",
|
||||
"string": "{\"bugs\":[{\"history\":[{\"who\":\"marian.raiciof@softvision.ro\",\"changes\":[{\"added\":\"1610300\",\"field_name\":\"regressed_by\",\"removed\":\"\"},{\"removed\":\"Performance\",\"field_name\":\"component\",\"added\":\"Telemetry\"},{\"removed\":\"Version 3\",\"field_name\":\"version\",\"added\":\"unspecified\"},{\"removed\":\"Testing\",\"field_name\":\"product\",\"added\":\"Toolkit\"},{\"removed\":\"\",\"added\":\"jrediger@mozilla.com\",\"field_name\":\"cc\"},{\"added\":\"1607747\",\"field_name\":\"blocks\",\"removed\":\"\"},{\"added\":\"mozilla74\",\"field_name\":\"target_milestone\",\"removed\":\"---\"},{\"added\":\"needinfo?(jrediger@mozilla.com)\",\"field_name\":\"flagtypes.name\",\"removed\":\"\"},{\"added\":\"unaffected\",\"field_name\":\"cf_status_firefox_esr68\",\"removed\":\"---\"},{\"removed\":\"---\",\"field_name\":\"cf_status_firefox72\",\"added\":\"unaffected\"},{\"removed\":\"---\",\"field_name\":\"cf_status_firefox73\",\"added\":\"unaffected\"},{\"field_name\":\"cf_status_firefox74\",\"added\":\"affected\",\"removed\":\"---\"}],\"when\":\"2020-01-23T16:37:10Z\"},{\"when\":\"2020-01-23T16:59:22Z\",\"changes\":[{\"added\":\"\",\"field_name\":\"flagtypes.name\",\"removed\":\"needinfo?(jrediger@mozilla.com)\"}],\"who\":\"jrediger@mozilla.com\"},{\"who\":\"chutten@mozilla.com\",\"changes\":[{\"added\":\"needinfo?(marian.raiciof@softvision.ro)\",\"field_name\":\"flagtypes.name\",\"removed\":\"\"},{\"removed\":\"\",\"added\":\"chutten@mozilla.com\",\"field_name\":\"cc\"}],\"when\":\"2020-02-04T21:56:54Z\"},{\"changes\":[{\"added\":\"WONTFIX\",\"field_name\":\"resolution\",\"removed\":\"\"},{\"added\":\"RESOLVED\",\"field_name\":\"status\",\"removed\":\"NEW\"},{\"removed\":\"needinfo?(marian.raiciof@softvision.ro)\",\"field_name\":\"flagtypes.name\",\"added\":\"\"},{\"removed\":\"\",\"added\":\"2020-02-05T11:55:44Z\",\"field_name\":\"cf_last_resolved\"}],\"who\":\"marian.raiciof@softvision.ro\",\"when\":\"2020-02-05T11:55:44Z\"},{\"when\":\"2020-02-28T18:55:52Z\",\"changes\":[{\"added\":\"wontfix\",\"field_name\":\"cf_status_firefox74\",\"removed\":\"affected\"}],\"who\":\"ryanvm@gmail.com\"}],\"alias\":null,\"id\":1611190}]}"
|
||||
},
|
||||
"headers": {
|
||||
"Access-Control-Allow-Origin": ["*"],
|
||||
"Access-control-allow-headers": [
|
||||
"accept, content-type, origin, user-agent, x-requested-with, x-bugzilla-login, x-bugzilla-password, x-bugzilla-token, x-phabricator-token, x-bugzilla-api-key"
|
||||
],
|
||||
"Connection": ["keep-alive"],
|
||||
"Content-Length": ["1876"],
|
||||
"Content-Security-Policy-Report-Only": [
|
||||
"default-src 'self'; worker-src 'none'; connect-src 'self' https://product-details.mozilla.org https://www.google-analytics.com https://treeherder.mozilla.org/api/failurecount/ https://crash-stats.mozilla.org/api/SuperSearch/; font-src 'self' https://fonts.gstatic.com; img-src 'self' data: blob: https://secure.gravatar.com; object-src 'none'; script-src 'self' 'nonce-soiMunJGl5DmkJgprRqRHvikJuxmHmXSV8g8fvKZXBmOJt1Q' 'unsafe-inline' https://www.google-analytics.com; style-src 'self' 'unsafe-inline'; frame-src https://crash-stop-addon.herokuapp.com; frame-ancestors 'self'; form-action 'self' https://www.google.com/search https://github.com/login/oauth/authorize https://github.com/login"
|
||||
],
|
||||
"Content-Type": ["application/json; charset=UTF-8"],
|
||||
"Date": ["Thu, 04 Jun 2020 09:25:34 GMT"],
|
||||
"ETag": ["cQX7b6zlUtLMeY8oaUN4Nw"],
|
||||
"Referrer-policy": ["same-origin"],
|
||||
"Set-Cookie": [
|
||||
"github_secret=w0Uv1hjmIh4THsgWc0u7VDfqWm7CcpUpLqiCWGTF03FiB0RMJvT6kCIBi7aogdszaHFNO2vNMUFzXaVAoijSyOv6kOJP8rrmvSfGhQ9Vkw1lphEMH7DkJn7N7L8EIyaRwl9FeFuRrMVraHfvqaroMQ9bHMnCVewbedOxwxZPxRMi2YvRgCXiCndZAFiWjXFV3qMf3hSbCcRnwYnweDfKEjERNsR40srZ6QvD5YiRkgMNvLWeWr84GaIGDrWlqBDX; path=/; secure; HttpOnly; SameSite=Lax"
|
||||
],
|
||||
"Status": ["200"],
|
||||
"Strict-Transport-Security": ["max-age=31536000; includeSubDomains"],
|
||||
"Vary": ["Accept-Encoding"],
|
||||
"X-content-type-options": ["nosniff"],
|
||||
"X-frame-options": ["SAMEORIGIN"],
|
||||
"X-xss-protection": ["1; mode=block"]
|
||||
},
|
||||
"status": {
|
||||
"code": 200,
|
||||
"message": "OK"
|
||||
},
|
||||
"url": "https://bugzilla.mozilla.org/rest/bug/1611190/history"
|
||||
}
|
||||
}
|
||||
],
|
||||
"recorded_with": "betamax/0.8.1"
|
||||
}
|
|
@ -416,6 +416,7 @@ WHITENOISE_KEEP_ONLY_HASHED_FILES = True
|
|||
BZ_API_URL = "https://bugzilla.mozilla.org"
|
||||
BUGFILER_API_URL = env("BUGZILLA_API_URL", default=BZ_API_URL)
|
||||
BUGFILER_API_KEY = env("BUG_FILER_API_KEY", default=None)
|
||||
BZ_DATETIME_FORMAT = '%Y-%m-%dT%H:%M:%SZ'
|
||||
|
||||
# For intermittents commenter
|
||||
COMMENTER_API_KEY = env("BUG_COMMENTER_API_KEY", default=None)
|
||||
|
@ -433,6 +434,9 @@ PERFHERDER_REGRESSION_THRESHOLD = 2
|
|||
PERFHERDER_ALERTS_MIN_BACK_WINDOW = 12
|
||||
PERFHERDER_ALERTS_MAX_BACK_WINDOW = 24
|
||||
PERFHERDER_ALERTS_FORE_WINDOW = 12
|
||||
# Assess if tests should be (non)sheriffed
|
||||
QUANTIFYING_PERIOD = timedelta(weeks=24) # how far back to look over Bugzilla data
|
||||
BUG_COOLDOWN_TIME = timedelta(weeks=2) # time after bug is ready for assessment
|
||||
|
||||
# Only generate alerts for data newer than this time in seconds in perfherder
|
||||
PERFHERDER_ALERTS_MAX_AGE = timedelta(weeks=2)
|
||||
|
|
|
@ -12,3 +12,11 @@ class MissingRecords(Exception):
|
|||
|
||||
class CannotBackfill(Exception):
|
||||
pass
|
||||
|
||||
|
||||
class NoFiledBugs(Exception):
|
||||
pass
|
||||
|
||||
|
||||
class BugzillaEndpointError(RuntimeError):
|
||||
pass
|
||||
|
|
|
@ -0,0 +1,181 @@
|
|||
from copy import deepcopy
|
||||
from typing import List, Tuple
|
||||
|
||||
import requests
|
||||
from django.conf import settings
|
||||
from requests import Session
|
||||
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
from treeherder.config.settings import BZ_DATETIME_FORMAT
|
||||
from treeherder.perf.exceptions import NoFiledBugs, BugzillaEndpointError
|
||||
|
||||
PERF_SHERIFFING_CRITERIA = (
|
||||
'https://docs.google.com/document/d/11WPIPFeq-i1IAVOQhBR-SzIMOPSqBVjLepgOWCrz_S4'
|
||||
)
|
||||
ENGINEER_TRACTION_SPECIFICATION = f'{PERF_SHERIFFING_CRITERIA}#heading=h.8th4thm4twvx'
|
||||
|
||||
|
||||
class NonBlockableSession(Session):
|
||||
def __init__(self, referer=None):
|
||||
super().__init__()
|
||||
referer = referer or PERF_SHERIFFING_CRITERIA
|
||||
|
||||
# Use a custom HTTP adapter, so we can set a non-zero max_retries value.
|
||||
self.mount("https://", requests.adapters.HTTPAdapter(max_retries=3))
|
||||
|
||||
# Add `Referer` & `User-Agent` header, so Bugzilla OPS
|
||||
# will be more likely to contact us before blocking our
|
||||
# IP when making many queries with this
|
||||
self.headers = {
|
||||
'Referer': f'{referer}',
|
||||
'User-Agent': 'treeherder/{}'.format(settings.SITE_HOSTNAME),
|
||||
'Accept': 'application/json',
|
||||
}
|
||||
|
||||
|
||||
class EngineerTractionFormula:
|
||||
def __init__(
|
||||
self,
|
||||
session: NonBlockableSession = None,
|
||||
quantifying_period: timedelta = None,
|
||||
bug_cooldown: timedelta = None,
|
||||
):
|
||||
self._session = session or NonBlockableSession(referer=f'{ENGINEER_TRACTION_SPECIFICATION}')
|
||||
self._quant_period = quantifying_period or settings.QUANTIFYING_PERIOD
|
||||
self._bug_cooldown = bug_cooldown or settings.BUG_COOLDOWN_TIME
|
||||
self._bugzilla_url = settings.BZ_API_URL
|
||||
|
||||
if not isinstance(self._session, NonBlockableSession):
|
||||
raise ValueError(
|
||||
'Engineer traction formula should only query using an non blockable HTTP session'
|
||||
) # otherwise Bugzilla OPS will block us by IP
|
||||
|
||||
# for breakdown
|
||||
self.__all_filed_bugs = None
|
||||
self.__except_new_bugs = None
|
||||
|
||||
@property
|
||||
def quantifying_period(self):
|
||||
return self._quant_period
|
||||
|
||||
@property
|
||||
def oldest_timestamp(self):
|
||||
return datetime.now() - self._quant_period
|
||||
|
||||
def __call__(self, framework: str, suite: str, test: str = None) -> float:
|
||||
self._reset_breakdown()
|
||||
if None in (framework, suite):
|
||||
raise TypeError
|
||||
|
||||
all_filed_bugs = self._fetch_cooled_down_bugs(framework, suite, test)
|
||||
except_new_bugs = self._filter_tracted_bugs(all_filed_bugs)
|
||||
|
||||
if len(all_filed_bugs) == 0:
|
||||
raise NoFiledBugs()
|
||||
|
||||
result = len(except_new_bugs) / len(all_filed_bugs)
|
||||
|
||||
# cache the breakdown
|
||||
self.__all_filed_bugs = all_filed_bugs
|
||||
self.__except_new_bugs = except_new_bugs
|
||||
|
||||
return result
|
||||
|
||||
def breakdown(self) -> Tuple[list, list]:
|
||||
breakdown_items = (self.__all_filed_bugs, self.__except_new_bugs)
|
||||
if not all(breakdown_items):
|
||||
raise RuntimeError('Cannot breakdown results without running calculus first')
|
||||
|
||||
return tuple(deepcopy(item) for item in breakdown_items)
|
||||
|
||||
def has_cooled_down(self, bug: dict) -> bool:
|
||||
try:
|
||||
creation_time = self._get_datetime(bug['creation_time'])
|
||||
except (KeyError, ValueError) as ex:
|
||||
raise ValueError('Bug has unexpected JSON body') from ex
|
||||
else:
|
||||
return creation_time <= datetime.now() - self._bug_cooldown
|
||||
|
||||
def _fetch_cooled_down_bugs(self, framework, suite, test):
|
||||
quantified_bugs = self._fetch_quantified_bugs(framework, suite, test)
|
||||
cooled_bugs = self._filter_cooled_down_bugs(quantified_bugs)
|
||||
return cooled_bugs
|
||||
|
||||
def _filter_tracted_bugs(self, cooled_bugs: List[dict]) -> List[dict]:
|
||||
tracted_bugs = []
|
||||
for bug in cooled_bugs:
|
||||
bug_history = self._fetch_history(bug['id'])
|
||||
up_to_date = (
|
||||
datetime.strptime(bug['creation_time'], BZ_DATETIME_FORMAT) + self._bug_cooldown
|
||||
)
|
||||
if self._notice_any_status_change_in(bug_history, up_to_date):
|
||||
tracted_bugs.append(bug)
|
||||
|
||||
return tracted_bugs
|
||||
|
||||
def _fetch_quantified_bugs(self, framework: str, suite: str, test: str = None) -> List[dict]:
|
||||
test_moniker = ' '.join(filter(None, (suite, test)))
|
||||
test_id_fragments = filter(None, [framework, test_moniker])
|
||||
creation_time = datetime.strftime(self.oldest_timestamp, BZ_DATETIME_FORMAT)
|
||||
|
||||
params = {
|
||||
'longdesc': ','.join(test_id_fragments),
|
||||
'longdesc_type': 'allwordssubstr',
|
||||
'longdesc_initial': 1,
|
||||
'keywords': 'perf,perf-alert',
|
||||
'keywords_type': 'anywords',
|
||||
'creation_time': creation_time,
|
||||
'query_format': 'advanced',
|
||||
'include_fields': 'id,type,resolution,last_change_time,is_open,creation_time,summary,whiteboard,status,keywords',
|
||||
}
|
||||
|
||||
try:
|
||||
bugs_resp = self._session.get(
|
||||
f'{self._bugzilla_url}/rest/bug',
|
||||
headers={'Accept': 'application/json'},
|
||||
params=params,
|
||||
timeout=90, # query is demanding; give it a bit more patience
|
||||
)
|
||||
except Exception as ex:
|
||||
raise BugzillaEndpointError from ex
|
||||
else:
|
||||
return bugs_resp.json()['bugs']
|
||||
|
||||
def _filter_cooled_down_bugs(self, bugs: list) -> List[dict]:
|
||||
return [bug for bug in bugs if self.has_cooled_down(bug)]
|
||||
|
||||
def _fetch_history(self, bug_id: int) -> list:
|
||||
try:
|
||||
history_resp = self._session.get(
|
||||
f'{self._bugzilla_url}/rest/bug/{bug_id}/history',
|
||||
headers={'Accept': 'application/json'},
|
||||
timeout=60,
|
||||
)
|
||||
except Exception as ex:
|
||||
raise BugzillaEndpointError from ex
|
||||
else:
|
||||
body = history_resp.json()
|
||||
return body['bugs'][0]['history']
|
||||
|
||||
def _notice_any_status_change_in(self, bug_history: List[dict], up_to: datetime) -> bool:
|
||||
def during_interval(change: dict) -> bool:
|
||||
when = datetime.strptime(change['when'], BZ_DATETIME_FORMAT)
|
||||
return when <= up_to
|
||||
|
||||
# filter changes that occurred during bug cool down
|
||||
relevant_changes = [change for change in bug_history if during_interval(change)]
|
||||
|
||||
# return on any changes WRT 'status' or 'resolution'
|
||||
for compound_change in relevant_changes:
|
||||
for change in compound_change['changes']:
|
||||
if change['field_name'] in {'status', 'resolution'}:
|
||||
return True
|
||||
return False
|
||||
|
||||
def _reset_breakdown(self):
|
||||
self.__all_filed_bugs = None
|
||||
self.__except_new_bugs = None
|
||||
|
||||
def _get_datetime(self, datetime_: str) -> datetime:
|
||||
return datetime.strptime(datetime_, BZ_DATETIME_FORMAT)
|
Загрузка…
Ссылка в новой задаче