예제 #1
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)
예제 #2
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)