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 _downloadFolder(self, fileLocation, fileRepository): fullPath = fileLocation[6:] parts = fullPath.split("/", 1) (host, location) = parts from FTPTask import childTask task = childTask("task") task.addPara("Host", host) task.addPara("User", self._commonDomain + "\\" + self._commonUser) task.addPara("Passwd", self._commonPassword) if not location.startswith("/"): location = "/" + location task.addPara("Repository", fileRepository) task.addPara("FolderPath", location) task.run() return task.getDownloadList()
def run(self): self.logger.debug("PSFTask run") from PhotoshopInstall import childTask psInstall = childTask("psInstall") if "ProductVersion" in self.parameter: self.productVersion = self.parameter["ProductVersion"] else: self.productVersion = "Photoshop" if not psInstall.isInstallPS(self.parameter["ProductVersion"]): self.logger.warning("Cannot Find Photoshop Installed") return elif ( "checkPlugIn" in self.parameter and self.parameter["checkPlugIn"] == "Yes" and not psInstall.isInstallCRCPlugIn(self.parameter["ProductVersion"]) ): # self.logger.warning("Cannot Find CRC Plugin Installed") # return psInstall.addPara("appVer", self.productVersion) psInstall.installSpecialPlugIn() if "zstring" in self.parameter and self.parameter["zstring"].strip() == "true": psInstall.addPara("zstring", "true") psInstall.makeBackDoorFile(self.parameter["ProductVersion"]) if "PSFHome" in self.parameter: self.psfHome = os.path.join(self.parameter["PSFHome"], "PSF") else: self.psfHome = os.path.join(self.PSFLocalHome, "PSF") self.psfLogHome = os.path.join(self.psfHome, "logs") self.psfScriptsHome = os.path.join(self.psfHome, "scripts") if "LocalConfigFilesLocation" in self.parameter: self.localConfigFileLocation = self.parameter["LocalConfigFilesLocation"] if "LocalTestFilesLocation" in self.parameter: self.localTestFileLocation = self.parameter["LocalTestFilesLocation"] if os.path.exists(self.psfHome): self.PSFLocation = self._dbutil.getAppInfo("psf_path_us") if "downloadFileFlag" in self.parameter: self.downloadFileFlag = self.parameter["downloadFileFlag"] if "SetupFile" in self.parameter: self.setupFileFlag = self.parameter["SetupFile"] self.__getPSF() if ( "copyAppPanel" in self.parameter and self.parameter["copyAppPanel"] == "Yes" or not "copyAppPanel" in self.parameter ): psInstall.prepareAppPanel( "%s/testfiles/FlashPanels/AppPanels" % self.psfHome, self.parameter["ProductVersion"] ) if os.name == "nt": self._removeFile() if "TestStudioControl" in self.parameter and self.parameter["TestStudioControl"] == "Yes": psfController = self.parameter["PSFController"] try: caseXML = self._dbutil.getValidTestCasesFromTS("Photoshop", psfController) self.updateCaseByTestStudioResult(caseXML) except Exception, e: self.logger.debug(e)
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)
""" This method is to delete screencap.exe, this app file may cause PSF hang """ def _removeFile(self): targetFile = os.path.join(self.psfHome, "config\utils\screencap.exe") if os.path.exists(targetFile): os.remove(targetFile) return None def prepareLauncher(self): self.__prepareLauncher() if __name__ == "__main__": task = childTask("xx", 1) task.addPara("Subject", "Filter Test Automation Result of Photoshop by QMS") # task.addPara("PSFHome", "D:\\localPSF") # task.run(); # task.psfScriptsHome = "D:\\tmp\\test" task.addPara("ProductVersion", "13.0") task.addPara("molecule", "plct") task.addPara("From", "*****@*****.**") task.addPara("To", "*****@*****.**") # task._sendReport() # caseXML = task._dbutil.getValidTestCasesFromTS("Photoshop", "psfController_PS_filter.csv") # task.updateCaseByTestStudioResult(caseXML) task.prepareLauncher() """ task.addPara("BuildConfig", "Ext_32bt_OGLOff") task.addPara("SuiteSelected", "1,0,0,0,0,0")