Esempio n. 1
0
    def report(self, repHandler=slog.info, sumTitle='Test Summary:'):
        repRes = self.reportResult()
        if self.isInMode('show') or self.isInMode('scenario'):
            repHandler('\r\nFind Test Case(%s of %s):', repRes[MTConst.passed], repRes['num'])
            self.reportResult(MTConst.passed, repHandler)
            repHandler('Summary: %s of %s', repRes[MTConst.passed], repRes['num'])
        else:
            repHandler('\r\n%s\r\n%s' % (sumTitle, '-' * 60))
            sumInfo = '\r\nTotal\t%s, %sm:\r\n\t' % (repRes['num'], int(repRes['time'] / 60 + 0.5))
            hasRunRes = False
            for resType in range(4):
                try:
                    resInfo = self.getResInfo(resType)
                    resNum = ObjOperation.tryGetVal(repRes, resType, 0)
                    if resType != MTConst.notRun:
                        repHandler('%s\t%s:', resInfo, resNum)
                        self.reportResult(resType, repHandler)
                    sumInfo += (" + %s: %s" if hasRunRes else "%s: %s") % (resInfo, resNum)
                    hasRunRes = True
                except Exception as ex:
                    slog.warn(ex)
                    continue
            repHandler(sumInfo)
#            repHandler('\r\nLog File:\r\n\t%s\n\n' % self.tlog.GetLoggerPath())
        return repRes
Esempio n. 2
0
 def __registerService(self, exip, ports):
     from libs.syslog import slog
     slog.warn("%s:%s register to %s with %s" % (exip, ", ".join([str(p) for p in ports]), self.regServer, self.regName))
     if self.regServer is not None:
         from server.cclient import curlCservice
         curlCservice(self.regServer, 'CServiceTool/RegistServer',
             hostport="%s:%s" % (exip, ports[0]), serverName=self.regName)
Esempio n. 3
0
 def __callObjFun__(self, reqPath, reqParam):
     try:
         return self.ws.callObjFunInworker(reqPath, reqParam)
     except WorkerManager.WorkerFullException as ex:
         slog.warn(str(ex))
     except:
         slog.error(str(traceback.format_exc()))
     # If worker is full or exception, deal request in main process
     return ObjHandler.__callObjFun__(self, reqPath, reqParam)
Esempio n. 4
0
 def receiveSyncTask(self, tasks):
     tkeys = []
     for task in tasks:
         if self.nodename == task['tnode']:
             try:
                 tkeys.append(self.task.addOnlineTask(self._taskmgr, task['taskid'], task['tkey'], task['targs'], task['ttype'], task['hour'], task['minute'], task['span'], task['maxCount'], task['runCount'],
                     notifycond=task['notifycond'], opstatus=task['status'])['key'])
             except Exception as ex:
                 slog.warn("Drop task for {0} {taskid} {tkey}".format(ex, **task))
         else:
             slog.warn("Node not match, drop task {tkey} {taskid}".format(**task))
     return tkeys
Esempio n. 5
0
 def __log(self, levelIndex, eleName, content, **eleAttrs):
     try:
         if content != None:
             content = "%s %s" % (time.strftime("[%Y-%m-%d %H:%M:%S]"), content)
         if self.__isXmlLog:
             self.__xlog.AddElement(eleName, content, **eleAttrs)
         else:
             eleAttrDesp = ""
             for eleAttr in eleAttrs.keys():
                 eleAttrDesp = eleAttrDesp + " [%s] %s" % (eleAttr, eleAttrs[eleAttr])
             self.__logLine("%s<%s> %s%s\r\n" % ("\r\n" if levelIndex == 0 else (levelIndex * 2 * " "),
                 eleName, content if content != None else '', eleAttrDesp))
     except Exception as ex:
         slog.warn("Logging: %s" % ex)
Esempio n. 6
0
    def runHandler(self, *args, **vargs):
        startTime = time.time()
        isSuccess, ret = True, None
        try:
            ret = self.stsHandler(*args, **vargs)
        except Exception as ex:
            slog.warn("FAIL %s" % ex)
            isSuccess = False
            if self.isDebug:
                import traceback
                print(traceback.format_exc())
        endTime = time.time()
        runTime = endTime - startTime

        return self._statisticRunInfo(endTime, runTime, isSuccess), ret
Esempio n. 7
0
 def __registerService(self, exip, ports, initMethods):
     from libs.syslog import slog
     slog.warn(
         "%s:%s register to %s with %s" %
         (exip, ", ".join([str(p)
                           for p in ports]), self.regServer, self.regName))
     import time
     time.sleep(1)
     if self.regServer != "":
         from server.cclient import curlCservice
         curlCservice(self.regServer,
                      'CServiceTool/registServer',
                      hostport="%s:%s" % (exip, ports[0]),
                      serverName=self.regName,
                      initMethods=initMethods)
