def get_bz_params(self, date): status = utils.get_flag(self.version, 'status', self.channel) self.tracking = utils.get_flag(self.version, 'tracking', self.channel) fields = ['assigned_to', 'flags', self.tracking] params = { 'include_fields': fields, 'resolution': '---', 'bug_status': ','.join(['UNCONFIRMED', 'NEW', 'ASSIGNED', 'REOPENED']), 'f1': self.tracking, 'o1': 'anywords', 'v1': ','.join(['+', '?', 'blocking']), 'f2': 'flagtypes.name', 'o2': 'equals', 'v2': 'needinfo?', 'f3': status, 'o3': 'equals', 'v3': 'affected', 'f4': self.tracking, 'o4': 'changedbefore', 'v4': '-1d', 'n5': 1, 'f5': self.tracking, 'o5': 'changedafter', 'v5': '-1d', } return params
def get_bz_params(self, date): esr_version = self.versions["esr"] value = ",".join(["---", "affected"]) params = { "resolution": [ "---", "FIXED", "INVALID", "WONTFIX", "DUPLICATE", "WORKSFORME", "INCOMPLETE", "SUPPORT", "EXPIRED", "MOVED", ], "priority": ["P3", "P4", "P5"], "f1": utils.get_flag(esr_version, "tracking", "esr"), "o1": "anyexact", "v1": ",".join(["+", "blocking"]), "f2": utils.get_flag(esr_version, "status", "esr"), "o2": "anyexact", "v2": value, } return params
def get_bz_params(self, date): status = utils.get_flag(self.version, 'status', self.channel) self.tracking = utils.get_flag(self.version, 'tracking', self.channel) fields = ['assigned_to', 'flags', self.tracking] params = { 'include_fields': fields, 'resolution': '---', 'bug_status': ','.join(['UNCONFIRMED', 'NEW', 'ASSIGNED', 'REOPENED']), 'f1': self.tracking, 'o1': 'anywords', 'v1': ','.join(['+', '?', 'blocking']), 'f2': 'flagtypes.name', 'o2': 'equals', 'v2': 'needinfo?', 'f3': status, 'o3': 'equals', 'v3': 'affected', 'f4': self.tracking, 'o4': 'changedbefore', 'v4': '-1d', 'n5': 1, 'f5': self.tracking, 'o5': 'changedafter', 'v5': '-1d', } return params
def get_bz_params(self, date): _, _, _, esr_version = getVersions() value = ','.join(['---', 'affected']) params = { 'resolution': [ '---', 'FIXED', 'INVALID', 'WONTFIX', 'DUPLICATE', 'WORKSFORME', 'INCOMPLETE', 'SUPPORT', 'EXPIRED', 'MOVED', ], 'priority': ['P3', 'P4', 'P5'], 'f1': utils.get_flag(esr_version, 'tracking', 'esr'), 'o1': 'anyexact', 'v1': ','.join(['+', 'blocking']), 'f2': utils.get_flag(esr_version, 'status', 'esr'), 'o2': 'anyexact', 'v2': value, } return params
def get_bz_params(self, date): status = utils.get_flag(self.version, "status", self.channel) self.tracking = utils.get_flag(self.version, "tracking", self.channel) fields = ["assigned_to", "flags", self.tracking] params = { "include_fields": fields, "resolution": "---", "bug_status": ",".join(["UNCONFIRMED", "NEW", "ASSIGNED", "REOPENED"]), "f1": self.tracking, "o1": "anywords", "v1": ",".join(["+", "?", "blocking"]), "f2": "flagtypes.name", "o2": "equals", "v2": "needinfo?", "f3": status, "o3": "equals", "v3": "affected", "f4": self.tracking, "o4": "changedbefore", "v4": "-1d", "n5": 1, "f5": self.tracking, "o5": "changedafter", "v5": "-1d", } return params
def get_bz_params(self, date): # TODO add support for ESR here? value = ",".join(["affected", "fixed"]) params = { "bug_severity": ["normal", "minor", "trivial", "enhancement"], "f1": "OP", "j1": "OR", "f2": "OP", "f3": utils.get_flag(self.versions["release"], "tracking", "release"), "o3": "equals", "v3": "blocking", "f4": self.status_release, "o4": "anyexact", "v4": value, "f5": "CP", "f6": "OP", "f7": utils.get_flag(self.versions["beta"], "tracking", "beta"), "o7": "equals", "v7": "blocking", "f8": utils.get_flag(self.versions["beta"], "status", "beta"), "o8": "anyexact", "v8": value, "f9": "CP", "f10": "OP", "f11": utils.get_flag(self.versions["central"], "tracking", "central"), "o11": "equals", "v11": "blocking", "f12": utils.get_flag(self.versions["central"], "status", "central"), "o12": "anyexact", "v12": value, "f13": "CP", "f14": "CP", } return params
def get_bz_params(self, date): status = utils.get_flag(self.version, 'status', self.channel) self.tracking = utils.get_flag(self.version, 'tracking', self.channel) fields = [self.tracking] params = { 'include_fields': fields, 'bug_id': ','.join(self.bug_ids), 'f1': status, 'o1': 'nowordssubstr', 'v1': ','.join( ['unaffected', 'fixed', 'verified', 'wontfix', 'disabled']), 'f2': self.tracking, 'o2': 'anywordssubstr', 'v2': ','.join(['+', 'blocking']), } return params
def get_bz_params(self, date): _, _, _, esr_version = getVersions() value = ','.join(['---', 'affected']) params = { 'resolution': [ '---', 'FIXED', 'INVALID', 'WONTFIX', 'DUPLICATE', 'WORKSFORME', 'INCOMPLETE', 'SUPPORT', 'EXPIRED', 'MOVED', ], 'priority': ['P3', 'P4', 'P5'], 'f1': utils.get_flag(esr_version, 'tracking', 'esr'), 'o1': 'anyexact', 'v1': ','.join(['+', 'blocking']), 'f2': utils.get_flag(esr_version, 'status', 'esr'), 'o2': 'anyexact', 'v2': value, } return params
def __init__(self): super(MissedUplifts, self).__init__() self.versions = utils.get_checked_versions() if not self.versions: return self.beta = self.versions['beta'] self.release = self.versions['release'] self.esr = self.versions['esr'] self.esr_str = 'esr' + str(self.esr) self.pending_release = utils.get_report_bugs('release', op='?') self.pending_beta = utils.get_report_bugs('beta', op='?') self.pending_esr = utils.get_report_bugs(self.esr_str, op='?') self.accepted_release = utils.get_report_bugs('release', op='+') self.accepted_beta = utils.get_report_bugs('beta', op='+') self.accepted_esr = utils.get_report_bugs(self.esr_str, op='+') self.status_central = utils.get_flag( self.versions['central'], 'status', 'central' ) self.status_beta = utils.get_flag(self.beta, 'status', 'beta') self.status_release = utils.get_flag(self.release, 'status', 'release') self.status_esr = utils.get_flag(self.esr, 'status', 'esr')
def __init__(self): super().__init__() self.init_versions() self.status_esr = utils.get_flag(self.versions["esr_previous"], "status", "esr") self.status_esr_next = utils.get_flag(self.versions["esr"], "status", "esr") self.status_changes = {}
def get_bz_params(self, date): status = utils.get_flag(self.version, "status", self.channel) self.tracking = utils.get_flag(self.version, "tracking", self.channel) tracking_value = ("+,blocking" if self.channel != "esr" else self.versions["beta"] + "+") fields = [self.tracking] params = { "include_fields": fields, "f1": self.tracking, "o1": "anywords", "v1": tracking_value, "f2": status, "o2": "nowordssubstr", "v2": ",".join( ["wontfix", "fixed", "disabled", "verified", "unaffected"]), "f3": self.tracking, "o3": "changedbefore", "v3": "-1d", "n4": 1, "f4": self.tracking, "o4": "changedafter", "v4": "-1d", } if self.channel == "central": tracking = utils.get_flag(self.versions["beta"], "tracking", "beta") params.update({ "f5": tracking, "o5": "nowordssubstr", "v5": "+,blocking" }) elif self.channel != "esr": approval = utils.get_flag(self.version, "approval", self.channel) params.update({ "f5": "flagtypes.name", "o5": "notsubstring", "v5": approval + "?" }) if self.untouched: params.update({"f6": "days_elapsed", "o6": "greaterthan", "v6": 3}) return params
def __init__(self): super().__init__() self.init_versions() self.status_esr = utils.get_flag(self.versions["esr_previous"], "status", "esr") self.status_esr_next = utils.get_flag(self.versions["esr"], "status", "esr") self.status_changes = {} self.component_exception = set( utils.get_config(self.name(), "component_exception"))
def __init__(self): super(NightlyReopened, self).__init__() self.versions = utils.get_checked_versions() if not self.versions: return self.nightly = utils.get_flag(self.versions['central'], 'status', 'nightly') self.beta = utils.get_flag(self.versions['beta'], 'status', 'beta') self.release = utils.get_flag(self.versions['release'], 'status', 'release') self.esr = utils.get_flag(self.versions['esr'], 'status', 'esr')
def __init__(self): super(UpliftBeta, self).__init__() if not self.init_versions(): return self.beta = self.versions["beta"] self.status_central = utils.get_flag(self.versions["central"], "status", "central") self.status_beta = utils.get_flag(self.beta, "status", "beta") self.extra_ni = {}
def __init__(self): super(NightlyReopened, self).__init__() if not self.init_versions(): return self.nightly = utils.get_flag(self.versions["central"], "status", "nightly") self.beta = utils.get_flag(self.versions["beta"], "status", "beta") self.release = utils.get_flag(self.versions["release"], "status", "release") self.esr = utils.get_flag(self.versions["esr"], "status", "esr")
def __init__(self): super(NightlyReopened, self).__init__() self.versions = utils.get_checked_versions() if not self.versions: return self.nightly = utils.get_flag(self.versions['central'], 'status', 'nightly') self.beta = utils.get_flag(self.versions['beta'], 'status', 'beta') self.release = utils.get_flag(self.versions['release'], 'status', 'release') self.esr = utils.get_flag(self.versions['esr'], 'status', 'esr')
def __init__(self): super(MissingBetaStatus, self).__init__() self.autofix_status = {} if not self.init_versions(): return self.status_central = utils.get_flag( self.versions["central"], "status", "nightly" ) self.status_beta = utils.get_flag(self.versions["beta"], "status", "beta") self.status_release = utils.get_flag( self.versions["release"], "status", "release" )
def __init__(self): super(NiFromManager, self).__init__() self.nweeks = utils.get_config(self.name(), "number_of_weeks", 1) self.vip = self.get_people().get_rm_or_directors() self.white_list = utils.get_config(self.name(), "white-list", []) self.black_list = utils.get_config(self.name(), "black-list", []) self.init_versions() self.status_flags = ( utils.get_flag(self.versions["central"], "status", "central"), utils.get_flag(self.versions["beta"], "status", "beta"), utils.get_flag(self.versions["release"], "status", "release"), utils.get_flag(self.versions["esr_previous"], "status", "esr"), utils.get_flag(self.versions["esr"], "status", "esr"), )
def get_bz_params(self, date): status = utils.get_flag(self.version, 'status', self.channel) self.tracking = utils.get_flag(self.version, 'tracking', self.channel) fields = [self.tracking] params = { 'include_fields': fields, 'bug_id': ','.join(self.bug_ids), 'f1': status, 'o1': 'nowordssubstr', 'v1': ','.join(['unaffected', 'fixed', 'verified', 'wontfix', 'disabled']), 'f2': self.tracking, 'o2': 'anywordssubstr', 'v2': ','.join(['+', 'blocking']), } return params
def get_bz_params(self, date): status = utils.get_flag(self.version, "status", self.channel) self.tracking = utils.get_flag(self.version, "tracking", self.channel) fields = [self.tracking] params = { "include_fields": fields, "bug_id": ",".join(self.bug_ids), "f1": status, "o1": "nowordssubstr", "v1": ",".join(["unaffected", "fixed", "verified", "wontfix", "disabled"]), "f2": self.tracking, "o2": "anywordssubstr", "v2": ",".join(["+", "blocking"]), } return params
def __init__(self): super(TrackedBadSeverity, self).__init__() if not self.init_versions(): return self.status_release = utils.get_flag( self.versions["release"], "status", "release" )
def get_bz_params(self, date): v = self.versions[self.channel] status = utils.get_flag(v, 'status', self.channel) self.tracking = utils.get_flag(v, 'tracking', self.channel) tracking_value = ('+,blocking' if self.channel != 'esr' else self.versions['beta'] + '+') fields = [self.tracking] params = { 'include_fields': fields, 'f1': self.tracking, 'o1': 'anywords', 'v1': tracking_value, 'f2': status, 'o2': 'nowordssubstr', 'v2': ','.join( ['wontfix', 'fixed', 'disabled', 'verified', 'unaffected']), } if self.channel == 'central': tracking = utils.get_flag(self.versions['beta'], 'tracking', 'beta') params.update({ 'f3': tracking, 'o3': 'nowordssubstr', 'v3': '+,blocking' }) elif self.channel != 'esr': approval = utils.get_flag(v, 'approval', self.channel) params.update({ 'f3': 'flagtypes.name', 'o3': 'notsubstring', 'v3': approval + '?' }) if self.untouched: params.update({'f4': 'days_elapsed', 'o4': 'greaterthan', 'v4': 3}) return params
def get_bz_params(self, date): status = utils.get_flag(self.version, 'status', self.channel) self.tracking = utils.get_flag(self.version, 'tracking', self.channel) fields = ['assigned_to', 'flags', self.tracking] params = { 'include_fields': fields, 'resolution': '---', 'bug_status': ','.join(['UNCONFIRMED', 'NEW', 'ASSIGNED', 'REOPENED']), 'f1': self.tracking, 'o1': 'anywords', 'v1': ','.join(['+', '?', 'blocking']), 'f2': 'flagtypes.name', 'o2': 'equals', 'v2': 'needinfo?', 'f3': status, 'o3': 'nowordssubstr', 'v3': ','.join(['wontfix', 'fixed', 'disabled', 'verified', 'unaffected']), } return params
def get_bz_params(self, date): # TODO add support for ESR here? value = ','.join(['affected', 'fixed']) params = { 'bug_severity': ['normal', 'minor', 'trivial', 'enhancement'], 'f1': 'OP', 'j1': 'OR', 'f2': 'OP', 'f3': utils.get_flag(self.versions['release'], 'tracking', 'release'), 'o3': 'equals', 'v3': 'blocking', 'f4': utils.get_flag(self.versions['release'], 'status', 'release'), 'o4': 'anyexact', 'v4': value, 'f5': 'CP', 'f6': 'OP', 'f7': utils.get_flag(self.versions['beta'], 'tracking', 'beta'), 'o7': 'equals', 'v7': 'blocking', 'f8': utils.get_flag(self.versions['beta'], 'status', 'beta'), 'o8': 'anyexact', 'v8': value, 'f9': 'CP', 'f10': 'OP', 'f11': utils.get_flag(self.versions['central'], 'tracking', 'central'), 'o11': 'equals', 'v11': 'blocking', 'f12': utils.get_flag(self.versions['central'], 'status', 'central'), 'o12': 'anyexact', 'v12': value, 'f13': 'CP', 'f14': 'CP', } return params
def get_bz_params(self, date): self.status_central = utils.get_flag(self.versions['central'], 'status', 'central') self.status_release = utils.get_flag(self.versions['release'], 'status', 'release') self.status_beta = utils.get_flag(self.versions['beta'], 'status', 'beta') fields = [self.status_central, self.status_release] params = { 'include_fields': fields, 'f1': self.status_beta, 'o1': 'equals', 'v1': '---', 'f2': self.status_release, 'o2': 'notequals', 'v2': '---', 'f3': self.status_central, 'o3': 'notequals', 'v3': '---', } return params
def get_bz_params(self, date): v = self.versions[self.channel] status = utils.get_flag(v, 'status', self.channel) self.tracking = utils.get_flag(v, 'tracking', self.channel) tracking_value = ( '+,blocking' if self.channel != 'esr' else self.versions['beta'] + '+' ) fields = [self.tracking] params = { 'include_fields': fields, 'f1': self.tracking, 'o1': 'anywords', 'v1': tracking_value, 'f2': status, 'o2': 'nowordssubstr', 'v2': ','.join(['wontfix', 'fixed', 'disabled', 'verified', 'unaffected']), 'f3': self.tracking, 'o3': 'changedbefore', 'v3': '-1d', 'n4': 1, 'f4': self.tracking, 'o4': 'changedafter', 'v4': '-1d', } if self.channel == 'central': tracking = utils.get_flag(self.versions['beta'], 'tracking', 'beta') params.update({'f5': tracking, 'o5': 'nowordssubstr', 'v5': '+,blocking'}) elif self.channel != 'esr': approval = utils.get_flag(v, 'approval', self.channel) params.update( {'f5': 'flagtypes.name', 'o5': 'notsubstring', 'v5': approval + '?'} ) if self.untouched: params.update({'f6': 'days_elapsed', 'o6': 'greaterthan', 'v6': 3}) return params
def test_get_bz_params(self): tool = TrackedBadSeverity() if not tool.has_enough_data(): # we've non-following versions in product-details # so cheat on versions. tool.versions = {"central": 1, "beta": 2, "release": 3} tool.status_release = utils.get_flag( tool.versions["release"], "status", "release" ) p = tool.get_bz_params(None) assert p["f1"] == "OP" assert "cf_tracking_firefox" in p["f3"] assert "enhancement" in p["bug_severity"]
def get_bz_params(self, date): self.status_central = utils.get_flag( self.versions['central'], 'status', 'central' ) self.status_release = utils.get_flag( self.versions['release'], 'status', 'release' ) self.status_beta = utils.get_flag(self.versions['beta'], 'status', 'beta') fields = [self.status_central, self.status_release] params = { 'include_fields': fields, 'f1': self.status_beta, 'o1': 'equals', 'v1': '---', 'f2': self.status_release, 'o2': 'notequals', 'v2': '---', 'f3': self.status_central, 'o3': 'notequals', 'v3': '---', } return params
def __init__(self): super(MissedUplifts, self).__init__() if not self.init_versions(): return self.beta = self.versions["beta"] self.release = self.versions["release"] self.esr = self.versions["esr"] self.esr_str = "esr" + str(self.esr) self.pending_release = utils.get_report_bugs("release", op="?") self.pending_beta = utils.get_report_bugs("beta", op="?") self.pending_esr = utils.get_report_bugs(self.esr_str, op="?") self.accepted_release = utils.get_report_bugs("release", op="+") self.accepted_beta = utils.get_report_bugs("beta", op="+") self.accepted_esr = utils.get_report_bugs(self.esr_str, op="+") self.status_central = utils.get_flag( self.versions["central"], "status", "central" ) self.status_beta = utils.get_flag(self.beta, "status", "beta") self.status_release = utils.get_flag(self.release, "status", "release") self.status_esr = utils.get_flag(self.esr, "status", "esr")
def __init__(self): super(MissedUplifts, self).__init__() self.versions = utils.get_checked_versions() if not self.versions: return self.beta = self.versions['beta'] self.release = self.versions['release'] self.esr = self.versions['esr'] self.esr_str = 'esr' + str(self.esr) self.pending_release = utils.get_report_bugs('release', op='?') self.pending_beta = utils.get_report_bugs('beta', op='?') self.pending_esr = utils.get_report_bugs(self.esr_str, op='?') self.accepted_release = utils.get_report_bugs('release', op='+') self.accepted_beta = utils.get_report_bugs('beta', op='+') self.accepted_esr = utils.get_report_bugs(self.esr_str, op='+') self.status_central = utils.get_flag(self.versions['central'], 'status', 'central') self.status_beta = utils.get_flag(self.beta, 'status', 'beta') self.status_release = utils.get_flag(self.release, 'status', 'release') self.status_esr = utils.get_flag(self.esr, 'status', 'esr')
def __init__(self): super(CodeFreezeWeek, self).__init__() self.versions = utils.get_checked_versions() if not self.versions: return self.people = People() self.nightly = self.versions['central'] self.beta = self.versions['beta'] self.release = self.versions['release'] self.status_nightly = utils.get_flag(self.nightly, 'status', 'central') self.status_beta = utils.get_flag(self.beta, 'status', 'beta') self.status_release = utils.get_flag(self.release, 'status', 'release') self.tracking_nightly = utils.get_flag(self.nightly, 'tracking', 'central') self.tracking_beta = utils.get_flag(self.beta, 'tracking', 'beta') self.tracking_release = utils.get_flag(self.release, 'tracking', 'release')
def __init__(self): super(CodeFreezeWeek, self).__init__() if not self.init_versions(): return self.people = People.get_instance() self.nightly = self.versions["central"] self.beta = self.versions["beta"] self.release = self.versions["release"] self.status_nightly = utils.get_flag(self.nightly, "status", "central") self.status_beta = utils.get_flag(self.beta, "status", "beta") self.status_release = utils.get_flag(self.release, "status", "release") self.tracking_nightly = utils.get_flag(self.nightly, "tracking", "central") self.tracking_beta = utils.get_flag(self.beta, "tracking", "beta") self.tracking_release = utils.get_flag(self.release, "tracking", "release")
def __init__(self): super(CodeFreezeWeek, self).__init__() self.versions = utils.get_checked_versions() if not self.versions: return self.people = People() self.nightly = self.versions['central'] self.beta = self.versions['beta'] self.release = self.versions['release'] self.status_nightly = utils.get_flag(self.nightly, 'status', 'central') self.status_beta = utils.get_flag(self.beta, 'status', 'beta') self.status_release = utils.get_flag(self.release, 'status', 'release') self.tracking_nightly = utils.get_flag(self.nightly, 'tracking', 'central') self.tracking_beta = utils.get_flag(self.beta, 'tracking', 'beta') self.tracking_release = utils.get_flag(self.release, 'tracking', 'release')
def get_status_changes(self, bugs): bugids = {info["regressed_by"] for info in bugs.values()} if not bugids: return {} data = self.get_flags_from_regressing_bugs(bugids) filtered_bugs = {} for bugid, info in bugs.items(): regressor = info["regressed_by"] assert regressor in data regression_versions = sorted( v for v in data[regressor] if v.startswith("cf_status_firefox") and data[regressor][v] in ("fixed", "verified")) if not regression_versions: # don't know what to do, ignore continue if regression_versions[0].startswith("cf_status_firefox_esr"): # shouldn't happen: esrXX sorts after YY continue regressed_version = int( regression_versions[0][len("cf_status_firefox"):]) fixed_versions = sorted( v for v in info if v.startswith("cf_status_firefox") and info[v] in ( "fixed", "verified")) if len(fixed_versions) > 0 and fixed_versions[0].startswith( "cf_status_firefox_esr"): # shouldn't happen: esrXX sorts after YY continue fixed_version = (int(fixed_versions[0][len("cf_status_firefox"):]) if len(fixed_versions) > 0 else None) self.status_changes[bugid] = {} for channel in ("release", "beta", "central"): v = int(self.versions[channel]) flag = utils.get_flag(v, "status", channel) info[channel] = info[flag] if info[flag] != "---": # XXX maybe check for consistency? continue if fixed_version is not None and v >= fixed_version: # Bug was fixed in an earlier version, don't set the flag continue if v >= regressed_version: self.status_changes[bugid][flag] = "affected" info[channel] = "affected" else: self.status_changes[bugid][flag] = "unaffected" info[channel] = "unaffected" filtered_bugs[bugid] = info esr_versions = set( [self.versions["esr"], self.versions["esr_previous"]]) for v in esr_versions: info.setdefault("esr", {}) flag = utils.get_flag(v, "status", "esr") info["esr"][f"esr{v}"] = info[flag] if info[flag] != "---": # XXX maybe check for consistency? continue if fixed_version is not None and int(v) >= fixed_version: # Bug was fixed in an earlier version, don't set the flag continue if data[regressor].get(flag) in ("fixed", "verified"): # regressor was uplifted, so the regression affects this branch self.status_changes[bugid][flag] = "affected" info["esr"][f"esr{v}"] = "affected" elif int(v) >= regressed_version: # regression from before this branch, also affected self.status_changes[bugid][flag] = "affected" info["esr"][f"esr{v}"] = "affected" else: self.status_changes[bugid][flag] = "unaffected" info["esr"][f"esr{v}"] = "unaffected" filtered_bugs[bugid] = info for bugid in filtered_bugs: regressor = bugs[bugid]["regressed_by"] self.status_changes[bugid]["comment"] = { "body": f"{self.description()} {regressor}", # if the regressing bug is private (security or otherwise # confidential), don't leak its number through our comment (the # regressed_by field is not public in that case) "is_private": bool(data[regressor].get("groups")), } return filtered_bugs