Example #1
0
    def getPlancase(self,
                    planid,
                    caseid=None,
                    owner=None,
                    status=None,
                    scenarioName=None,
                    caseName=None,
                    fields='*'):
        sql = self.sqlConn.getSql("plancase", Sql.select, True, fields)
        sql.appendWhereByJson({
            'planid': planid,
            "caseid": caseid,
            "status": status
        })

        if not Sql.isEmpty(owner):
            owner = '%%%s%%' % owner
            sql.appendCondition("(owner like '%s')", (owner, ))

        if not Sql.isEmpty(scenarioName):
            caseTags = '%%%s%%' % scenarioName
            sql.appendCondition("(tags like '%s' or scenario like '%s')",
                                (caseTags, caseTags))
        if not Sql.isEmpty(caseName):
            caseName = '%%%s%%' % caseName
            sql.appendCondition("(name like '%s')", (caseName, ))

        sql.orderBy('tags,scenario,caseid')
        return sql.execute()
Example #2
0
    def saveCtestplanStatus(self,
                            planid,
                            status=None,
                            progress=None,
                            starttime=None,
                            endtime=None,
                            mailto=None,
                            mailfrom=None,
                            mailcc=None):
        if Sql.isEmpty(planid):
            return 0
        if Sql.isEmpty(mailto): mailto = None
        if Sql.isEmpty(mailfrom): mailfrom = None
        if Sql.isEmpty(mailcc): mailcc = None

        sql = self.sqlConn.getSql("testplan", Sql.update, True)
        sql.appendValueByJson({
            'status': status,
            'progress': progress,
            'starttime': starttime,
            'endtime': endtime,
            'mailto': mailto,
            'mailfrom': mailfrom,
            'mailcc': mailcc
        })
        sql.appendWhere("planid", planid)
        return sql.execute()
Example #3
0
    def getTestEnv(self,
                   envname,
                   hostip,
                   vmaccount,
                   owner,
                   ownerStatus,
                   fnid,
                   nid1,
                   nid2,
                   testenvid=None):
        sql = self.sqlConn.getSql("testenv", Sql.select, True)
        sql.appendWhereByJson({
            'hostip': hostip,
            'owner': owner,
            'ownerStatus': ownerStatus
        })

        sql.startCondition().appendWhere(
            'fnid', fnid,
            isAnd=False).appendWhere('nid1', nid1, isAnd=False).appendWhere(
                'nid2', nid2, isAnd=False).endCondition()

        if not Sql.isEmpty(vmaccount):
            vmaccount = '%%%s%%' % vmaccount
            sql.appendCondition("(vmaccount like '%s')", (vmaccount, ))

        if not Sql.isEmpty(envname):
            envname = '%%%s%%' % envname
            sql.appendCondition("(envname like '%s' or tags like '%s')",
                                (envname, envname))
        # 'vmammounts': vmammounts
        # 'ownerStartTime': ownerStartTime, 'ownerEndTime': ownerEndTime,
        sql.appendWhere("testenvid", testenvid)
        return sql.execute()
Example #4
0
 def _makeTimeBetween(self, sql, cstarttime, cendtime, sqlStart, sqlEnd):
     if not Sql.isEmpty(cstarttime):
         if not Sql.isEmpty(cendtime):
             sql.appendCondition("(({0}<='%s' and '%s'<={1}) or ({0}<='%s' and '%s'<={1}) or ('%s'<={0} and {0}<='%s'))".format(sqlStart, sqlEnd), \
                 (cstarttime, cstarttime, cendtime, cendtime, cstarttime, cendtime))
         else:
             sql.appendCondition("(%s>='%s')", (sqlEnd, cstarttime))
     elif not Sql.isEmpty(cendtime):
         sql.appendCondition("(%s<='%s')", (sqlStart, cendtime))
Example #5
0
 def savePlancase(self,
                  planid=None,
                  caseid=None,
                  scenario=None,
                  tags=None,
                  name=None,
                  owner=None,
                  status=None,
                  remark=None,
                  plancaseid=None):
     # status: not-start, executing, passed, failed
     modifytime = TimmerOperation.getFormatTime(time.time())
     sql = self.sqlConn.getSql(
         "plancase", Sql.insert if Sql.isEmpty(plancaseid) else Sql.update,
         True)
     sql.appendValueByJson({
         'planid': planid,
         "caseid": caseid,
         "tags": tags,
         "scenario": scenario,
         "name": name,
         'owner': owner,
         'remark': remark,
         "status": status,
         "modifytime": modifytime
     })
     sql.appendWhere("plancaseid", plancaseid)
     return sql.execute()