Esempio n. 8
0
 def runHandler(self, *args, **vargs):
     startTime = time.time()
     e, ret = None, None
     try:
         ret = self.stsHandler(*args, **vargs)
     except Exception as ex:
         e = ex
         if self.isDebug:
             import traceback
             print(traceback.format_exc())
     finally:
         endTime = time.time()
         runTime = endTime - startTime
         sr = self._statisticRunInfo(endTime, runTime, e is None)
         if e: slog.warn("\tPFAIL %s" % ex)
         return sr, ret
Esempio n. 9
0
    def analyzeLogs(self,
                    product,
                    version,
                    environment,
                    runInfo,
                    logfiles=None):
        if logfiles is not None:
            for f in logfiles:
                try:
                    self.la.parseLogFile(f)
                except Exception as ex:
                    slog.warn("Fail to parse log file %s: %s" % (f, ex))

        subject, htmlContent = self.la.makeHtmlSummary(product, version,
                                                       environment, runInfo)
        self.subject = subject
        self.htmlContent = htmlContent
Esempio n. 10
0
    def init(self,
             runMode="debug",
             testrunConfig="",
             logFilePath="",
             tcPattern=None,
             outTcPattern=None,
             searchKey=None,
             propConf={}):

        if not self.tprop.load(testrunConfig):
            if testrunConfig != "":
                slog.warn("Not found testrunConfig: %s" % testrunConfig)

        self.isModeling = False

        self.setRunCase(tcPattern, outTcPattern, searchKey, runMode)
        self.setRunLog(logFilePath)
Esempio n. 11
0
 def __getProxyInfo__(self, headers, address, path):
     ip, port, host = "", 80, ""
     if tryGet(headers, "cfrom", None) != self.localHosts:
         try:  # get by host
             ip = headers["host"].lower()
             ps = ip.split(":")
             if len(ps) == 2:
                 ip, port = ps[0], int(ps[1])
             ps = self.hostIp[ip]
             ip, port, host = ps['ip'], ps['port'], ps['host']
         except:  # get by path
             ps = self.__getPathProxy__(path) if self.pathIp else None
             if ps is None:
                 if self.isDebugMode:
                     slog.warn("Not found proxy: %s \t%s" % (ip, path))
             else:
                 ip, port, host = ps['ip'], ps['port'], ps['host']
     if ip == "":
         if self.isDebugMode: slog.error("No proxy hosts: %s" % headers)
         raise ProxyHttpHandle.NoHostException()
     return ip, port, host
Esempio n. 12
0
    def runTest(self, tempObj, tcInfo, tempFun, caseInfo, isInfoExcept):
        resCode = None
        try:
            startTime = time.time()
            if not tcInfo.isTested:
                tempObj.setUp()
                tcInfo.isTested = True

            tempObj.beginTestCase()
            self.debugTest(tempFun, tempObj, tempObj.param)
            tempObj.endTestCase()
            excuteTime = time.time() - startTime
            resCode = MTConst.warned if self.tassert.isWarned else MTConst.passed
        except Exception as ex:
            excuteTime = time.time() - startTime
            exInfo = self.getMTestTraceBack()
            self.tlog.error(exInfo)
            if isInfoExcept:
                slog.warn(exInfo)
            else:
                try:
                    resCode = tempObj.errorHandle(ex, caseInfo)
                except Exception as ex:
                    slog.warn("ErrorHandle Should NOT Fail! MSG:%s", ex)
                try:
                    tempObj.endTestCase()
                except Exception as ex:
                    slog.warn("EndTestCase Should NOT Fail! MSG:%s", ex)
            if not isinstance(resCode, int) or resCode <= 3:
                resCode = MTConst.failed
        return resCode, int(excuteTime * 100 + 0.5) / 100.0
Esempio n. 13
0
    def __runCases__(self, *modelTypes):
        slog.info(time.strftime("%Y-%m-%d %H:%M:%S testing..."))
        for modelType in modelTypes:
            if self.tc.isInMode("run", 1):
                try:
                    tcObj = modelType()
                except Exception as ex:
                    slog.warn('Instance Class: %s with %s' % (modelType, ex))
                    continue
            else:
                tcObj = modelType()
            try:
                tcInfo, caseRunList = self.tc.getRunInfo(tcObj.__class__.__name__, tcObj)
            except Exception as ex:
                slog.error("No case: %s" % ex)
                continue

            if len(caseRunList) == 0:
                continue

            for caseName in caseRunList:
                if eval("tcObj.%s()" % caseName) == False:
                    return False
                if self.endScenarioHandler != None:
                    self.endScenarioHandler(tcObj, caseName)

            if tcInfo.isTested:
                if self.tc.isInMode("run", 1):
                    try:
                        tcObj.tearDown()
                    except Exception as ex:
                        slog.warn('tearDown Should NOT Fail! %s: %s' % (ex, self.getMTestTraceBack()))
                else:
                    tcObj.tearDown()
            if self.endModelHandler != None:
                self.endModelHandler(tcInfo)

        self.tlog.close()
        return self.tc.report()
