Пример #1
0
def getDebugResult(request):
    langDict = getLangTextDict(request)
    testDebugId = request.POST.get("body")
    startTime = time.time()
    while True:
        if (time.time() - startTime) >= 1:
            return HttpResponse(
                ApiReturn(ApiReturn.CODE_DEBUG_TIMEOUT,
                          langDict['web']['httpDebugTimeout']).toJson())
        # debugResult = DubboInterfaceDebugService.getDebugResult(request.session.get("loginName"))
        # if debugResult != 0:
        #     addUserLog(request, "DUBBO单接口管理->接口调试->获取结果->成功", "PASS")
        #     print(debugResult)
        #     return render(request,"dubbo/interface/SubPages/interface_debug_page.html",debugResult)
        try:
            debugResult = json.loads(RedisCache().get_data(testDebugId))
        except Exception as e:
            print(traceback.format_exc())
            return HttpResponse(
                ApiReturn(ApiReturn.CODE_ERROR, "调试结果解析异常,请联系管理员").toJson())
        if debugResult["execStatus"] == 3 or debugResult["execStatus"] == 4:
            debugResult["alias"] = TbConfigHttp.objects.get(
                httpConfKey=debugResult["httpConfKey"]).alias
            RedisCache().del_data(testDebugId)
            try:
                content = json.loads(debugResult['actualResult'])['content']
                if isJson(content):
                    debugResult["respBodyText"] = content
                else:
                    debugResult["respBodyText"] = ""
            except:
                debugResult["respBodyText"] = ""
            return render(
                request, "dubbo/interface/SubPages/interface_debug_page.html",
                debugResult)
Пример #2
0
def getDebugResult(request):
    langDict = getLangTextDict(request)
    startTime = time.time()
    testDebugId = request.POST.get("body")
    while True:
        if (time.time() - startTime) >= 1:
            return HttpResponse(
                ApiReturn(ApiReturn.CODE_DEBUG_TIMEOUT,
                          langDict['web']['httpDebugTimeout']).toJson())

        try:
            debugResult = json.loads(RedisCache().get_data(testDebugId))
        except Exception as e:
            print(traceback.format_exc())
            return HttpResponse(
                ApiReturn(ApiReturn.CODE_ERROR, "调试结果解析异常,请联系管理员").toJson())
        if debugResult["execStatus"] == 3 or debugResult["execStatus"] == 4:
            debugResult["alias"] = TbConfigHttp.objects.get(
                httpConfKey=debugResult["httpConfKey"]).alias
            RedisCache().del_data(testDebugId)
            addUserLog(request, "单接口管理->接口调试->获取结果->成功", "PASS")
            return render(
                request,
                "InterfaceTest/HTTPInterface/SubPages/HTTP_interface_debug_page.html",
                debugResult)
Пример #3
0
def getAllBusinessLines(request):
    businessLines = TbBusinessLine.objects.filter(state=1)
    businessLineList = []
    if len(businessLines) == 0:
        return HttpResponse(ApiReturn(code=ApiReturn.CODE_WARNING, message="没有可用的业务线 请联系管理员").toJson())
    for tmpBusinessLine in businessLines:
        businessLineList.append(tmpBusinessLine.bussinessLineName)
    return HttpResponse(ApiReturn(body=businessLineList).toJson())
Пример #4
0
def follow(request):
    operate = request.GET.get("oprate", "follow")
    mockId = request.GET.get("mockId", "")
    follower = request.session.get("loginName")
    if mockId == "":
        return HttpResponse(ApiReturn(code=ApiReturn.CODE_ERROR,message="mockId必传").toJson())
    retcode, retmsg = MockHttpService.follow(mockId,operate,follower)
    return HttpResponse(ApiReturn(code=retcode,message=retmsg).toJson())
Пример #5
0
def interfaceGetAutoFillData(request):
    interfaceAutoFillKey = request.GET.get("interfaceAutoFillKey", None)
    if interfaceAutoFillKey:
        try:
            sendParams = RedisCache().get_data(interfaceAutoFillKey)
            RedisCache().del_data(interfaceAutoFillKey)
        except Exception as e:
            return HttpResponse(ApiReturn(code=ApiReturn.CODE_ERROR, message="读取数据错误,请联系管理员").toJson())
        return HttpResponse(ApiReturn(body=sendParams).toJson())
    return HttpResponse(ApiReturn(code=ApiReturn.CODE_ERROR, message="没有找到KEY值,请联系管理员").toJson())