Example #6
0
 def savePlandaily(self,
                   planid,
                   day,
                   status,
                   progress,
                   caseprogress,
                   costtime,
                   costman,
                   summary,
                   issues,
                   dailyId=None):
     sql = self.sqlConn.getSql(
         "plandaily", Sql.insert if Sql.isEmpty(dailyId) else Sql.update,
         True)
     sql.appendValueByJson({
         'planid': planid,
         "day": day,
         "status": status,
         "progress": progress,
         'caseprogress': caseprogress,
         'costtime': costtime,
         'costman': costman,
         'summary': summary,
         'issues': issues,
         "dailyId": dailyId
     })
     sql.appendWhere("dailyId", dailyId)
     return sql.execute()
Example #7
0
 def updateCtestplan(self, planid, plan):
     if Sql.isEmpty(planid):return 0
     tryget = ObjOperation.tryGetVal
     return self.dbapi.saveCtestplan(owner=tryget(plan, 'owner', None), ptype=tryget(plan, 'ptype', None),
         priority=tryget(plan, 'priority', None), status=tryget(plan, 'status', None), progress=tryget(plan, 'progress', None),
         pendtime=tryget(plan, 'pendtime', None), endtime=tryget(plan, 'endtime', None),
         summary=tryget(plan, 'summary', None), issues=tryget(plan, 'issues', None), planid=planid)
Example #8
0
 def saveCtestcase(self,
                   scenario=None,
                   tags=None,
                   name=None,
                   ttype=None,
                   priority=None,
                   steps=None,
                   remark=None,
                   owner=None,
                   fnid=None,
                   nid1=None,
                   nid2=None,
                   caseid=None):
     modifytime = TimmerOperation.getFormatTime(time.time())
     sql = self.sqlConn.getSql(
         "testcase", Sql.insert if Sql.isEmpty(caseid) else Sql.update,
         True)
     sql.appendValueByJson({
         'scenario': scenario,
         'tags': tags,
         'name': name,
         "ttype": ttype,
         "priority": priority,
         'steps': steps,
         "remark": remark,
         "owner": owner,
         'modifytime': modifytime,
         "fnid": fnid,
         "nid1": nid1,
         "nid2": nid2,
         "caseid": caseid
     })
     sql.appendWhere("caseid", caseid)
     return sql.execute()
Example #9
0
    def saveTestConfig(self,
                       cname,
                       calias,
                       status,
                       subject,
                       ckey,
                       stype,
                       ccontent,
                       owner,
                       fnid,
                       nid1,
                       nid2,
                       configid=None):
        modifytime = TimmerOperation.getFormatTime(time.time())

        sql = self.sqlConn.getSql(
            "cconfig", Sql.insert if Sql.isEmpty(configid) else Sql.update,
            True)
        sql.appendValueByJson({
            'cname': cname,
            'calias': calias,
            'status': status,
            'subject': subject,
            'ckey': ckey,
            'stype': stype,
            'ccontent': ccontent,
            "owner": owner,
            'modifytime': modifytime,
            'fnid': fnid,
            'nid1': nid1,
            'nid2': nid2
        })
        sql.appendWhere("configid", configid)

        return sql.execute()
