def main(): orderDepGerrits = [] # gerrits in dependency order global depGerritList global depStatus global server curDir = os.getcwd() minCRs = 3 parser = argparse.ArgumentParser(description='dependencyOrder script') parser.add_argument('-g','--gerrits',action='store',dest='gerrits',nargs='+', help='<Required> gerrits',required=True) parser.add_argument('-s','--server',action='store',dest='server', help='gerrit server',required=False) parser.add_argument('-c','--mincrs',action='store',dest='mincrs', help='Minimum CRs to consider good',required=False) parser.add_argument('-f','--file',action='store',dest='gerritListFile',help='gerrits',required=False) results = parser.parse_args() if results.server: server = results.server if results.mincrs: minCRs = results.mincrs if results.gerrits: gerritlist = results.gerrits else: gerritListFile = results.gerritListFile gerritlist = readGerritListFile(gerritListFile) for gerrit in gerritlist: depStatus = 0 if gerrit in depGerritList: continue if gerrit in orderDepGerrits: continue gerritInfo = Gerrit(gerrit.decode("utf-8"), server) getListOfDependencies(gerritInfo, minCRs) if depStatus == -1: depGerritList = [] else: orderDepGerrits = orderDepGerrits + depGerritList depGerritList = [] # write depGerritList to file fo = open(os.path.join(curDir,'Input_gerritlist.txt'), "w+") fo.seek(0, 2) # write at the end of the file for n in reversed(range(len(list(set(orderDepGerrits))))): gerritInfo = Gerrit(orderDepGerrits[n].decode("utf-8"), server) extGerrit = gerritInfo.externalDependsOn() print orderDepGerrits[n], extGerrit fo.writelines(('%s\n') % (orderDepGerrits[n])) fo.close() print "dependency gerrits:", for n in reversed(range(len(list(set(orderDepGerrits))))): print orderDepGerrits[n],
def main(): server = 'review-android.quicinc.com' hasError = False latest = False parser = argparse.ArgumentParser(description='gEmptyFileCheck script') parser.add_argument('-g','--gerrits',action='store',dest='gerrits',nargs='+', help='<Required> gerrits',required=True) parser.add_argument('-l','--latest', action='store_true', help='check just latest patchset',required=False) parser.add_argument('-s','--server',action='store',dest='server', help='gerrit server',required=False) results = parser.parse_args() if results.gerrits: gerritlist = results.gerrits if results.latest: latest = True if results.server: server = results.server for gerritID in gerritlist: gerritError = False print "\nFilelist Check Gerrit %s: " % gerritID gerrit = Gerrit(gerritID.decode("utf-8"), server) createdOn = gerrit.createdOn() if latest: lastupdate = gerrit.lastUpdated() if len(gerrit.filePath()) == 0: print "[%s] ERROR: no files associated" % lastupdate hasError = True else: for m in xrange(len(gerrit.gerritInfo['patchSets'])): if len(gerrit.gerritInfo['patchSets'][m]['files']) == 1: createdOn = time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(gerrit.gerritInfo['patchSets'][m]['createdOn'])) print " patchSets %s [%s] ERROR: no files associated" % (m, createdOn) hasError = True gerritError = True # break if not gerritError: print " [%s] OK" % createdOn if hasError: sys.exit(-1)
def processGerrits(project, branch, target, mincrs, test): # # return verfiedGerrits, exludedGerrits # verifiedGerrits = [] excludedGerrits = [] print "\n" print "project :%s" % project print "branch :%s" % branch print "target :%s" % target print "min crs :%s" % mincrs print "test req:%s" % test gerritList = getOpenGerrits(project, branch, target) for gerritNum in gerritList: gerritNum = gerritNum.strip() gerrit = Gerrit(gerritNum) if gerrit.isGood(mincrs) == 'Approved': continue if not gerrit.ciStatuses() == None: cimsg = ' '.join(gerrit.ciStatuses()) print "Processing gerrit:%s " % gerritNum if gerrit.isGood(mincrs) and (gerrit.ciStatuses() == None or 'Queued at position' in cimsg or 'Change is being verified' in cimsg or 'is not enabled for BAIT automation' in cimsg): # if --test supplied, check for test result if test: comment = gerrit.commentsSearch(r'TEST STATUS:.*\d+|TEST RESULT') if comment: verifiedGerrits.append(gerritNum) else: excludedGerrits.append(gerritNum) continue else: verifiedGerrits.append(gerritNum) else: excludedGerrits.append(gerritNum) if excludedGerrits: print "\nExcluded gerrits: " for exg in excludedGerrits: print exg, if verifiedGerrits: print "\n\nCandidate gerrits: " for gerritNum in verifiedGerrits: print gerritNum, return (verifiedGerrits, excludedGerrits)
def main(): parser = argparse.ArgumentParser(description='Gerrit Table script') parser.add_argument('-g','--gerrits',action='store',dest='gerrits',nargs='+', help='<Required> gerrits',required=True) results = parser.parse_args() if results.gerrits: gerritlist = results.gerrits index = 0 print ' '.join(gerritlist) print table, for gerritID in gerritlist: index = index + 1 gerrit = Gerrit(gerritID.decode("utf-8")) comment = gerrit.commentsSearch(r'TEST STATUS:.*\d+|TEST RESULT') if not comment: hasTestResult = "No" else: hasTestResult = "Yes" ownerName = gerrit.ownerName() url = gerrit.url() subject = gerrit.subject() project = gerrit.project() if not (gerrit.CRs() == None): crs = "http://prism/CR/" + gerrit.CRs() else: crs = "Not Provided" createdOn = gerrit.createdOn() lastUpdated = gerrit.lastUpdated() print "|-" print "| %d||%s||%s||%s||%s||%s||||%s||%s||%s||||" % (index, ownerName, url, crs, subject, hasTestResult, project, createdOn, lastUpdated) print "|-" print "|" print "|}\n"
def main(): curDir = os.getcwd() project = None branch = None gerrit = None verifiedGerrits = [] excludedGerrits = [] projects = [] target = 'msm8916' mincrs = 2 testRequired = True config = SafeConfigParser() parser = argparse.ArgumentParser(description='Get open gerrits') parser.add_argument('-p','--project', action='store', dest='project', help='project', required=False) parser.add_argument('-b','--branch', action='store', dest='branch', help='branch', required=False) parser.add_argument('-t','--target', action='store', dest='target', help='target (msm8974|apq804)', required=False) parser.add_argument('-g','--gerrit', action='store',dest='gerrit', help='gerrit',required=False) parser.add_argument('-m','--mincrs', action='store',dest='mincrs', help='minimum crs',required=False) parser.add_argument('--test', action='store_true', help='needed test result') parser.add_argument('-c','--config', action='store',dest='config', help='config file to read',required=False) results = parser.parse_args() if results.project: project = results.project if results.branch: branch = results.branch if results.target: target = results.target if results.mincrs: mincrs = results.mincrs if results.test: testRequired = True if results.config: configFile = results.config readConfig(config, configFile) project = config.get('default', 'project') mincrs = config.get('default', 'mincrs') target = config.get('default', 'target') branch = config.get('default', 'branch') testRequired = config.get('default', 'test') # process just one given gerrit. for debugging purpose of particular gerrit when needed if results.gerrit: gerritNum = results.gerrit gerrit = Gerrit(gerritNum) if not gerrit.ciStatuses() == None: cimsg = ' '.join(gerrit.ciStatuses()) if gerrit.isGood(mincrs) and (gerrit.ciStatuses() == None or 'Queued at position' in cimsg or 'Change is being verified' in cimsg or 'is not enabled for BAIT automation' in cimsg): verifiedGerrits.append(gerritNum) print "Processed gerrit:%s " % gerritNum sys.exit(0) else: print "Excluded gerrits: %s" % gerritNum sys.exit(-1) # process all projects if results.config: for project, branch in config.items('projects'): verifiedGerrits, excludedGerrits = processGerrits(project, branch, target, mincrs, testRequired) sys.exit(0) if project and branch and target: verifiedGerrits, excludedGerrits = processGerrits(project, branch, target, mincrs, testRequired)
def getGerritTable(gerrits_list): global status ci_msg = "" crsLink = "" tableProperties = r"table.tftable {font-size:12px; font-family: Arial Narrow, Arial, sans-serif; color:#333333;width:100%;border-width: 1px;border-color: #729ea5;border-collapse: collapse;} table.tftable th {font-size:12px;background-color: steelblue;color: white;font-weight: bold; border-width: 1px;padding: 8px;border-style: solid;border-color: #729ea5;text-align:left;} table.tftable tr {background-color:#ffffff;} table.tftable td {font-size:12px;border-width: 1px;padding: 8px;border-style: solid;border-color: #729ea5;}" table_items = "<tr><th>SR No</th><th>Gerrit ID</th><th>CR</th><th>Owner</th><th>Commit Message</th><th>Test Result</th><th>lnxbuild</th><th>kwuser</th><th>gator</th><th>checkpatch</th><th>devci-cnss-wlan</th><th>lostadm</th><th>Change-Id</th><th>CI Status</tr>" iCount = 1 for gerrit in gerrits_list: lnxbuild = None kwuser = None gator = None checkpatch = None devci_cnss_wlan = None lostadm = None ci_status = None ci_msg = None crs = [] test_msg = "" print "processing", gerrit gerritinfo = Gerrit(gerrit) # check and skip if gerrit does not exist if "rowCount" in gerritinfo.gerritInfo: print "%s does not exist!" % gerrit continue currPatchSetNum = gerritinfo.currentPatchNum() lnxbuild = gerritinfo.lnxbuild() kwuser = gerritinfo.kwuser() gator = gerritinfo.gator() checkpatch = gerritinfo.checkpatch() devci_cnss_wlan = gerritinfo.devci_cnss_wlan() lostadm = gerritinfo.lostadm() changeIdMatch = gerritinfo.isIdMatch() crs = gerritinfo.CRs() ci_status = gerritinfo.ciStatuses() comment = gerritinfo.commentsSearch(r"TEST STATUS:.*\d+|TEST RESULT") # Set value < 0 to RED color if not lnxbuild == None: if int(lnxbuild) < 0: v = lnxbuild lnxbuild = '<span style="color:red">%s</span>' % v status = "FAIL" else: # mandatorily set to red if bit missing lnxbuild = '<span style="color:red">None</span>' if not kwuser == None: if int(kwuser) < 0: v = kwuser kwuser = '******' % v status = "FAIL" else: # mandatorily set to red if bit missing kwuser = '******' if not gator == None: if int(gator) < 0: v = gator gator = '<span style="color:red">%s</span>' % v status = "FAIL" if not checkpatch == None: if int(checkpatch) < 0: v = checkpatch checkpatch = '<span style="color:red">%s</span>' % v status = "FAIL" if not devci_cnss_wlan == None: if int(devci_cnss_wlan) < 0: v = devci_cnss_wlan devci_cnss_wlan = '<span style="color:red">%s</span>' % v status = "FAIL" if not lostadm == None: if int(lostadm) < 0: v = lostadm lostadm = '<span style="color:red">%s</span>' % v status = "FAIL" else: lostadm = "" if not changeIdMatch: changeIdMatch = '<span style="color:red">Not Match</span>' else: changeIdMatch = "" if not ci_status == None: ci_msg = "%s\n %s" % (ci_status[0], ci_status[1]) gerritLink = '<a href="' + gerritinfo.url() + '">' + gerrit + "</a>" if not (crs == None): crsLink = '<a href="http://prism/CR/' + crs + '">' + crs + "</a>" if comment: test_msg = comment["message"] i = test_msg.find("TEST RESULTS:") test_msg = "Yes" else: test_msg = "None" if comment: # get latest patchset with Test Result pn = re.search(r"Patch Set (\d+):", comment["message"]) # add warn message if latest patchset does not have Test Result if int(pn.group(1)) < int(currPatchSetNum): test_msg = ( test_msg + '<br><span style="color:red">WARNING: Latest patch set does not have Test Result</span>' ) table_items = ( table_items + "<tr><td>%d</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>" % ( iCount, gerritLink, crsLink, gerritinfo.ownerName(), gerritinfo.subject()[:40], test_msg, lnxbuild, kwuser, gator, checkpatch, devci_cnss_wlan, lostadm, changeIdMatch, ci_msg, ) ) iCount = iCount + 1 tableBody = """\ <style type="text/css"> %s </style> <table id="tfhover" class="tftable" border="1"> %s </table> """ % ( tableProperties, table_items, ) return tableBody