Пример #6
0
def getEnvVersionRelation(request):
    aliasList = json.loads(request.POST.get("aliasList", None))
    envVersionList = []
    if aliasList:
        for alias in aliasList:
            version = TbWebPortalStandardEnv.objects.get(state=1, alias=alias).version
            envVersionList.append(alias + "(" + version + ")")
        return HttpResponse(ApiReturn(body=envVersionList).toJson())
    else:
        return HttpResponse(ApiReturn(code=ApiReturn.CODE_WARNING, message="没有可用的环境, 请联系管理员").toJson())
Пример #7
0
def runContrackTask(request):
    mockId = request.GET.get("mockId")
    httpConfKey = request.GET.get("httpConfKey")
    if(mockId):
        mockInfo = MockHttpService.getInterfaceByMockId(mockId)
        if mockInfo:
            if mockInfo.interfaceIds.strip(",").strip() == "":
                return HttpResponse(ApiReturn(code=ApiReturn.CODE_ERROR, message="没有发现契约接口信息!", body=mockId + httpConfKey).toJson())
        else:
            return HttpResponse(ApiReturn(code=ApiReturn.CODE_ERROR, message="没有发现mock信息!", body=mockId + httpConfKey).toJson())
    else:
        return HttpResponse(ApiReturn(code=ApiReturn.CODE_ERROR, message="必须有mockId参数!", body=mockId + httpConfKey).toJson())

    if httpConfKey:
        pass
    else:
        return HttpResponse(ApiReturn(code=ApiReturn.CODE_ERROR, message="必须有httpConfKey参数!", body=mockId + httpConfKey).toJson())

    taskExc = TbTaskExecute()
    taskExc.taskId = "CONTRACT_TASK_%s" % mockId
    taskExc.title = "契约测试:%s" % mockInfo.title
    taskExc.taskdesc = taskExc.title
    taskExc.protocol = "HTTP"
    taskExc.businessLineGroup = "['%s']" % BusinessService.getBusinessLineNameById(mockInfo.businessLineId)
    taskExc.modulesGroup = "['%s']" % ModulesService.getModuleNameById(mockInfo.moduleId)
    taskExc.interfaceCount = len(mockInfo.interfaceIds.strip(",").split(","))
    taskExc.taskInterfaces = mockInfo.interfaceIds.strip(",")
    taskExc.caseCount = 0
    taskExc.interfaceNum = taskExc.interfaceCount

    taskExc.httpConfKey = TbConfigHttp.objects.filter(httpConfKey=httpConfKey.strip()).get()
    taskExc.execComments = "执行契约测试任务"
    taskExc.testResultMsg = ""
    taskExc.testReportUrl = ""

    taskExc.addBy = TbUser.objects.filter(loginName = request.session.get("loginName")).get()
    taskExc.execBy = TbUser.objects.filter(loginName = request.session.get("loginName")).get()
    taskExc.save(force_insert=True)

    addDataResult = dbModelToDict(taskExc)
    # 将任务执行的信息写入缓存,任务执行的前缀为 taskExecute_executeId
    RedisCache().set_data("%s_taskExecute_%s" % ("HTTP", addDataResult["id"]), "0:0:0:0:0", 60 * 60 * 12)
    RedisCache().set_data("%s_taskExecuteStatus_%s" % ("HTTP", addDataResult["id"]), "1", 60 * 60 * 12)
    # tcpin = '{"do":3,"TaskExecuteId":"%s"}' % addDataResult["id"]
    tcpin = '{"do":3,"TaskExecuteId":%s,"TaskExecuteEnv":"%s","TaskId":"%s","protocol":"HTTP"}' % (addDataResult["id"], addDataResult["httpConfKey_id"], addDataResult["taskId"])
    retApiResult = send_tcp_request(tcpin)
    if retApiResult.code != ApiReturn.CODE_OK:
        retmsg = 1
        RedisCache().del_data("%s_taskExecute_%s" % ("HTTP", addDataResult["id"]))
        RedisCache().del_data("%s_taskExecuteStatus_%s" % ("HTTP", addDataResult["id"]))
    bodyDict = {
        "taskExecuteId":taskExc.id,
        "taskId":taskExc.taskId
    }
    return HttpResponse(ApiReturn(code=ApiReturn.CODE_OK,message="ok",body=bodyDict).toJson())