Example #10
0
    def getCtestplan(self,
                     fnid=None,
                     nid1=None,
                     nid2=None,
                     nameOrTags=None,
                     ptype=None,
                     priority=None,
                     inStatus=None,
                     outStatus=None,
                     cstarttime=None,
                     cendtime=None,
                     owner=None,
                     name=None,
                     tags=None,
                     planid=None):
        sql = self.sqlConn.getSql("testplan", Sql.select, True)

        sql.startCondition().appendWhere(
            'fnid', fnid,
            isAnd=False).appendWhere('nid1', nid1, isAnd=False).appendWhere(
                'nid2', nid2, isAnd=False).endCondition()

        if not Sql.isEmpty(nameOrTags):
            nameOrTags = '%%%s%%' % nameOrTags
            sql.appendCondition(
                "(name like '%s' or tags like '%s' or owner like '%s')",
                (nameOrTags, nameOrTags, nameOrTags))
        if not Sql.isEmpty(name):
            name = '%%%s%%' % name
            sql.appendWhere('name', name, 'like')
        if not Sql.isEmpty(tags):
            tags = '%%%s%%' % tags
            sql.appendWhere('tags', tags, 'like')

        sql.appendWhereByJson({
            "owner": owner,
            'priority': priority,
            'status': inStatus,
            "planid": planid
        })
        sql.appendWhere('ptype', ptype, 'in')
        sql.appendWhere('status', outStatus, '!=')
        self._makeTimeBetween(sql, cstarttime, cendtime, "pstarttime",
                              "pendtime")

        sql.orderBy("status,pendtime,priority,ptype,fnid desc,tags,name")
        return sql.execute()
Example #11
0
    def setPlancase(self,
                    plancaseid,
                    status,
                    owner,
                    planid=None,
                    curstatus=None):
        # status: not-start, executing, passed, failed
        if Sql.isEmpty(planid) and Sql.isEmpty(plancaseid): return 0

        sql = self.sqlConn.getSql("plancase", Sql.update, True)
        sql.appendValueByJson({"status": status, 'owner': owner})
        sql.appendWhere("plancaseid", plancaseid).appendWhere(
            "planid", planid).appendWhere("status", curstatus)
        result = sql.execute()
        if result > 0 and not Sql.isEmpty(plancaseid):
            self.savePlancase(plancaseid=plancaseid)
        return result
Example #12
0
    def __executeSql__(self, operation="show", fields="*", table="db", dbName="",
            where="1=1", whereArgs="", affectRows=100, dbConfig="local"):
        if Sql.isEmpty(dbConfig):
            return "no db config"
        if Sql.isEmpty(dbName):dbName = None

        if Sql.isEmpty(affectRows):
            affectRows = 100
        affectRows, operationType = int(affectRows), operation[0:10].lower().strip()

        try:
            argIndex = 0
            for arg in StrOperation.splitStr(whereArgs, ",", "'"):
                where = where.replace("{%s}" % argIndex, arg)
                argIndex += 1
        except Exception as ex:
            return ("%s" % ex)

        conn = self.__getConn(dbConfig)

        if operationType == "select":
            query = "select %s from %s.%s where %s limit %s" % (fields, dbName, table, where, affectRows)
            return conn.executeSql(query, True, dbName=dbName)
        elif operationType == "update":
            if self.isCheckUpdate:
                query = "select count(1) as affectRows from %s.%s where %s " % (dbName, table, where)
                actAffectRows = conn.executeSql(query, True, dbName=dbName)[0]['affectRows']
            else:
                actAffectRows = affectRows
            if actAffectRows == affectRows:
                update = "update %s.%s set %s where %s limit %s" % (dbName, table, fields, where, affectRows)
                return conn.executeSql(update, isSelect=False, isCommit=True, dbName=dbName)
            else:
                return "Actual %s != Expect %s" % (actAffectRows, affectRows)
        elif self.isSupportDelete and operationType == "delete":
            delete = "delete from %s.%s where %s limit %s" % (dbName, table, where, affectRows)
            return conn.executeSql(delete, isSelect=False, isCommit=True, dbName=dbName)
        elif operationType == "show":
            if Sql.isEmpty(dbName):
                return conn.executeSql("show databases", dbName=dbName)
            else:
                return conn.executeSql("show tables", dbName=dbName)
        elif self.isSupportAnySql:
            return conn.executeSql(operation, dbName=dbName)
        else:
            return "Bad operation %s" % operation
