from jenkinsJob import modifyJOb if __name__=="__main__": tests=[] for i in range(12): tests.append('test_'+str(i)+'.py') jobMod=modifyJOb() jobMod.indexObj.setVals(0,4) # while(jobMod.addTests('125', tests)): # print "added tests" for jobs in jobMod.addTests('125',tests,4): print jobs
def execOnJenkins(self, env, testSpecifierString, mailto, reRunFailedTests=True, retryCount=1, report=True, execOnOneZone=True, postOnPr=False, testMgr=None, avoidZones=None): try: env['hypervisor'] = '' if avoidZones is None: avoidZones=[] if testMgr is None: testMgr = testManager(testSpecifierString, env['virtenvPath']) jobModifier = modifyJOb() modifiedjob = '' j = Jenkins('http://jenkins-ccp.citrix.com', 'bharatk', 'BharatK') tests = testMgr.getTests() if tests == None: raise Exception('found no tests to run') while tests is not None: os.chdir(env['virtenvPath']) self.logger.info('launching jenkins TestExecutor Job') cscfg = configGenerator.getSetupConfig(env['config_file']) for zone in cscfg.zones: if zone.name in avoidZones: continue for pod in zone.pods: for cluster in pod.clusters: for modifiedjob in jobModifier.addTests(env['build_number'], tests, self.throttle_job_count): file = open('/root/cloud-autodeploy2/newcode/' + modifiedjob, 'r') config = file.read() file.close() bash('rm -f /root/cloud-autodeploy2/newcode/%s' % modifiedjob) if not j.job_exists(modifiedjob): j.create_job(modifiedjob, config) else: j.delete_job(modifiedjob) j.create_job(modifiedjob, config) j.build_job(modifiedjob, {'BASEDIR': env['virtenvPath'], 'MGMT_SVR': env['hostip'], 'buildNumber': env['build_number'], 'zoneName': zone.name, 'hypervisor': cluster.hypervisor.lower(), 'zoneType': zone.networktype, 'configFileName': env['config_file'], 'token': 'bharat'}) self.waitForJobComplete(env['virtenvPath'], [zone.name]) env['hypervisor'] = '%s,%s' % (env['hypervisor'], cluster.hypervisor.lower()) break break if execOnOneZone: break tests = testMgr.getTests() j.delete_job(modifiedjob) reportAnalyserMap=self.getReportAnalysers(cscfg, env, execOnOneZone) if(reRunFailedTests): while retryCount > 0: self.logger.info("checking if we need to re run any of the tests") testsToReRun=[] for key in reportAnalyserMap.keys(): tests=reportAnalyserMap[key].suitsToRerun if(tests is None): avoidZones.append(key) else: testMgr.addTestsToReRun(tests) retryCount-=1 self.logger.info("zone name:%s The follwoing tests will be re run %s"%(key,tests)) if(len(testsToReRun)==0): break else: self.execOnJenkins(env, testSpecifierString, mailto, reRunFailedTests, retryCount, False, execOnOneZone, postOnPr, testMgr, avoidZones) if report and postOnPr: for key in reportAnalyserMap.keys(): self.reportOnPr(reportAnalyserMap[key].generateTextReport2(), env) elif report: self.reportUsingJenkinsEmailPlugin(cscfg, env) return env except Exception as e: self.logger.exception(e)
def execOnJenkins(self,env,testSpecifierString,mailto,execOnOneZone=True): try: testMgr=testManager(testSpecifierString,env['virtenvPath']) jobModifier=modifyJOb() modifiedjob="" j=Jenkins('http://jenkins-ccp.citrix.com','bharatk','BharatK') tests=testMgr.getTests() if(tests==None): raise Exception("found no tests to run") while(not tests is None): #trigger a jenkins job. os.chdir(env['virtenvPath']) self.logger.info("launching jenkins TestExecutor Job") #createing testexecutorjobs for each zone. cscfg=configGenerator.getSetupConfig(env['config_file']) jobIdentifierList=[] for zone in cscfg.zones: for pod in zone.pods: for cluster in pod.clusters: modifiedjob=jobModifier.addTests(env['build_number'],tests) file=open("/root/cloud-autodeploy2/newcode/"+modifiedjob,'r') config=file.read() file.close() bash("rm -f /root/cloud-autodeploy2/newcode/%s"%modifiedjob) if(not j.job_exists(modifiedjob)): j.create_job(modifiedjob,config) else: j.reconfig_job(modifiedjob,config) j.build_job(modifiedjob, {'BASEDIR':env['virtenvPath'], 'MGMT_SVR' : env['hostip'],'buildNumber':env['build_number'],'zoneName':zone.name,'hypervisor':cluster.hypervisor.lower(),'zoneType':zone.networktype,'configFileName':env['config_file'],'token':'bharat'}) jobIdentifierList.append(zone.name) break break if (execOnOneZone): break self.waitForJobComplete(env['virtenvPath'],jobIdentifierList) tests=testMgr.getTests() j.delete_job(modifiedjob) jobIdentifierList=[] bugLoggerData=[] time.sleep(30) for zone in cscfg.zones: self.logger.info(zone.name) for pod in zone.pods: for cluster in pod.clusters: self.logger.info("creating a jeknins job to generate results and email notfication for hypervisor %s and zone %s"%(cluster.hypervisor, zone.name)) modifiedjob=jobModifier.modifyReportGenerator(env['build_number']+"_"+zone.name+"_"+cluster.hypervisor, mailto) jobname=modifiedjob file=open("/root/cloud-autodeploy2/newcode/"+modifiedjob,'r') config=file.read() file.close() j.create_job(modifiedjob,config) j.build_job(modifiedjob, {'buildNumber':env['build_number'],'BuildNo':env['build_number'], 'MGMT_SVR' : env['hostip'], 'BASEDIR':env['virtenvPath'], 'version':env['version'], 'BranchInfo':env['version'],\ 'GitRepoUrl':env['repo_url'],'GitCommitId':env['commit_id'], 'CIRunStartDateTime':env['startTime'],'CIRunEndDateTime':time.strftime("%c"), 'WikiLinks':'https://cwiki.apache.org/confluence/display/CLOUDSTACK/Infrastructure%2CCI%2CSimulator%2CAutomation+Changes','hypervisor':cluster.hypervisor.lower(), 'HyperVisorInfo':cluster.hypervisor.lower(), 'zoneName':zone.name, 'BuildReport':"http://jenkins-ccp.citrix.com/job/"+jobname+"/1/testReport/",'token':'bharat'}) jobIdentifierList.append("report_"+zone.name) jobDetails={"job_name":modifiedjob,"related_data_path":env['virtenvPath']} self.resourceMgr.addJobDetails(jobDetails) bugLoggerData.append({'hypervisor':cluster.hypervisor.lower(), 'branch':env['version'],'logname':cluster.hypervisor.lower()+'__Log_'+env['build_number'], 'type':'BVT'}) self.logger.info("bug logger data in zone looop %s"%bugLoggerData) break break if (execOnOneZone): #env['hypervisor':cluster.hypervisor.lower()] break self.logger.info("job identifier list", jobIdentifierList) self.waitForJobComplete(env['virtenvPath'],jobIdentifierList) #self.logger.info("deleting the reporter job on jenkins job_name=%s",jobname) #j.delete_job(jobname) self.logger.info("cleaning up the workspace") bash("rm -f /root/cloud-autodeploy2/newcode/%s"%modifiedjob) self.logger.info("running bug logger") #self.runBugLogger(bugLoggerData) #os.system("rm -rf %s"%(self.jenkinsWorkspace+"/"+jobname)) except Exception, e: self.logger.error(e)