Пример #8
0
def updatePwd(request):
    pwd = request.GET.get("pwd")

    m = hashlib.md5(pwd.encode(encoding='gb2312'))
    modPwd = m.hexdigest()
    try:
        UserLoginService.updatePwd(request.session.get("loginName"), modPwd)
        return HttpResponse(ApiReturn(ApiReturn.CODE_OK).toJson())
    except Exception as e:
        return HttpResponse(
            ApiReturn(ApiReturn.CODE_USER_EXCEPITON,
                      "修改失败,请联系管理员%s" % e).toJson())
Пример #9
0
def interfaceSaveEdit(request):
    postLoad = json.loads(request.POST.get("interfaceData"))
    try:
        if 'advancedPythonCode' in postLoad.keys():
            retB,retS = verifyPythonMode(postLoad['advancedPythonCode'])
            if retB == False:
                retMsg = "高级模式python代码非法:%s" % retS
                return HttpResponse(ApiReturn(ApiReturn.CODE_ERROR, retMsg, retMsg).toJson())
        retm = MockHttpService.interfaceSaveEdit(request,postLoad)
        addUserLog(request, "MOCK服务->更新MOCK[%s]->成功。" % id, "PASS")
        return HttpResponse(ApiReturn(ApiReturn.CODE_OK, message=retm).toJson())

    except Exception as e:
        logger.error(traceback.format_exc())
        return HttpResponse(ApiReturn(ApiReturn.CODE_INTERFACE_ERROR, '保存编辑失败!%s' % e).toJson())
Пример #10
0
def send_tcp_request(reqstr):
    #链接服务端ip和端口
    logger.info("TCPHOST&PORT:%s:%s" % (TCP_HOST, TCP_PORT))
    print(TCP_HOST, TCP_PORT)
    maxTryTimes = 10
    for i in range(0, maxTryTimes):
        ip_port = (TCP_HOST, TCP_PORT)
        try:
            #TCP发送
            #生成一个接口调试请求
            logger.info("开始创建tcp对象")
            sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            sk.settimeout(3)
            logger.info("创建成功")
            #请求连接服务端
            sk.connect(ip_port)
            logger.info("连接成功")
            #发送数据
            sk.sendall(bytes(reqstr, 'utf8'))
            logger.info("发送成功")
            #接受数据
            server_reply = sk.recv(1024)
            logger.info("接收成功")
            #打印接受的数据
            if str(server_reply, 'utf8') == "ok":
                logger.info("@@@@tcp发送ok:%s" % reqstr)
                return ApiReturn(ApiReturn.CODE_OK, str(server_reply, 'utf8'))
            else:
                logger.warning("@@@@tcp发送ERROR:%s == %s" %
                               (reqstr, str(server_reply, 'utf8')))
                return ApiReturn(ApiReturn.CODE_TCP_RETURN_NOT_OK,
                                 str(server_reply, 'utf8'))
        except Exception as e:
            logger.error(
                "第%d次尝试发送tcp消息\n%s\n到%s:%s发生异常。异常信息:\n%s" %
                ((i + 1), reqstr, TCP_HOST, TCP_PORT, traceback.format_exc()))
            ransleepint = random.randint(500, 5000)
            logger.info("休息%s秒后重试" % (float(ransleepint) / 1000.0))
            time.sleep(float(ransleepint) / 1000.0)
            if i == maxTryTimes - 1:
                return ApiReturn(
                    ApiReturn.CODE_TCP_EXCEPTION,
                    "尝试%d次发送tcp消息\n%s\n到Server发生异常。异常信息:\n%s" %
                    (maxTryTimes, reqstr, str(e)))
        finally:
            #关闭连接
            if sk:
                sk.close()