Example #13
0
    def saveCdeploy(self,
                    version=None,
                    procode=None,
                    proname=None,
                    protype=None,
                    branch=None,
                    brancharg=None,
                    pendtime=None,
                    creator=None,
                    owner=None,
                    notifyer=None,
                    remark=None,
                    attach=None,
                    fnid=None,
                    nid1=None,
                    nid2=None,
                    phase=None,
                    status=None,
                    deployarg=None,
                    deploytimes=None,
                    isSetModifytime=False,
                    deployid=None):
        creattime = TimmerOperation.getFormatTime(
            time.time()) if deployid is None else None
        modifytime = TimmerOperation.getFormatTime(
            time.time()) if isSetModifytime else None
        creator = creator if deployid is None else None

        sql = self.sqlConn.getSql(
            "cdeploy", Sql.insert if Sql.isEmpty(deployid) else Sql.update,
            True)
        sql.appendValueByJson({
            'version': version,
            'procode': procode,
            'proname': proname,
            'protype': protype,
            'branch': branch,
            'brancharg': brancharg,
            'pendtime': pendtime,
            "creator": creator,
            "owner": owner,
            "notifyer": notifyer,
            "remark": remark,
            'attach': attach,
            'creattime': creattime,
            'modifytime': modifytime,
            "phase": phase,
            "status": status,
            "deployarg": deployarg,
            'deploytimes': deploytimes,
            'fnid': fnid,
            'nid1': nid1,
            'nid2': nid2
        })
        sql.appendWhere("deployid", deployid)
        return sql.execute()
Example #14
0
 def startDeploy(self, deployid, deployargs, __session__):
     if Sql.isEmpty(deployid):raise Exception("Not found deployid")
     deploy = self.dbapi.getCdeploy(deployid=deployid)[0]
     owner = __session__['name']
     if self._isRelativeDeploy(owner, deploy):
         if deploy['status'] == '1': return deploy['status']
         self.dbapi.saveCdeploy(status=1, deployarg=deployargs, deploytimes=deploy['deploytimes'] + 1, isSetModifytime=True, deployid=deployid)
         return "1"
     else:
         raise Exception("Not the creator or owner")
Example #15
0
    def getCdeploy(self,
                   branchversion=None,
                   projectremark=None,
                   phase=None,
                   creator=None,
                   fnid=None,
                   nid1=None,
                   nid2=None,
                   cstarttime=None,
                   cendtime=None,
                   deployid=None):
        sql = self.sqlConn.getSql("cdeploy", Sql.select, True)
        sql.appendWhereByJson({'deployid': deployid})
        if phase == '9':
            sql.appendWhere("phase", 4, "!=")
        else:
            sql.appendWhere("phase", phase)

        sql.startCondition().appendWhere(
            'fnid', fnid,
            isAnd=False).appendWhere('nid1', nid1, isAnd=False).appendWhere(
                'nid2', nid2, isAnd=False).endCondition()

        if creator is not None:
            sql.appendCondition(
                "(creator='%s' or owner='%s' or notifyer like '%%%s%%')",
                (creator, creator, creator))

        if not Sql.isEmpty(branchversion):
            branchversion = '%%%s%%' % branchversion
            sql.appendCondition("(branch like '%s' or version like '%s')",
                                (branchversion, branchversion))
        if not Sql.isEmpty(projectremark):
            projectremark = '%%%s%%' % projectremark
            sql.appendCondition("(procode like '%s' or remark like '%s')",
                                (projectremark, projectremark))
        self._makeTimeBetween(sql, cstarttime, cendtime, "creattime",
                              "pendtime")

        sql.orderBy("version,procode")
        return sql.execute()
Example #16
0
    def saveCtestplan(self,
                      name=None,
                      owner=None,
                      version=None,
                      tags=None,
                      summary=None,
                      issues=None,
                      ptype=None,
                      priority=None,
                      status=None,
                      progress=None,
                      pstarttime=None,
                      pendtime=None,
                      starttime=None,
                      endtime=None,
                      mailto=None,
                      fnid=None,
                      nid1=None,
                      nid2=None,
                      planid=None):
        # status: created, executing, finished, paused
        pstarttime = self._checkDate(pstarttime)
        pendtime = self._checkDate(pendtime)
        starttime = self._checkDate(starttime)
        endtime = self._checkDate(endtime)

        sql = self.sqlConn.getSql(
            "testplan", Sql.insert if Sql.isEmpty(planid) else Sql.update,
            True)
        sql.appendValueByJson({
            'name': name,
            'owner': owner,
            'version': version,
            'tags': tags,
            'summary': summary,
            'issues': issues,
            'ptype': ptype,
            'priority': priority,
            "status": status,
            "progress": progress,
            'pstarttime': pstarttime,
            "pendtime": pendtime,
            "starttime": starttime,
            'endtime': endtime,
            "mailto": mailto,
            "fnid": fnid,
            "nid1": nid1,
            "nid2": nid2,
            "planid": planid
        })
        sql.appendWhere("planid", planid)
        return sql.execute()
