Bug 1642554 - Implement model for engineer traction formula

This commit is contained in:
ionutgoldan 2020-06-12 11:27:57 +03:00 коммит произвёл GitHub
Родитель ca79f78542
Коммит 2fbe6d3260
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
18 изменённых файлов: 4207 добавлений и 6 удалений

3
.gitignore поставляемый
Просмотреть файл

@ -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
tests/perf/__init__.py Normal file
Просмотреть файл

Просмотреть файл

@ -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)