예제 #1
0
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],
예제 #2
0
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)
예제 #3
0
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"
예제 #5
0
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)
예제 #6
0
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