Example #17
0
 def syncPlancase(self, planid):
     for plancase in self.dbapi.getPlancase(planid, fields='plancaseid,caseid,remark'):
         plancaseid, caseid, remark = plancase['plancaseid'], plancase['caseid'], plancase['remark']
         case = self.dbapi.getCtestcase(caseid=caseid)
         if len(case) == 0:
             self.dbapi.deletePlancase(plancaseid)
         else:
             scenario, name = case[0]['scenario'], case[0]['name']
             if Sql.isEmpty(remark):
                 remark = case[0]['remark']
             else:
                 remark = None
             self.dbapi.savePlancase(scenario=scenario, name=name, remark=remark, plancaseid=plancaseid)
Example #18
0
 def addDeploy(self, version, procode, branch, pendtime=None, owner=None, notifyer=None, remark=None, attach=None,
         fnid=None, nid1=None, nid2=None, phaseInit=False, deployid=None, __session__=None):
     proname, protype, brancharg, deployarg = None, None, None, None
     phase, status = (1 if phaseInit else 0, 0) if deployid is None else (None, None)
     creator = __session__['name']
     if deployid is not None:
         deploy = self.dbapi.getCdeploy(deployid=deployid)[0]
         if not __session__['admin'] and not self._isRelativeDeploy(creator, deploy):
             raise Exception("Not the creator or owner")
     if not Sql.isEmpty(attach):
         attach = toJsonStr(attach)
     return self.dbapi.saveCdeploy(version, procode, proname, protype, branch, brancharg, pendtime,
         creator, owner, notifyer, remark, attach, fnid, nid1, nid2, phase, status, deployarg, deployid=deployid)
Example #19
0
    def getTestConfig(self,
                      subject=None,
                      stype=None,
                      cname=None,
                      ckey=None,
                      fnid=None,
                      nid1=None,
                      nid2=None,
                      status=None,
                      fields='*',
                      configid=None):
        sql = self.sqlConn.getSql("cconfig", Sql.select, True, fields)
        sql.appendWhereByJson({
            'configid': configid,
            'stype': stype,
            'status': status
        })

        sql.startCondition().appendWhere(
            'fnid', fnid,
            isAnd=False).appendWhere('nid1', nid1, isAnd=False).appendWhere(
                'nid2', nid2, isAnd=False).endCondition()

        if not Sql.isEmpty(subject):
            subject = '%%%s%%' % subject
            sql.appendCondition("(subject like '%s')", (subject, ))

        if not Sql.isEmpty(cname):
            cname = '%%%s%%' % cname
            sql.appendCondition("(cname like '%s' or calias like '%s')",
                                (cname, cname))

        if not Sql.isEmpty(ckey):
            ckey = '%%%s%%' % ckey
            sql.appendCondition("(ckey like '%s')", (ckey, ))
        sql.orderBy("subject,ckey,cname")
        return sql.execute()
Example #20
0
    def getCtestcase(self,
                     fnid=None,
                     nid1=None,
                     nid2=None,
                     searchKey=None,
                     ttype=None,
                     priority=None,
                     name=None,
                     owner=None,
                     planid=None,
                     caseid=None,
                     isInplan=True):
        sql = self.sqlConn.getSql("testcase", Sql.select, True)
        sql.startCondition().appendWhere(
            'fnid', fnid,
            isAnd=False).appendWhere('nid1', nid1, isAnd=False).appendWhere(
                'nid2', nid2, isAnd=False).endCondition()

        sql.appendWhereByJson({
            'name': name,
            "ttype": ttype,
            "priority": priority,
            "owner": owner,
            "caseid": caseid
        })
        if not Sql.isEmpty(planid):
            sql.appendCondition(
                "caseid %s in (select caseid from plancase where planid=%s)",
                ("" if isInplan else "not", planid))
        if not Sql.isEmpty(searchKey):
            searchKey = '%%%s%%' % searchKey
            sql.appendCondition(
                "(name like '%s' or tags like '%s'or scenario like '%s')",
                (searchKey, searchKey, searchKey))
        sql.orderBy("scenario,oindex")
        return sql.execute()
