in treeherder/intermittents_commenter/commenter.py [0:0]
def build_bug_map(self, bugs, option_collection_map):
"""Build bug_map
eg:
{
"1206327": {
"total": 5,
"per_repository": {
"fx-team": 2,
"autoland": 3
},
"test_variants": {'no-variant', 'swr', ...},
"data_table": {
"windows10-64/ccov": {
"mochitest-browser-chrome": 0,
"mochitest-browser-chrome-swr": 2,
},
"windows10-64/debug": {
"mochitest-browser-chrome-swr": 2,
},
"osx-10-10/debug": {
"mochitest-browser-chrome": 2,
"mochitest-browser-chrome-swr": 0,
},
},
},
}
"""
bug_map = {}
bug_ids = [b["bug__bugzilla_id"] for b in bugs]
bug_summaries = Bugscache.objects.filter(bugzilla_id__in=bug_ids).values(
"summary", "bugzilla_id"
)
all_variants = set()
for bug, bug_id in zip(bugs, bug_ids):
manifest = self.get_test_manifest(bug_summaries.filter(bugzilla_id=bug_id))
bug_testrun_matrix = []
if manifest:
testrun_matrix = (
fetch.fetch_testrun_matrix()
if self.testrun_matrix is None
else self.testrun_matrix
)
self.testrun_matrix = testrun_matrix
bug_testrun_matrix = testrun_matrix[manifest]
bug_run_info = self.get_bug_run_info(bug)
all_variants = bug_run_info.variants
if bug_testrun_matrix and bug_run_info.os_name in bug_testrun_matrix:
testrun_os_matrix = bug_testrun_matrix[bug_run_info.os_name]
all_variants |= self.get_all_test_variants(bug_run_info, testrun_os_matrix)
repo = bug["job__repository__name"]
test_variant = bug_run_info.current_variant
if bug_run_info.arch:
platform_and_build = (
f"{bug_run_info.platform}-{bug_run_info.arch}/{bug_run_info.build_type}"
)
else:
platform_and_build = f"{bug_run_info.platform}/{bug_run_info.build_type}"
if bug_id not in bug_map:
bug_infos = BugsDetails()
bug_infos.total = 1
bug_infos.test_variants |= all_variants
bug_infos.per_repositories[repo] = 1
bug_infos.data_table[platform_and_build] = {test_variant: 1}
bug_map[bug_id] = bug_infos
else:
bug_infos = bug_map[bug_id]
bug_infos.total += 1
bug_infos.test_variants |= all_variants
bug_infos.per_repositories.setdefault(repo, 0)
bug_infos.per_repositories[repo] += 1
# data_table
data_table = bug_infos.data_table
platform_and_build_data = data_table.get(platform_and_build, {})
data_table[platform_and_build] = platform_and_build_data
data_table[platform_and_build][test_variant] = (
platform_and_build_data.get(test_variant, 0) + 1
)
return bug_map