Пример #11
0
def getAllPassRate(request):
    allPassRate = list(TbWebPortalAllPassRate.objects.all())[-7:]
    passRateListForEnv = []
    envList = []
    passRateEnvDict = {}
    aliasList = []
    for passRate in allPassRate:
        testResultList = passRate.testResultMsg
        for testResult in json.loads(testResultList):
            if testResult["env"] not in envList:
                envList.append(testResult["env"])

    envAliasDict = WebPortalService.getAllEnvAlias()
    '''根据最新一条数据中的testResultMessage获得aliasList'''
    for envAlias in envAliasDict:
        aliasList.append(envAliasDict[envAlias])
    '''获得每个环境7天的通过'''
    for env in envList:
        passRateList = []
        for passRate in allPassRate:
            testResultList = passRate.testResultMsg
            for testResult in json.loads(testResultList):
                if env == testResult["env"]:
                    passRateList.append(testResult["passRate"])
        passRateListForEnv.append(passRateList)

    passRateEnvDict["envList"] = aliasList
    passRateEnvDict["passRateDict"] = dict(zip(aliasList, passRateListForEnv))

    return HttpResponse(ApiReturn(body=passRateEnvDict).toJson())
Пример #12
0
def sendDebugInterfaceTcpMsg(request):
    langDict = getLangTextDict(request)
    #aaabbb
    tcpStr = '{"do":1,"InterfaceDebugId":"%s","protocol":"DUBBO"}' % request.POST.get(
        "body")
    retApiResult = send_tcp_request(tcpStr)
    if retApiResult.code != ApiReturn.CODE_OK:
        debugMsg = {}
        debugMsg["execStatus"] = 4
        debugMsg["actualResult"] = str(
            retApiResult.code) + ":" + retApiResult.message
        debugMsg["assertResult"] = str(
            retApiResult.code) + ":" + retApiResult.message
        debugMsg["modTime"] = datetime.datetime.now()
        DubboInterfaceDebugService.setDebugFail(
            request.session.get("loginName"), debugMsg)
        addUserLog(
            request,
            "DUBBO单接口管理->接口调试->发送TCP请求->失败,原因\n%s" % retApiResult.toJson(),
            "FAIL")
        return HttpResponse(retApiResult.toJson())
    else:
        addUserLog(request, "DUBBO单接口管理->接口调试->发送TCP请求->成功", "PASS")
        return HttpResponse(
            ApiReturn(ApiReturn.CODE_OK,
                      langDict['web']['httpInterfaceDebugSuccess']).toJson())
Пример #13
0
def getAllEnv(request):
    allEnvlist = TbWebPortalStandardEnv.objects.filter(state=1, actionIsShow=1).order_by("lineSort")
    aliasList = []
    for env in allEnvlist:
        if env.alias not in aliasList:
            aliasList.append(env.alias + "(" + env.version + ")")
    return HttpResponse(ApiReturn(body=aliasList).toJson())
Пример #14
0
def interfaceDebugAdd(request):
    testDebugId = "interfaceDebug_%s_%s" % (request.session.get("loginName"),
                                            int(time.time() * 1000))
    if request.method != 'POST':
        addUserLog(request, "DUBBO单接口管理->添加接口调试->请求方式错误", "FAIL")
        return HttpResponse(
            ApiReturn(ApiReturn.CODE_METHOD_ERROR, "请求方式错误", "").toJson())
    data = json.loads(request.POST.get("interfaceData"))
    data['version'] = request.session.get("version")
    langDict = getLangTextDict(request)
    try:
        # addDebugRes = DubboInterfaceDebugService.interfaceDebugAdd(data,request.session.get("loginName"))
        data['actualResult'] = ''
        data['assertResult'] = ''
        data['testResult'] = "NOTRUN"
        data['execStatus'] = 1
        data['beforeExecuteTakeTime'] = 0
        data['executeTakeTime'] = 0
        data['afterExecuteTakeTime'] = 0
        data['totalTakeTime'] = 0
        data['businessLineId'] = data["businessLineId_id"]
        data['moduleId'] = data["moduleId_id"]
        data['httpConfKey'] = data["httpConfKey_id"]
        RedisCache().set_data(testDebugId, json.dumps(data), 60 * 60)
        # if isinstance(addDebugRes,str):
        #     return HttpResponse(ApiReturn(ApiReturn.CODE_INTERFACE_DEBUG_ADD_EXCEPITON,
        #                                   langDict['dubbo']['interfaceDebugAddError'],
        #                                   "%s" % str(addDebugRes)).toJson())
        # else:
        #     debugId = addDebugRes.id

    except Exception as e:
        logging.error(traceback.format_exc())
        addUserLog(
            request, "DUBBO单接口管理->添加接口调试->插入失败,原因\n%s" %
            ApiReturn(ApiReturn.CODE_INTERFACE_DEBUG_ADD_EXCEPITON,
                      langDict['web']['httpInterfaceDebugAddException'],
                      "%s" % e).toJson(), "FAIL")
        return HttpResponse(
            ApiReturn(ApiReturn.CODE_INTERFACE_DEBUG_ADD_EXCEPITON,
                      langDict['web']['httpInterfaceDebugAddException'],
                      "%s" % e).toJson())

    addUserLog(request, "DUBBO单接口管理->添加接口调试->成功", "PASS")
    return HttpResponse(
        ApiReturn(ApiReturn.CODE_OK, langDict['web']['httpInterfaceDebugAdd'],
                  str(testDebugId)).toJson())