Example #21
0
 def getCtestplanById(self, planid):
     if Sql.isEmpty(planid):
         return
     plans = self.dbapi.getCtestplan(planid=planid)
     if len(plans) > 0:
         plan = plans[0]
         planStatus = cprop.getVal('plan', 'planStatus').split()
         plan['planStatus'] = planStatus[plan['status']]
         if plan['version'] is None:plan['version'] = ""
         plan['pstarttime'] = str(plan['pstarttime']).split()[0]
         plan['pendtime'] = str(plan['pendtime']).split()[0]
         plan['starttime'] = str(plan['starttime']).split()[0]
         plan['endtime'] = str(plan['endtime']).split()[0]
         plan['reportTarget'] = cprop.getVal('plan', 'reportTarget').format(**plan)
         plan['reportSummary'] = cprop.getVal('plan', 'reportSummary').format(**plan)
         caseprogress = self.calcPlancaseprogress(planid)
         plan['reportSummary'] = plan['reportSummary'].format(caseprogress=caseprogress)
     return plans
Example #22
0
    def saveTestEnv(self,
                    envname,
                    tags,
                    hostip,
                    hostaccount,
                    hostinfo,
                    vmaccount,
                    vmammounts,
                    vminfo,
                    owner,
                    ownerStatus,
                    ownerInfo,
                    ownerStartTime,
                    ownerEndTime,
                    fnid,
                    nid1,
                    nid2,
                    testenvid=None):

        sql = self.sqlConn.getSql(
            "testenv", Sql.insert if Sql.isEmpty(testenvid) else Sql.update,
            True)
        sql.appendValueByJson({
            'envname': envname,
            'tags': tags,
            'hostip': hostip,
            'hostaccount': hostaccount,
            'hostinfo': hostinfo,
            'vmaccount': vmaccount,
            'vmammounts': vmammounts,
            'vminfo': vminfo,
            'owner': owner,
            'ownerStatus': ownerStatus,
            'ownerInfo': ownerInfo,
            'ownerStartTime': ownerStartTime,
            'ownerEndTime': ownerEndTime,
            'fnid': fnid,
            'nid1': nid1,
            'nid2': nid2
        })
        sql.appendWhere("testenvid", testenvid)
        return sql.execute()
Example #23
0
 def deleteCdeploy(self, deployid, creator):
     if Sql.isEmpty(deployid):
         return 0
     sql = self.sqlConn.getSql("cdeploy", Sql.delete, True)
     sql.appendWhere("deployid", deployid).appendWhere("creator", creator)
     return sql.execute()
Example #24
0
 def deleteCtestcase(self, caseid):
     if Sql.isEmpty(caseid):
         return 0
     sql = self.sqlConn.getSql("testcase", Sql.delete, True)
     sql.appendWhere("caseid", caseid)
     return sql.execute()
Example #25
0
 def _checkDate(self, d):
     return None if Sql.isEmpty(d) else d
Example #26
0
 def deleteTestConfig(self, configid):
     if Sql.isEmpty(configid):
         return 0
     sql = self.sqlConn.getSql("cconfig", Sql.delete, True)
     sql.appendWhere("configid", configid)
     return sql.execute()
Example #27
0
 def deletePlancase(self, plancaseid):
     if Sql.isEmpty(plancaseid):
         return 0
     sql = self.sqlConn.getSql("plancase", Sql.delete, True)
     sql.appendWhere("plancaseid", plancaseid)
     return sql.execute()
Example #28
0
 def deleteCtree(self, nid):
     if Sql.isEmpty(nid):
         return 0
     sql = self.sqlConn.getSql("ctree", Sql.delete, True)
     sql.appendWhere("nid", nid)
     return sql.execute()
Example #29
0
 def deleteTestEnv(self, testenvid):
     if Sql.isEmpty(testenvid):
         return 0
     sql = self.sqlConn.getSql("testenv", Sql.delete, True)
     sql.appendWhere("testenvid", testenvid)
     return sql.execute()
Example #30
0
 def deleteCtestplan(self, planid):
     if Sql.isEmpty(planid):
         return 0
     sql = self.sqlConn.getSql("testplan", Sql.delete, True)
     sql.appendWhere("planid", planid)
     return sql.execute()