Esempio n. 14
0
    def init(self,
             runMode="debug",
             testrunConfig="",
             logFilePath="",
             tcPattern=None,
             outTcPattern=None,
             searchKey=None,
             propConf={}):

        if not self.tprop.load(testrunConfig):
            if testrunConfig != "":
                slog.warn("Not found testrunConfig: %s" % testrunConfig)
        for sec in propConf:
            if not self.tprop.sections.__contains__(sec):
                self.tprop.sections[sec] = propConf[sec]
            else:
                for p in propConf[sec]:
                    self.tprop.sections[sec][p] = propConf[sec][p]

        self.isModeling = False

        self.setRunCase(tcPattern, outTcPattern, searchKey, runMode)
        self.setRunLog(logFilePath)
Esempio n. 15
0
    def runScenario(self, tcObj, tcFun, caseName, param, where, group, status,
                    despFormat, searchKey):  # Status is for status modeling
        isInfoExcept = self.tc.isInMode("debug")

        clsName = tcObj.__class__.__name__
        tcInfo = self.tc.getTCInfo(clsName)
        tsInfo = tcInfo[caseName]
        for sKey in tcInfo.searchKey:
            if not searchKey.__contains__(sKey):
                searchKey[sKey] = tcInfo.searchKey[sKey]

        if status != None:
            from tmodel.model.statusmodel import TestModeling
            self.tc.isModeling = True
            modelLauncher = TestModeling(
                tcObj, ObjOperation.tryGetVal(status, "start", "Start"),
                ObjOperation.tryGetVal(status, "coverage", "all"))
            self.tc.isModeling = False
            param["sPath"] = modelLauncher.generatePaths()

            try:
                where["combine"].append("sPath")
            except:
                where = copy.deepcopy(where)
                where["combine"] = ["sPath"]
            tcFun = modelLauncher.launchTestPath

        try:
            mparam = ObjOperation.tryGetVal(where, "handle",
                                            CombineGroupParam)(param, where,
                                                               group)
        except Exception as ex:
            slog.warn(
                "Fail to generate parameter, case %s\nerror: %s\nparam= %s\nwhere= %s\ngroupParam= %s"
                % (caseName, "%s %s" %
                   (ex.__class__.__name__, ex), param, where, group))
            return not isInfoExcept
        while True:
            try:
                sparam = mparam.nextParam()
            except Exception as ex:
                sparam = None
                slog.warn(
                    "Fail to generate parameter, case %s\nerror: %s\nparam= %s\nwhere= %s\ngroupParam= %s"
                    % (caseName, "%s %s" %
                       (ex.__class__.__name__, ex), param, where, group))

            if sparam is None:
                break

            desp = self.tc.getTCDespcription(sparam, despFormat)
            caseInfo = self.tc.getCaseInfo(tsInfo, sparam.pIndex, desp,
                                           searchKey)
            caseFullName = self.tc.getTCFullName(caseName, sparam.pIndex, desp)

            if not self.tc.isInScope(caseFullName, searchKey):
                continue

            if self.tc.isInMode("show", -1):
                caseInfo['r'] = MTConst.passed
                if self.tc.isInMode("param"):
                    slog.info("%s\n%s\n", caseFullName, sparam)
                elif self.tc.isInMode("look"):
                    slog.info("%s\n%s\n%s\n", caseFullName, searchKey, sparam)
                elif self.tc.isInMode("scenario", -1):
                    if self.tc.isInMode("slook"):
                        slog.info("%s\n%s\n%s\n", caseFullName, searchKey,
                                  param)
                    tsInfo[0]['d'] = ""
                    return
                continue

            self.tassert.isWarned = False
            tcObj.param = sparam
            caseSimpleName = caseFullName.split(" ")[0]

            slog.info(MTConst.beginTestCaseInfo, caseFullName)
            self.tlog.beginTestCase(clsName, caseSimpleName, desp, sparam,
                                    searchKey)

            if self.tc.isInMode("debug", 1, True):
                resCode, exeTime = self.runTest(tcObj, tcInfo, tcFun, desp,
                                                isInfoExcept)
                if isInfoExcept and (resCode == MTConst.failed
                                     or resCode >= 3):
                    return False

            if self.endTestHandler != None:
                self.endTestHandler(caseName, sparam, sparam.pIndex, searchKey,
                                    tcInfo, caseInfo)

            try:
                resInfo = self.tc.getResInfo(resCode)
            except:
                resCode = MTConst.failed
                resInfo = self.tc.getResInfo(resCode)

            caseInfo['t'] = exeTime
            caseInfo['r'] = resCode

            (slog.warn if resCode == MTConst.failed else slog.info)(
                MTConst.endTestCaseInfo, resInfo, caseSimpleName)
            self.tlog.endTestCase(caseSimpleName, resInfo, resCode, exeTime)