Пример #15
0
def interfaceDel(request):
    id = request.GET.get("id")
    try:
        if VersionService.isCurrentVersion(request):
            interfaceData = MockHttpService.getInterfaceForId(request.GET.get("id"))
        else:
            interfaceData = MockHttpService.getVersionInterfaceForId(request.GET.get("id"))

    except Exception as e:
        print(traceback.format_exc())
        return HttpResponse(ApiReturn(ApiReturn.CODE_INTERFACE_ERROR, "参数id错误 %s" % e).toJson())

    if MockHttpService.delInterfaceForId(request,id) == 1:
        addUserLog(request, "MOCK服务->删除MOCK[%s]->成功。" % id, "PASS")
        return HttpResponse(ApiReturn(ApiReturn.CODE_OK).toJson())
    else:
        return HttpResponse(ApiReturn(ApiReturn.CODE_INTERFACE_ERROR).toJson())
Пример #16
0
def getRecentSevenDays(request):
    now = datetime.date.today().strftime('%Y-%m-%d')
    dateList = [now]
    numList = [-1, -2, -3, -4, -5, -6]
    for num in numList:
        date = (datetime.date.today() + datetime.timedelta(days=num)).strftime('%Y-%m-%d')
        dateList.append(date)
    return HttpResponse(ApiReturn(body=dateList).toJson())
Пример #17
0
def interfaceAdd(request):
    # 当前版本使用历史代码,不更新。
    if request.method != 'POST':
        return HttpResponse(ApiReturn(ApiReturn.CODE_METHOD_ERROR, "请求方式错误", "").toJson())
    data = json.loads(request.POST.get("interfaceData"))
    try:
        if 'advancedPythonCode' in data.keys():
            retB,retS = verifyPythonMode(data['advancedPythonCode'])
            if retB == False:
                retMsg = "高级模式python代码非法:%s" % retS
                return HttpResponse(ApiReturn(ApiReturn.CODE_ERROR, retMsg, retMsg).toJson())

        MockHttpService.addHttpMockInfo(data, request.session.get("loginName"))
    except Exception as e:
        logger.error(traceback.format_exc())
        return HttpResponse(ApiReturn(ApiReturn.CODE_INTERFACE_ERROR, "添加接口错误", "Failed: %s" % e).toJson())
    return HttpResponse(ApiReturn(ApiReturn.CODE_OK, "添加成功", "").toJson())
Пример #18
0
 def catch_exception_wrapper(*args, **kwargs):
     try:
         if is_sql_inject_request(args[0]):
             return HttpResponse(
                 ApiReturn(code=ApiReturn.CODE_EXCEPTION,
                           message="有SQL注入风险,请检查搜索条件!",
                           body="").toJson())
         else:
             funcRet = func(*args, **kwargs)
             return funcRet
     except Exception as e:
         retMsg = "[EXCEPTION]: 函数[%s]异常:%s" % (func.__name__, e)
         logging.error(traceback.format_exc())
         return HttpResponse(
             ApiReturn(code=ApiReturn.CODE_EXCEPTION,
                       message=retMsg,
                       body=traceback.format_exc()).toJson())
