示例#1
0
    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()
示例#2
0
    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)
示例#3
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
示例#4
0
    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)
示例#5
0
 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')