*** Settings *** Test Teardown TeardownDelete ${reportId} ${report_url} ${chartId} ${chart_url} ${datasetId} ${dataset_url} ${resultId} ${result_url} Force Tags tsg_bf_api chartlibrary_create report Library OperatingSystem Resource ../../../03-Variable/BifangApiVariable.txt Resource ../Common.robot Resource ../offline_stat_report/ApiRequest1.robot Library Collections Library RequestsLibrary Library String Resource ../../../03-Variable/Bifangapivariable.txt Resource ForTwoKeywords_new.robot *** Variables *** ${dataset_url} /${version}/report/dataset ${datasetId} ${EMPTY} ${reportId} ${EMPTY} ${report_url} /${version}/report/offlinejob ${chartId} ${EMPTY} ${chart_url} /${version}/report/chart ${result_url} /${version}/report/offlinejob/result ${resultId} ${EMPTY} *** Keywords *** Time-granularity [Arguments] ${starttime} ${endtime} ${1} ${4} str2sec ${starttime} ${2} ${5} str2sec ${endtime} log ${4} log ${5} ${6} evaluate (int(${5})-int(${4}))*86400 ${7} evaluate int(${6})+int(${2}) ${3} evaluate int(${7})-int(${1}) log ${3} [Return] ${3} Dashboard-Traffic-new # Traffics-带宽统计 统计类型:总:bytes packets sessions bifang和report对比 [Documentation] ... 描述:Traffic-Bytes统计 ... 参数:starttime(必传,开始时间紧) ... endtime(必传,结束时间 ... 返回:对比结果 [Arguments] ${starttime} ${endtime} ${name} ${data} Set Variable startTime=${startTime}&endTime=${endTime} ${url1} Set Variable report/traffic/statisticsbyunit ${bfResponse} ForTwoKeywords_new.Traffic BF Request ${url1} ${data} ${trafficpackets} Set Variable ${bfResponse['data']['trafficTotalPackets']} ${trafficbytes} Set Variable ${bfResponse['data']['trafficTotalBytes']} ${trafficsession} Set Variable ${bfResponse['data']['sessions']} #新建DataSet #${name} Set Variable Report_Result-001 BasePostRequestOK ${dataset_url} {"list":{"name":"${name}","logType":"connection_record_log","filterConnector":"and","havingConnector":"and","groupColumnList":[{"name":"common_recv_time"}],"queryColumnList":[{"name":"common_recv_time","expression":"","label":"Receive Time"},{"name":"common_s2c_pkt_num,common_c2s_pkt_num","expression":"sum","label":"Packets Received+Packets Sent","expressionList":[{"label":"sum","value":"sum"},{"label":"min","value":"min"},{"label":"max","value":"max"},{"label":"avg","value":"avg"},{"label":"count","value":"count"}]},{"name":"common_s2c_byte_num,common_c2s_byte_num","expression":"sum","label":"Bytes Received+Bytes Sent","expressionList":[{"label":"sum","value":"sum"},{"label":"min","value":"min"},{"label":"max","value":"max"},{"label":"avg","value":"avg"},{"label":"count","value":"count"}]},{"name":"common_log_id","expression":"count","label":"sessions","expressionList":[]}],"filterConditionList":[],"havingConditionList":[]}} #根据name查询出该Dataset的id ${response} BaseGetRequestOK ${dataset_url} pageSize=20&pageNo=1&id=&name=${name}&logType=&opStartTime=&opEndTime=&opUser= ${datasetId} Set Variable ${response}[data][list][0][id] #根据DataSet的id,新建Chart,Lien图形表 BasePostRequestOK ${chart_url} {"list":{"id":null,"name":"${name}","description":"","datasetId":${datasetId},"chartType":"line","dataTop":0,"orderBy":"","orderDesc":0,"drilldownTop":0,"includeOther":false,"timeline":{"dataBinding":"Receive Time","label":"","format":"Time"},"line":[{"dataBinding":"Packets Received+Packets Sent","type":"Line Up","format":"Default","legend":"Packets Received+Packets Sent"},{"dataBinding":"Bytes Received+Bytes Sent","type":"Line Up","format":"Default","legend":"Bytes Received+Bytes Sent"},{"dataBinding":"sessions","type":"Line Up","format":"Default","legend":"sessions"}],"groupBy":null}} #根据name查询出该Chart的id ${response1} BaseGetRequestOK ${chart_url} pageSize=20&pageNo=1&id=&name=${name}&opUser= ${chartId} Set Variable ${response1}[data][list][0][id] #新建Report,时间计划为Today,图表引用Line。 BasePostRequestOK ${report_url} {"reportJobList":{"rangeType":"customize","rangeInterval":1,"rangeUnit":"","jobName":"${name}","scheduleId":"","chartList":[{"chartId":${chartId},"timeGranulartiy":5,"timeUnit":"minute","disabled":false}],"isNotice":0,"noticeMethod":"","receivers":[""],"receiver":"","startTime":"${starttime}","endTime":"${endtime}","filterConnector":"and","filterCondition":[]}} #查询Report的id ${response1} BaseGetRequestOK ${report_url} pageSize=20&pageNo=1&jobIds=&jobName=${name}&opStartTime=&opEndTime=&opUser=&scheduleId= ${reportId} Set Variable ${response1}[data][list][0][jobId] #查询Report结果的状态,并判断状态结果,如果状态是执行成功,查看report结果内容 FOR ${i} IN RANGE 50 sleep 10 #report执行状态查询 ${response1} BaseGetRequestOK ${result_url} jobId=${reportId} ${status} Set Variable ${response1}[data][list][0][status] ${resultId} Set Variable ${response1}[data][list][0][resultId] run keyword if "${status}"=="0" log non-execution ... ELSE IF "${status}"=="1" log executing ... ELSE IF "${status}"=="2" Exit For Loop ... ELSE log Exec failure END #Report报表详情查询 ${response1} BaseGetRequestOK ${result_url} resultId=${resultId}&jobId=${reportId} ${startTime1} Set Variable ${response1}[data][list][0][startTime] ${endTime1} Set Variable ${response1}[data][list][0][endTime] ${response2} BaseGetRequestOK /v1/report/offlinejob/result/traffic startTime=${startTime1}&endTime=${endTime1} ${sessions} Set Variable ${response2}[data][list][0][total_new_sessions] ${bytes} Set Variable ${response2}[data][list][0][total_bytes_transferred] #${Time-granularity} Time-granularity ${starttime} ${endtime} ${packets} Set Variable ${response2}[data][list][0][total_packets_transferred] ${number} evaluate (int(${sessions})-int(${trafficsession}))/int(${sessions}) ${number1} evaluate (int(${bytes})-int(${trafficbytes}))/int(${bytes}) ${number2} evaluate (int(${packets})-int(${trafficpackets}))/int(${packets}) Should Be True ${number}<=${contrast} Should Be True ${number1}<=${contrast} Should Be True ${number2}<=${contrast} [Return] OK SessionStatistics-NewLive-new # dashboard界面新建和活跃连接数统计 bifang和bigData对比 [Documentation] ... 描述:Session-NewLive统计(新建和存活的链接数) ... 参数:starttime(必传,开始时间紧) ... endtime(必传,结束时间 ... 返回:对比结果 [Arguments] ${starttime} ${endtime} ${data} Set Variable startTime=${startTime}&endTime=${endTime} ${url1} Set Variable report/traffic/sessions/statisticsbytype ${bfResponse} trafficBFRequest ${url1} ${data} ${newCount} Set Variable ${bfResponse['data']['newCount']} ${liveCount} Set Variable ${bfResponse['data']['liveCount']} #新建DataSet #${name} Set Variable Report_Result-001 BasePostRequestOK ${dataset_url} {"list":{"name":"${name}","logType":"connection_record_log","filterConnector":"and","havingConnector":"and","groupColumnList":[{"name":"common_recv_time"}],"queryColumnList":[{"name":"common_recv_time","expression":"","label":"Receive Time"},{"name":"common_s2c_pkt_num,common_c2s_pkt_num","expression":"sum","label":"Packets Received+Packets Sent","expressionList":[{"label":"sum","value":"sum"},{"label":"min","value":"min"},{"label":"max","value":"max"},{"label":"avg","value":"avg"},{"label":"count","value":"count"}]},{"name":"common_s2c_byte_num,common_c2s_byte_num","expression":"sum","label":"Bytes Received+Bytes Sent","expressionList":[{"label":"sum","value":"sum"},{"label":"min","value":"min"},{"label":"max","value":"max"},{"label":"avg","value":"avg"},{"label":"count","value":"count"}]},{"name":"common_log_id","expression":"count","label":"sessions","expressionList":[]}],"filterConditionList":[],"havingConditionList":[]}} #根据name查询出该Dataset的id ${response} BaseGetRequestOK ${dataset_url} pageSize=20&pageNo=1&id=&name=${name}&logType=&opStartTime=&opEndTime=&opUser= ${datasetId} Set Variable ${response}[data][list][0][id] #根据DataSet的id,新建Chart,Lien图形表 BasePostRequestOK ${chart_url} {"list":{"id":null,"name":"${name}","description":"","datasetId":${datasetId},"chartType":"line","dataTop":0,"orderBy":"","orderDesc":0,"drilldownTop":0,"includeOther":false,"timeline":{"dataBinding":"Receive Time","label":"","format":"Time"},"line":[{"dataBinding":"Packets Received+Packets Sent","type":"Line Up","format":"Default","legend":"Packets Received+Packets Sent"},{"dataBinding":"Bytes Received+Bytes Sent","type":"Line Up","format":"Default","legend":"Bytes Received+Bytes Sent"},{"dataBinding":"sessions","type":"Line Up","format":"Default","legend":"sessions"}],"groupBy":null}} #根据name查询出该Chart的id ${response1} BaseGetRequestOK ${chart_url} pageSize=20&pageNo=1&id=&name=${name}&opUser= ${chartId} Set Variable ${response1}[data][list][0][id] #新建Report,时间计划为Today,图表引用Line。 BasePostRequestOK ${report_url} {"reportJobList":{"rangeType":"customize","rangeInterval":1,"rangeUnit":"","jobName":"${name}","scheduleId":"","chartList":[{"chartId":${chartId},"timeGranulartiy":5,"timeUnit":"minute","disabled":false}],"isNotice":0,"noticeMethod":"","receivers":[""],"receiver":"","startTime":"${starttime}","endTime":"${endtime}","filterConnector":"and","filterCondition":[]}} #查询Report的id ${response1} BaseGetRequestOK ${report_url} pageSize=20&pageNo=1&jobIds=&jobName=${name}&opStartTime=&opEndTime=&opUser=&scheduleId= ${reportId} Set Variable ${response1}[data][list][0][jobId] #查询Report结果的状态,并判断状态结果,如果状态是执行成功,查看report结果内容 FOR ${i} IN RANGE 50 sleep 10 #report执行状态查询 ${response1} BaseGetRequestOK ${result_url} jobId=${reportId} ${status} Set Variable ${response1}[data][list][0][status] ${resultId} Set Variable ${response1}[data][list][0][resultId] run keyword if "${status}"=="0" log non-execution ... ELSE IF "${status}"=="1" log executing ... ELSE IF "${status}"=="2" Exit For Loop ... ELSE log Exec failure END #Report报表详情查询 ${response1} BaseGetRequestOK ${result_url} resultId=${resultId}&jobId=${reportId} log 11111111111111${response1}[data][list][0] ${startTime1} Set Variable ${response1}[data][list][0][startTime] ${endTime1} Set Variable ${response1}[data][list][0][endTime] ${response2} BaseGetRequestOK /v1/report/offlinejob/result/traffic startTime=${startTime1}&endTime=${endTime1} ${sessions} Set Variable ${response2}[data][list][0][total_new_sessions] ${bytes} Set Variable ${response2}[data][list][0][average_bytes_per_second] ${packets} Set Variable ${response2}[data][list][0][average_packets_per_second] log ${sessions} [Return] OK Dashboard-Traffic-packets # Traffics-带宽统计 统计类型:packets bifang和bigData对比 Traffic IN/OUT [Documentation] ... 描述:Traffic-packets统计 ... 参数:starttime(必传,开始时间紧) ... endtime(必传,结束时间 ... 返回:对比结果 [Arguments] ${starttime} ${endtime} ${data} Set Variable startTime=${startTime}&endTime=${endTime}&statisticsUnit=packets ${url1} Set Variable report/traffic/statisticsbyunit ${bfResponse} TrafficBFRequest ${url1} ${data} ${trafficInPackets} Set Variable ${bfResponse['data']['trafficInPackets']} ${trafficOutPackets} Set Variable ${bfResponse['data']['trafficOutPackets']} Create Session bdapi http://${bigDataIP}:${bigDataPort} ${sql} Set Variable select sum(total_in_packets) as traffic_in_packets, sum(total_out_packets) as traffic_out_packets from traffic_metrics_log where __time >= '${startTime}' and __time < '${endTime}' ${remoteResponse} Get Request bdapi ?query=${sql} ${response} to json ${remoteResponse.content} Should Be Equal As Strings ${remoteResponse.status_code} 200 Should Be Equal As Strings ${response['status']} 200 ${traffic_in_packets1} Set Variable ${response['data'][0]['traffic_in_packets']} ${traffic_out_packets1} Set Variable ${response['data'][0]['traffic_out_packets']} Should Be True ${trafficInPackets}==${traffic_in_packets1} Should Be True ${trafficOutPackets}==${traffic_out_packets1} [Return] OK Dashboard-Traffic-sessions # Traffics-带宽统计 统计类型:sessions bifang和bigData对比 Traffic IN/OUT [Documentation] ... 描述:Traffic-sessions统计 ... 参数:starttime(必传,开始时间紧) ... endtime(必传,结束时间 ... 返回:对比结果 [Arguments] ${starttime} ${endtime} ${data} Set Variable startTime=${startTime}&endTime=${endTime}&statisticsUnit=sessions ${url1} Set Variable report/traffic/statisticsbyunit ${bfResponse} trafficBFRequest ${url1} ${data} ${sessions} Set Variable ${bfResponse['data']['sessions']} Create Session bdapi http://${bigDataIP}:${bigDataPort} ${sql} Set Variable select sum(new_conn_num) as sessions from traffic_metrics_log where __time >= '${startTime}' and __time < '${endTime}' ${remoteResponse} Get Request bdapi ?query=${sql} ${response} to json ${remoteResponse.content} Should Be Equal As Strings ${remoteResponse.status_code} 200 Should Be Equal As Strings ${response['status']} 200 ${sessions1} Set Variable ${response['data'][0]['sessions']} Should Be True ${sessions}==${sessions1} [Return] OK Dashboard-Traffic-trend-bytes # Traffics-带宽趋势 统计类型:bytes bifang和bigData对比 Traffic IN/OUT [Documentation] ... 描述:Traffic-trend-bytes ... 参数:starttime(必传,开始时间紧) ... endtime(必传,结束时间 ... timeGranularity(非必传,时间粒度 ) ... limit(非必传,限制条数) ... 返回:对比结果 [Arguments] ${starttime} ${endtime} ${timeGranularity} ${limit} ${data} Set Variable startTime=${startTime}&endTime=${endTime}&statisticsUnit=bytes&timeGranularity=${timeGranularity}&limit=${limit} ${url1} Set Variable report/traffic/statisticsbyunit ${bfResponse} trafficBFRequest ${url1} ${data} @{bytesOutList1} Set Variable ${bfResponse['data']['trafficOutBytesList']} @{bytesInList1} Set Variable ${bfResponse['data']['trafficInBytesList']} Create Session bdapi http://${bigDataIP}:${bigDataPort} ${sql} Set Variable (select DATE_FORMAT(FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(__time)/${timeGranularity})*${timeGranularity}),'%Y-%m-%d %H:%i:%s') as stat_time, 'traffic_in_bytes' as type, sum(total_in_bytes) as bytes from traffic_metrics_log where \ __time >= '${startTime}' \ and __time < '${endTime}' \ group by DATE_FORMAT(FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(__time)/${timeGranularity})*${timeGranularity}),'%Y-%m-%d %H:%i:%s') limit ${limit}) union all (select DATE_FORMAT(FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(__time)/${timeGranularity})*${timeGranularity}),'%Y-%m-%d %H:%i:%s') as stat_time, 'traffic_out_bytes' as type, sum(total_out_bytes) as bytes from traffic_metrics_log where \ __time >= '${startTime}' and __time < '${endTime}' group by DATE_FORMAT(FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(__time)/${timeGranularity})*${timeGranularity}),'%Y-%m-%d %H:%i:%s') limit ${limit}) ${remoteResponse} Get Request bdapi ?query=${sql} ${response} to json ${remoteResponse.content} Should Be Equal As Strings ${remoteResponse.status_code} 200 Should Be Equal As Strings ${response['status']} 200 @{bytesList2} Set Variable ${response['data']} ${typeIn} Set Variable traffic_in_bytes ${typeOut} Set Variable traffic_out_bytes ${types} Set Variable bytes Run Keyword If ${bytesOutList1}!=[] and ${bytesList2}!=[] ForToTrafficTrend ${bytesOutList1} ${typeOut} ${types} ${bytesList2} Run Keyword If ${bytesInList1}!=[] and ${bytesList2}!=[] ForToTrafficTrend ${bytesInList1} ${typeIn} ${types} ${bytesList2} Dashboard-Traffic-trend-packets # Traffics-带宽趋势 统计类型:packets bifang和bigData对比 Traffic IN/OUT [Documentation] ... 描述:Traffic-trend-packets ... 参数:starttime(必传,开始时间紧) ... endtime(必传,结束时间 ... timeGranularity(非必传,时间粒度 ) ... limit(非必传,限制条数) ... 返回:对比结果 [Arguments] ${starttime} ${endtime} ${timeGranularity} ${limit} ${data} Set Variable startTime=${startTime}&endTime=${endTime}&statisticsUnit=packets&timeGranularity=${timeGranularity}&limit=${limit} ${url1} Set Variable report/traffic/statisticsbyunit ${bfResponse} trafficBFRequest ${url1} ${data} @{packetsOutList1} Set Variable ${bfResponse['data']['trafficOutPacketsList']} @{packetsInList1} Set Variable ${bfResponse['data']['trafficInPacketsList']} Create Session bdapi http://${bigDataIP}:${bigDataPort} #${sql} Set Variable (select DATE_FORMAT(FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(__time)/${timeGranularity})*${timeGranularity}),'%Y-%m-%d %H:%i:%s') as stat_time, 'traffic_in_packets' as type, sum(total_in_packets) as packets from traffic_metrics_log where \ __time >= '${startTime}' and __time < '${endTime}' group by DATE_FORMAT(FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(__time)/${timeGranularity})*${timeGranularity}),'%Y-%m-%d %H:%i:%s') union all select DATE_FORMAT(FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(__time)/${timeGranularity})*${timeGranularity}),'%Y-%m-%d %H:%i:%s') as stat_time, 'traffic_out_packets' as type, sum(total_out_packets) as packets from traffic_metrics_log where __time >= '${startTime}' and __time < '${endTime}' group by DATE_FORMAT(FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(__time)/${timeGranularity})*${timeGranularity}),'%Y-%m-%d %H:%i:%s')) #${remoteResponse} Get Request bdapi ?query=${sql} ${sql} Set Variable (select DATE_FORMAT(FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(__time)/${timeGranularity})*${timeGranularity}),'%Y-%m-%d %H:%i:%s') as stat_time, 'traffic_in_packets' as type, sum(total_in_packets) as packets from traffic_metrics_log where \ __time >= '${startTime}' and __time < '${endTime}' group by DATE_FORMAT(FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(__time)/${timeGranularity})*${timeGranularity}),'%Y-%m-%d %H:%i:%s') limit ${limit}) union all (select DATE_FORMAT(FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(__time)/${timeGranularity})*${timeGranularity}),'%Y-%m-%d %H:%i:%s') as stat_time, 'traffic_out_packets' as type, sum(total_out_packets) as packets from traffic_metrics_log where __time >= '${startTime}' and __time < '${endTime}' group by DATE_FORMAT(FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(__time)/${timeGranularity})*${timeGranularity}),'%Y-%m-%d %H:%i:%s') limit ${limit}) ${remoteResponse} Get Request bdapi ?query=${sql} ${response} to json ${remoteResponse.content} Should Be Equal As Strings ${remoteResponse.status_code} 200 Should Be Equal As Strings ${response['status']} 200 @{packetsList2} Set Variable ${response['data']} ${typeIn} Set Variable traffic_in_packets ${typeOut} Set Variable traffic_out_packets ${types} Set Variable packets Run Keyword If ${packetsOutList1}!=[] and ${packetsList2}!=[] ForToTrafficTrend ${packetsOutList1} ${typeOut} ${types} ${packetsList2} Run Keyword If ${packetsInList1}!=[] and ${packetsList2}!=[] ForToTrafficTrend ${packetsInList1} ${typeIn} ${types} ${packetsList2} Dashboard-Traffic-trend-sessions # Traffics-带宽趋势 统计类型:sessions bifang和bigData对比 Traffic IN/OUT [Documentation] ... 描述:Traffic-trend-sessions ... 参数:starttime(必传,开始时间紧) ... endtime(必传,结束时间 ... timeGranularity(非必传,时间粒度 ) ... limit(非必传,限制条数) [Arguments] ${starttime} ${endtime} ${timeGranularity} ${limit} ${data} Set Variable startTime=${startTime}&endTime=${endTime}&statisticsUnit=sessions&timeGranularity=${timeGranularity}&limit=${limit} ${url1} Set Variable report/traffic/statisticsbyunit ${bfResponse} trafficBFRequest ${url1} ${data} @{sessionsList1} Set Variable ${bfResponse['data']['sessionsList']} Create Session bdapi http://${bigDataIP}:${bigDataPort} #${sql} Set Variable select DATE_FORMAT(FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(__time)/${timeGranularity}) *${timeGranularity}),'%Y-%m-%d %H:%i:%s') as stat_time, 'total_conn_num' as type, \ sum(new_conn_num) as sessions from traffic_metrics_log where __time >= \ '${startTime}' and __time < '${endTime}' group by DATE_FORMAT(FROM_UNIXTIME(FLOOR (UNIX_TIMESTAMP(__time)/${timeGranularity})*${timeGranularity}),'%Y-%m-%d %H:%i: %s') #${remoteResponse} Get Request bdapi ?query=${sql} ${sql} Set Variable select DATE_FORMAT(FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(__time)/${timeGranularity}) *${timeGranularity}),'%Y-%m-%d %H:%i:%s') as stat_time, 'total_conn_num' as type, \ sum(new_conn_num) as sessions from traffic_metrics_log where __time >= \ '${startTime}' and __time < '${endTime}' group by DATE_FORMAT(FROM_UNIXTIME(FLOOR (UNIX_TIMESTAMP(__time)/${timeGranularity})*${timeGranularity}),'%Y-%m-%d %H:%i: %s') limit ${limit} ${remoteResponse} Get Request bdapi ?query=${sql} ${response} to json ${remoteResponse.content} Should Be Equal As Strings ${remoteResponse.status_code} 200 Should Be Equal As Strings ${response['status']} 200 @{sessionsList2} Set Variable ${response['data']} ${type} Set Variable total_conn_num ${types} Set Variable sessions Run Keyword If ${sessionsList1}!=[] and ${sessionsList2}!=[] ForToTrafficTrend ${sessionsList1} ${type} ${types} ${sessionsList2}