Пример #19
0
def updateInterfaceLevel(request):
    userToken = request.GET.get("token", "")

    if userToken == "":
        return HttpResponse(ApiReturn(ApiReturn.CODE_ERROR, message="toekn为空").toJson())
    try:
        userData = TbUser.objects.get(token=userToken)
    except Exception as e:
        return HttpResponse(ApiReturn(ApiReturn.CODE_ERROR, message="token错误,未查询到用户").toJson())

    interfaceId = request.GET.get("interfaceId", "")
    if interfaceId == "":
        return HttpResponse(ApiReturn(ApiReturn.CODE_ERROR, message="interfaceId为必填参数").toJson())
    try:
        interfaceData = TbHttpInterface.objects.get(interfaceId=interfaceId, state=1)
    except Exception as e:
        return HttpResponse(ApiReturn(ApiReturn.CODE_ERROR, message="InterfaceId 参数错误").toJson())

    if userData.loginName != interfaceData.addBy.loginName:
        return HttpResponse(ApiReturn(ApiReturn.CODE_ERROR, message="只能更新自己的接口").toJson())

    levelDict = {"高": 0, "中": 5, "低": 9}
    levelText = request.GET.get("level", "中")

    if levelText in levelDict.keys():
        level = levelDict[levelText]
    else:
        return HttpResponse(ApiReturn(ApiReturn.CODE_ERROR, message="level参数的值为【高】、【中】、【低】").toJson())

    interfaceData.caselevel = level
    interfaceData.save(force_update=True)
    return HttpResponse(ApiReturn().toJson())
Пример #20
0
def interfaceGetSyncTestCaseStep(request):
    id = request.GET.get("id")
    if VersionService.isCurrentVersion(request):
        interfaceData = dbModelToDict(MockHttpService.getInterfaceForId(id))
        syncList = syncDelTipList(interfaceData)
    else:
        interfaceData = dbModelToDict(HTTP_interfaceService.getVersionInterfaceForId(id))
        syncList = syncVersionDelTipList(interfaceData, VersionService.getVersionName(request))
    return HttpResponse(ApiReturn(body=syncList).toJson())
Пример #21
0
def queryPeopleInterface(request):
    langDict = getLangTextDict(request)
    pageNum = int(request.GET.get("num"))
    attrData = HTTP_interfaceService.queryPeopleInterface(
        pageNum, commonWebConfig.queryPeopleInterface,
        request.session.get("loginName"))
    return HttpResponse(
        ApiReturn(ApiReturn.CODE_OK, langDict["web"]["httpInterfaceSuccess"],
                  attrData).toJson())
Пример #22
0
def getBusinessLineNameId(request):
    resultList = []
    businessLines = TbWebPortalBusinessLine.objects.filter(isShow=1, state=1).order_by("level")
    for businessLine in businessLines:
        resultDict = {}
        id = businessLine.bussinessLine + "ActionPassrateChart"
        resultDict["name"] = businessLine.bussinessLine
        resultDict["id"] = id
        resultList.append(resultDict)
    return HttpResponse(ApiReturn(body=resultList).toJson())
Пример #23
0
 def catch_exception_wrapper(*args, **kwargs):
     try:
         funcRet = func(*args, **kwargs)
         return funcRet
     except Exception as e:
         retMsg = "[EXCEPTION]: 函数[%s]异常:%s" % (func.__name__, e)
         logging.error(traceback.format_exc())
         return HttpResponse(
             ApiReturn(code=ApiReturn.CODE_EXCEPTION,
                       message=retMsg,
                       body=traceback.format_exc()).toJson())
