def _sendReport(self): # Generate Report from PsPSFReporter import childTask psfReporter = childTask("PSFReporter", self.priority + 1) psfReporter.addPara("PSFHome", self.psfHome) if self.parameter.has_key("FeatureOwner"): psfReporter.addPara("FeatureOwner", self.parameter["FeatureOwner"]) else: psfReporter.addPara("FeatureOwner", "Unknown") psfReporter.addPara("ProductVersion", self.productVersion) psfReporter.run() reportFile = psfReporter.getHtmlReport() # Send Report from HtmlEmailUtil import childTask htmlEmailUtil = childTask("HtmlEmailUtil", self.priority + 2) if self.parameter.has_key("From"): htmlEmailUtil.addPara("From", self.parameter["From"]) else: htmlEmailUtil.addPara("From", "*****@*****.**") user = globalProperty.getUser() if user == None: defaultTo = "*****@*****.**" else: defaultTo = "*****@*****.**" % user if self.parameter.has_key("To"): htmlEmailUtil.addPara("To", self.parameter["To"]) else: htmlEmailUtil.addPara("To", defaultTo) if globalProperty.isMachineOutOfChina(): htmlEmailUtil.addPara("SMTPServer", self._dbutil.getAppInfo("email_server_us")) else: htmlEmailUtil.addPara("SMTPServer", self._dbutil.getAppInfo("email_server_cn")) if self.parameter.has_key("Subject"): subject = self.parameter["Subject"] elif self.parameter.has_key("SuiteSelected"): subject = "PSF Report: Photoshop 12.0 Results" else: subject = "PSF Report: Photoshop 12.0 Results" subject = " [%s][%s][%s][%s]%s[%s](%s)" % ( self.productVersion, psfReporter.getPassRate(), globalProperty.getSysInfo().locale, globalProperty.getSysInfo().os, subject, self.buildNum, psfReporter.getMachine(), ) htmlEmailUtil.addPara("Subject", subject) htmlEmailUtil.addPara("ReportFile", reportFile) htmlEmailUtil.run()
def runWin(self): self.logger.debug("Update runWin") self.download() sysInfo = globalProperty.getSysInfo() if re.match(".*windows.*\s+vista\s+.*", sysInfo.os.lower()) or re.match( ".*windows.*\s+7\s+.*", sysInfo.os.lower() ): self.logger.info( "Windows Vista and Windows 7 do not support AT command, so to activate QMS need reboot your machine" ) from RebootOS import childTask rebootOS = childTask("rebootOS", self.priority + 1) rebootOS.addPara("timeLength", 60) rebootOS.run() else: os.system("at %d:%d /interactive %s" % (self.when.hour, self.when.minute, self.QMSGateLocation)) # sys.exit doesn't work? # os.abort() self.logger.info("restAdm will be restared after 120 seconds") time.sleep(10) os._exit(0)
if ipAddress==_ip_address: return ''' self.__qmsWS.updateMachineIp(self.__macAddress, _ip_address, _os, _hostname) def updateMachineInfo(self): _hostnameConfig = globalProperty.getMachineName() _hostname = socket.gethostname() try: _ip_address = globalProperty.getIpAddress() except Exception, e: print e self.logger.error(e) return _os = 'win' if os.name == 'nt' else 'mac' sysInfo = globalProperty.getSysInfo() _osVersion = sysInfo.os _locale = sysInfo.locale _videoAdapter = sysInfo.videoAdapter _owner=globalProperty.getOwner() self.__qmsWS.updateMachineInfo(self.__macAddress, _ip_address, _os, _hostname, _osVersion ,_locale,_videoAdapter,_owner) if _hostnameConfig: self.__qmsWS.updateMachineName(self.__macAddress, _hostnameConfig) def startExecution(self, filePath): jobId = filePath[filePath.rfind('_') + 1:-3] ''' by nlei r = self.__query("SELECT user_id FROM job WHERE job_id = %s", jobId) if r != None and len(r)!=0: userId = r[0][0] #Need to notify I am occupied
def __prepareLauncher(self): if "buildNum" in self.parameter and self.parameter["buildNum"] != None: self.buildNum = self.parameter["buildNum"] else: from AppInstall import childTask task = childTask("appInstall") task.addPara("appName", "Photoshop") task.addPara("appVer", self.parameter["ProductVersion"]) task.addPara("appSubProduct", "Application") self.buildNum = task._getInstalledBuildNum() if self.buildNum != "" and self.buildNum != None: pass elif "molecule" in self.parameter: moleculeReStr = "\d{8}\." + self.parameter["molecule"] + "\.\d{1,}" from CodexTask import childTask task = childTask("codexTask") self.buildNum = "unknown" builds = task.getBuilds( "Photoshop", self.parameter["ProductVersion"], "Molecule", "Release", # CompileTarget self.platform, globalProperty.getSysInfo().locale, "Build Failed", ) if builds == None: return None latestBuildLocation = None for build in builds: if re.match(moleculeReStr, build._build): latestBuildLocation = ( build._location["protocol"] + "://" + build._location["server"] + build._location["path"] ) self.buildNum = build._build break else: if globalProperty.isMachineOutOfChina(): # Support the machine out of China, will download directly from CodexTask import childTask task = childTask("codexTask") latestBuild = task.getBuild( "Photoshop", self.parameter["ProductVersion"], "Release", # CompileTarget self.platform, globalProperty.getSysInfo().locale, "Build Failed", ) if latestBuild == None: return None self.buildNum = latestBuild._build else: self.buildNum = globalProperty.getLatestBuildNum( "Photoshop", self.parameter["ProductVersion"], self.platform, globalProperty.getSysInfo().locale, "Build Failed", "Application", ) if "sendReport" in self.parameter and self.parameter["sendReport"] != None: self.sendReport = self.parameter["sendReport"] else: self.sendReport = "No" user = globalProperty.getUser() if user == None: defaultTo = "*****@*****.**" else: defaultTo = "*****@*****.**" % user if "sendReportTo" in self.parameter and self.parameter["sendReportTo"] != None: self.sendReportTo = self.parameter["sendReportTo"] else: self.sendReportTo = defaultTo if "specifyLocation" in self.parameter and self.parameter["specifyLocation"] != None: self.specifyLocation = self.parameter["specifyLocation"] else: self.specifyLocation = "" import platform self.hostname_psf = platform.node() # Due to PSF bug, the version 12.0 must be set as 12.0.0, so add a workaround here productVersionTmp = self.parameter["ProductVersion"] if re.match("^\d{1,2}\.\d{1,3}$", productVersionTmp.lower()): productVersionTmp += ".0" if os.name == "posix": if not (os.path.exists(os.path.join(self.userHome, "Desktop"))): os.makedirs(os.path.join(self.userHome, "Desktop")) self.launcherFileName += ".sh" self.launcherFilePath = os.path.join(self.userHome, "Desktop", self.launcherFileName) inputStr = "#!/bin/sh\n" inputStr += "chmod +x %s/psf_launcher\n" % self.psfHome inputStr += "chmod +x %s/config/utils/TestFilesDownloader\n" % self.psfHome inputStr += ( '%s/psf_launcher "%s" "%s" "%s" "%s" "%s" "%s" "%s" "1" "%s" "1" "" "%s" "" "" "" "" "%s" "%s" "%s" "%s" "%s" "%s"\n' % ( self.psfHome, self.parameter["ProductTested"], self.parameter["BuildConfig"], self.buildNum, globalProperty.getSysInfo().locale, globalProperty.getSysInfo().locale, self.parameter["SuiteSelected"], self.parameter["SendResult"], self.hostname_psf, productVersionTmp, self.parameter["PSFController"], self.parameter["LDAPUser"], self.downloadFileFlag, self.specifyLocation, self.sendReport, self.sendReportTo, ) ) self.creatFile(self.launcherFilePath, inputStr) # Add execution self.runCommand("chmod +x %s" % self.launcherFilePath) elif os.name == "nt": if not (os.path.exists(os.path.join(self.userHome, "Desktop"))): os.makedirs(os.path.join(self.userHome, "Desktop")) self.launcherFileName += ".cmd" self.launcherFilePath = os.path.join(self.userHome, "Desktop", self.launcherFileName) inputStr = "cd /d %s\n" % self.psfHome buildConfig = self.parameter["BuildConfig"] if re.match(".*_32bt_.*", buildConfig): inputStr += "Call psf_launcher32.exe " else: inputStr += "Call psf_launcher.exe " inputStr += ( '"%s" "%s" "%s" "%s" "%s" "%s" "%s" "1" "%s" "1" "" "%s" "" "" "" "" "%s" "%s" "%s" "%s" "%s" "%s"\n' % ( self.parameter["ProductTested"], self.parameter["BuildConfig"], self.buildNum, globalProperty.getSysInfo().locale, globalProperty.getSysInfo().locale, self.parameter["SuiteSelected"], self.parameter["SendResult"], self.hostname_psf, productVersionTmp, self.parameter["PSFController"], self.parameter["LDAPUser"], self.downloadFileFlag, self.specifyLocation, self.sendReport, self.sendReportTo, ) ) # Following statement should not be called # inputStr += "Call cmd" self.creatFile(self.launcherFilePath, inputStr)
def __getLatestBuildNumber(self): if 'buildNum' in self.parameter and self.parameter['buildNum'] != None: self.buildNum = self.parameter['buildNum'] else: import AppInstall task = AppInstall.childTask('appInstall') task.addPara('appName', 'Photoshop') task.addPara('appVer', self.parameter['ProductVersion']) task.addPara('appSubProduct', 'Application') self.buildNum = task._getInstalledBuildNum() if self.buildNum!="" and self.buildNum!=None: pass elif 'molecule' in self.parameter: moleculeReStr = "\d{8}\." + self.parameter['molecule'] + "\.\d{1,}" from CodexTask import childTask task = childTask('codexTask') self.buildNum = "unknown" builds = task.getBuilds( 'Photoshop', self.parameter['ProductVersion'], "Molecule", "Release", #CompileTarget self.platform, globalProperty.getSysInfo().locale, 'Build Failed') if builds==None: return None latestBuildLocation = None for build in builds: if re.match(moleculeReStr, build._build): latestBuildLocation = build._location['protocol'] + "://" + \ build._location['server'] + \ build._location['path'] self.buildNum = build._build break else: if globalProperty.isMachineOutOfChina(): #Support the machine out of China, will download directly import CodexTask task = CodexTask.childTask('codexTask') latestBuild = task.getBuild( 'Photoshop', self.parameter['ProductVersion'], "Release", #CompileTarget self.platform, globalProperty.getSysInfo().locale, 'Build Failed') if latestBuild==None: return None self.buildNum = latestBuild._build else: self.buildNum = globalProperty.getLatestBuildNum('Photoshop', self.parameter['ProductVersion'], self.platform, globalProperty.getSysInfo().locale, 'Build Failed', 'Application')