Пример #24
0
def getContrackTaskRecentExecInfos(request):
    mockId = request.GET.get("mockId")
    taskId = "CONTRACT_TASK_%s" % mockId
    retList = executeSqlGetDict(
        "select * from tb_task_execute where taskId='%s' order by addTime desc limit 0,10"
        % taskId)

    for pageData in retList:
        execProgressDataLen = pageData["execProgressData"].split(":")
        try:
            pageData["execPercent"] = "pass"
            pageData["execColor"] = "success"
            pageData["executeCount"] = (int(execProgressDataLen[1]) +
                                        int(execProgressDataLen[2]) +
                                        int(execProgressDataLen[3]))
            pageData["passCount"] = int(execProgressDataLen[1])
            pageData["failCount"] = int(execProgressDataLen[2])
            pageData["errorCount"] = int(execProgressDataLen[3])
            pageData["passPercent"] = int(
                (pageData["executeCount"] / int(execProgressDataLen[0])) * 100)

            if int(execProgressDataLen[2]) > 0 or int(
                    execProgressDataLen[3]) > 0:
                pageData["execPercent"] = "fail"
                pageData["execColor"] = "danger"
        except ZeroDivisionError:
            pageData["passPercent"] = 0

        #版本号
        if pageData["version"] == "CurrentVersion":
            pageData["versionText"] = request.session.get("CurrentVersion")
        else:
            pageData["versionText"] = pageData["version"]
        #执行备注
        if pageData["execComments"] == "":
            pageData["execComments"] = "-"

        #保存到历史记录
        if pageData["isSaveHistory"] == 1:
            pageData["isSaveHistoryText"] = "是"
        else:
            pageData["isSaveHistoryText"] = "否"

        #发送报告邮件
        if str(pageData["isSendEmail"])[0] == "1":
            pageData["isSendEmailText"] = "是"
        else:
            pageData["isSendEmailText"] = "否"

    return HttpResponse(
        ApiReturn(code=ApiReturn.CODE_OK, message="ok", body=retList).toJson())
Пример #25
0
def send_tcp_request(reqstr):
    #链接服务端ip和端口
    logging.debug("TCPHOST&PORT:%s:%s" % (TCP_HOST, TCP_PORT))
    print(TCP_HOST, TCP_PORT)
    maxTryTimes = 10
    for i in range(0, maxTryTimes):
        ip_port = (TCP_HOST, TCP_PORT)
        try:
            #TCP发送
            #生成一个接口调试请求
            sk = socket.socket()
            #请求连接服务端
            sk.connect(ip_port)
            #发送数据
            sk.sendall(bytes(reqstr, 'utf8'))
            #接受数据
            server_reply = sk.recv(1024)
            #打印接受的数据
            if str(server_reply, 'utf8') == "ok":
                return ApiReturn(ApiReturn.CODE_OK, str(server_reply, 'utf8'))
            else:
                return ApiReturn(ApiReturn.CODE_TCP_RETURN_NOT_OK,
                                 str(server_reply, 'utf8'))
        except Exception as e:
            logging.error(
                "第%d次尝试发送tcp消息\n%s\n到%s:%s发生异常。异常信息:\n%s" %
                ((i + 1), reqstr, TCP_HOST, TCP_PORT, traceback.format_exc()))
            ransleepint = random.randint(500, 5000)
            time.sleep(float(ransleepint) / 1000.0)
            if i == maxTryTimes - 1:
                return ApiReturn(
                    ApiReturn.CODE_TCP_EXCEPTION,
                    "尝试%d次发送tcp消息\n%s\n到Server发生异常。异常信息:\n%s" %
                    (maxTryTimes, reqstr, str(e)))
        finally:
            #关闭连接
            if sk:
                sk.close()
Пример #26
0
def updateTaskToCurrentVersion(request):
    try:
        oldVersion = request.GET.get("version", "")
        if oldVersion == "":
            oldVersion = TbVersion.objects.filter(
                state=1).order_by("-addTime")[1].versionName
        currentVersion = TbVersion.objects.get(type=2).versionName
        taskList = dbModelListToListDict(
            TbWebPortalStandardTask.objects.filter(version=oldVersion))
        for index in taskList:
            tbModel = TbWebPortalStandardTask()
            tbModel.version = currentVersion
            tbModel.businessLine = index["businessLine"]
            tbModel.team = index["team"]
            tbModel.taskId = index["taskId"]
            tbModel.head = index["head"]
            tbModel.save()
    except Exception as e:
        return HttpResponse(
            ApiReturn(code=ApiReturn.CODE_ERROR,
                      message="添加失败%s " % e).toJson())
    return HttpResponse(
        ApiReturn(code=ApiReturn.CODE_OK, message="添加成功").toJson())
Пример #27
0
def getEnvVersion(request):

    httpConfKey = request.GET.get("httpConfKey","")
    if httpConfKey:
        result = dbModelListToListDict(TbWebPortalStandardEnv.objects.filter(state=1,httpConfKey=httpConfKey))
    else:
        result = dbModelListToListDict(TbWebPortalStandardEnv.objects.filter(state=1))
    for resultIndex in result:
        versionData = TbVersion.objects.get(versionName=resultIndex["version"])
        if versionData:
            versionDict = dbModelToDict(versionData)
            if versionDict["type"] == 2:
                resultIndex["invokeVersion"] = "CurrentVersion"
            else:
                resultIndex["invokeVersion"] = resultIndex["version"]
    return HttpResponse(ApiReturn(body=result).toJson())
Пример #28
0
def getInterfaceDataForId(request):
    langDict = getLangTextDict(request)
    serviceConf = ServiceConfService.queryServiceConfSort(request)

    # 根据版本判断应该从哪个表里取数据 王吉亮添加于20180224
    if VersionService.isCurrentVersion(request):
        getDBData = MockHttpService.getInterfaceForIdToDict(request.GET.get("id"))
        interfaceIdList = getDBData['interfaceIds'].strip(",").split(',')
        interfaceList = []
        for tmpInterfaceId in interfaceIdList:
            if tmpInterfaceId.strip() != "":
                interfaceList.append(dbModelToDict(HTTP_interfaceService.getInterfaceByInterfaceId(tmpInterfaceId.strip())))
        getDBData['interfaceList'] = interfaceList
    else:
        getDBData = MockHttpService.getVersionInterfaceForIdToDict(request.GET.get("id"),request.session.get("version"))
    return HttpResponse(ApiReturn(ApiReturn.CODE_OK, langDict["web"]["httpInterfaceSuccess"], json.dumps(getDBData)).toJson())
Пример #29
0
def updateWebPortalData(request):
    tmpSrcRoot = "%s/AutotestWebD/apps/webportal/scripts" % (releaseDir)

    resultList = []
    for index in WebPortalService.scriptList:
        # if "openApi" in index:
        #     continue
        thisResule = {"code": 10000, "msg": "%s 执行成功!" % index}
        output = os.popen('cd %s && python3 %s' % (tmpSrcRoot, index))
        outStr = output.read()
        if "done!" not in outStr:
            thisResule = {
                "code": 10001,
                "msg": "%s  执行失败!" % index,
                "body": 'cd %s && python3 %s' % (tmpSrcRoot, index)
            }
        resultList.append(thisResule)
    return HttpResponse(ApiReturn(resultList).toJson())
Пример #30
0
def getBusinessLinesActionPassRate(request):
    resultDict = {}
    resultList = []
    envAliasDict = WebPortalService.getAllEnvAlias()
    businessLines = TbWebPortalBusinessLine.objects.filter(
        isShow=1, state=1).order_by("level")
    for businessLine in businessLines:
        allPassRate = list(
            TbWebPortalBusinessLineActionPassRate.objects.filter(
                businessLine=businessLine.bussinessLine, state=1))[-7:]
        passRateListForEnv = []
        envList = []
        passRateEnvDict = {}
        aliasList = []

        for passRate in allPassRate:
            testResultList = passRate.testResultMsg
            for testResult in json.loads(testResultList):
                if testResult["env"] not in envList:
                    envList.append(testResult["env"])

        for envAlias in envAliasDict:
            aliasList.append(envAliasDict[envAlias])

        for env in envList:
            passRateList = []
            for passRate in allPassRate:
                testResultList = passRate.testResultMsg
                for testResult in json.loads(testResultList):
                    if env == testResult["env"]:
                        passRateList.append(testResult["passRate"])
            passRateListForEnv.append(passRateList)

        passRateEnvDict["envList"] = aliasList
        passRateEnvDict["passRateDict"] = dict(
            zip(aliasList, passRateListForEnv))

        resultDict[businessLine.bussinessLine] = passRateEnvDict

    resultList.append(resultDict)

    return HttpResponse(ApiReturn(body=resultList).toJson())