${sql}= run keyword if '${apiName}'=="country" Set Variable SELECT country, APPROX_COUNT_DISTINCT_DS_HLL(ip_object) as num FROM source_country_ip_num_log where ${where} group by country order by num desc limit ${limit}
... ELSE IF '${apiName}'=="domain" Set Variable SELECT domain, protocol_type, ip_num, session_num \ FROM top_domain_recommend_daily_log where __time = '${statisticTime}'
... ELSE IF '${apiName}'=="url" Set Variable SELECT url, content_length, ip_num, session_num \ FROM top_website_urls_daily_log where __time = '${statisticTime}'
... ELSE IF '${apiName}'=="traffic" and '${statisticsUnit}'=='bytes' Set Variable select sum(total_in_bytes) as trafficInBytes, sum(total_out_bytes) as trafficOutBytes, \ sum(total_in_bytes+total_out_bytes) as trafficTotalBytes \ \ from traffic_metrics_log where __time >= '${startTime}' and __time < '${endTime}'
... ELSE IF '${apiName}'=="traffic" and '${statisticsUnit}'=='packets' Set Variable select sum(total_in_packets) as trafficInPackets,sum(total_out_packets) as trafficOutPackets,sum(total_in_packets+total_out_packets) as trafficTotalPackets from traffic_metrics_log where __time >= '${startTime}' and __time < '${endTime}'
... ELSE IF '${apiName}'=="traffic" and '${statisticsUnit}'=='sessions' Set Variable select sum(new_conn_num) as sessions \ from traffic_metrics_log where __time >= '${startTime}' and __time < '${endTime}'
... ELSE IF '${apiName}'=="traffic" and '${statisticsUnit}'=='${None}' Set Variable select sum(total_in_bytes) as trafficInBytes, sum(total_out_bytes) as trafficOutBytes, \ sum(total_in_bytes+total_out_bytes) as trafficTotalBytes, sum(total_in_packets) as trafficInPackets,sum(total_out_packets) as trafficOutPackets,sum(total_in_packets+total_out_packets) as trafficTotalPackets, sum(new_conn_num) as sessions from traffic_metrics_log where __time >= '${startTime}' and __time < '${endTime}'
... ELSE IF '${apiName}'=="ip_correlation_domain" and '${ip}'!='${None}' Set Variable SELECT \ ip, FROM_UNIXTIME(max(stat_time)) as last_time, FROM_UNIXTIME(min(stat_time)) as first_time, groupUniqArrayMerge(domain_list) as domain_list, groupUniqArrayMerge(port_list) as port_list \ FROM security_ip_info where \ stat_time >= '${startTime}' and stat_time < '${endTime}' and ip='${ip}' group by ip
... ELSE IF '${apiName}'=="ip_correlation_domain" and ${ip}==${None} Set Variable SELECT ip,FROM_UNIXTIME(max(stat_time)) as last_time, FROM_UNIXTIME(min(stat_time)) as first_time, groupUniqArrayMerge(domain_list) as domain_list, groupUniqArrayMerge(port_list) as port_list \ FROM security_ip_info where \ stat_time >= '${startTime}' and stat_time < '${endTime}' \ group by ip
... ELSE IF '${apiName}'=="hijack_srcip_num" Set Variable SELECT policy_id,country,location, APPROX_COUNT_DISTINCT_DS_HLL(ip_object) as num \ FROM proxy_event_hits_log where \ __time >='${startTime}' and __time <'${endTime}' and policy_id in \ ( ${policy_ids} ) group by policy_id , country,location order by num desc
... ELSE IF '${apiName}'=="hijack_srcip_location" Set Variable select ip, IP_TO_CITY(ip) as location, IP_TO_GEO(ip) as geo from (SELECT policy_id, arrayJoin(groupUniqArrayMerge(ip_list)) as ip FROM proxy_ip_info where \ stat_time >= '${startTime}' and stat_time < '${endTime}' and policy_id = ${policy_id} group by policy_id )
... ELSE IF '${apiName}'=="domain_resource" Set Variable SELECT \ domain, groupUniqArrayMerge(ip_list) as ip_list, groupUniqArrayMerge(cdn_list) as cdn_list, groupUniqArrayMerge(protocol_type_list) as protocol_type_list, groupUniqArrayMerge(port_list) as port_list \ FROM security_website_domain_info where \ stat_time >= '${startTime}' and stat_time < '${endTime}' and policy_id=${policy_id} group by domain
... ELSE IF '${apiName}'=="injectionstatistics" Set Variable select DATE_FORMAT(FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(__time)/${timeGranularity})*${timeGranularity}),'%Y-%m-%d %H:%i:%s') as stat_time, \ sum(bytes) as bytes from injection_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}
... ELSE IF '${apiName}'=="topn" Set Variable select domain,sum(session_num) as sessions,sum(c2s_byte_num) as sentBytes,sum(s2c_byte_num) as receivedBytes,sum(c2s_byte_num+s2c_byte_num) as totalBytes,sum(c2s_pkt_num) as sentPackets,sum(s2c_pkt_num) as receivedPackets,sum(c2s_pkt_num+s2c_pkt_num) as totalPackets from top_website_domain_log where __time >= '${startTime}' \ and __time < '${endTime}' \ and order_by='${orderBy}' \ group by domain order by ${TotalOrderBy} desc limit ${limit}
${bigdata} run keyword if '${apiName}'=='traffic' Convert To Dictionary ${bigdata}
... ELSE Set Variable ${bigdata}
${strbig} Get Dictionary Values ${bigdata}
${strfang} Get Dictionary Values ${v}
FOR ${key} ${var} IN ENUMERATE @{bigdata}
${string} Convert To String ${v}[${var}]
${stt} Get Substring ${string} 0 1
run keyword if '${stt}'=='[' ForTertiary ${bigdata}[${var}] ${v}[${var}]
... ELSE List Should Contain Value ${strbig} ${v}[${var}]
END
ForTertiary
[Arguments] ${str1} ${str2}
${str1} Convert To List ${str1}
${str2} Convert To List ${str2}
FOR ${kk} ${vv} IN ENUMERATE @{str1}
List Should Contain Value ${str1} ${vv}
END
SplicingTrafficJson
[Arguments] ${bigdata} ${bigdata2}
${bigdata} set variable ${bigdata['data']}[0]
@{trafficOutPacketsList} Create list
@{trafficOutBytesList} Create list
@{trafficTotalPacketsList} Create list
@{trafficInPacketsList} Create list
@{trafficInBytesList} Create list
@{sessionsList} Create list
@{trafficTotalBytesList} Create list
FOR ${k} ${v} IN ENUMERATE @{bigdata2['data']}
${total_out_packets}= Run keyword and ignore error log ${v['total_out_packets']}
${trafficOutPacketsListData}= run keyword if '${total_out_packets}[0]'!='FAIL' Create Dictionary statisticsTime=${v['statisticsTime']} statisticsNum=${v['total_out_packets']}
${total_out_bytes}= Run keyword and ignore error log ${v['total_out_bytes']}
${trafficOutBytesListData}= run keyword if '${total_out_bytes}[0]'!='FAIL' Create Dictionary statisticsTime=${v['statisticsTime']} statisticsNum=${v['total_out_bytes']}
${total_all_packets}= Run keyword and ignore error log ${v['total_all_packets']}
${trafficTotalPacketsListData}= run keyword if '${total_all_packets}[0]'!='FAIL' Create Dictionary statisticsTime=${v['statisticsTime']} statisticsNum=${v['total_all_packets']}
${total_in_packets}= Run keyword and ignore error log ${v['total_in_packets']}
${trafficInPacketsListData}= run keyword if '${total_in_packets}[0]'!='FAIL' Create Dictionary statisticsTime=${v['statisticsTime']} statisticsNum=${v['total_in_packets']}
${total_in_bytes}= Run keyword and ignore error log ${v['total_in_bytes']}
${trafficInBytesListData}= run keyword if '${total_in_bytes}[0]'!='FAIL' Create Dictionary statisticsTime=${v['statisticsTime']} statisticsNum=${v['total_in_bytes']}
${sessions}= Run keyword and ignore error log ${v['sessions']}
${sessionsListData}= run keyword if '${sessions}[0]'!='FAIL' Create Dictionary statisticsTime=${v['statisticsTime']} statisticsNum=${v['sessions']}
${total_all_bytes}= Run keyword and ignore error log ${v['total_all_bytes']}
${trafficTotalBytesListData}= run keyword if '${total_all_bytes}[0]'!='FAIL' Create Dictionary statisticsTime=${v['statisticsTime']} statisticsNum=${v['total_all_bytes']}
Append To List ${trafficTotalPacketsList} ${trafficTotalPacketsListData}
Append To List ${trafficInPacketsList} ${trafficInPacketsListData}
Append To List ${trafficInBytesList} ${trafficInBytesListData}
Append To List ${sessionsList} ${sessionsListData}
Append To List ${trafficTotalBytesList} ${trafficTotalBytesListData}
Append To List ${trafficOutPacketsList} ${trafficOutPacketsListData}
Append To List ${trafficOutBytesList} ${trafficOutBytesListData}
END
${bigdataTraffic} Create Dictionary
${1}= Run keyword and ignore error log ${bigdata['sessions']}
run keyword if '${1}[0]'!='FAIL' Set To Dictionary ${bigdataTraffic} sessions=${bigdata['sessions']}
${2}= Run keyword and ignore error log ${bigdata['trafficInPackets']}
run keyword if '${2}[0]'!='FAIL' Set To Dictionary ${bigdataTraffic} trafficInPackets=${bigdata['trafficInPackets']}
${3}= Run keyword and ignore error log ${bigdata['trafficTotalBytes']}
run keyword if '${3}[0]'!='FAIL' Set To Dictionary ${bigdataTraffic} trafficTotalBytes=${bigdata['trafficTotalBytes']}
${4}= Run keyword and ignore error log ${v['total_out_packets']}
run keyword if '${4}[0]'!='FAIL' Set To Dictionary ${bigdataTraffic} trafficOutPacketsList=${trafficOutPacketsList}
${5}= Run keyword and ignore error log ${bigdata['trafficInBytes']}
run keyword if '${5}[0]'!='FAIL' Set To Dictionary ${bigdataTraffic} trafficInBytes=${bigdata['trafficInBytes']}
${6}= Run keyword and ignore error log ${bigdata['trafficOutBytes']}
run keyword if '${6}[0]'!='FAIL' Set To Dictionary ${bigdataTraffic} trafficOutBytes=${bigdata['trafficOutBytes']}
${7}= Run keyword and ignore error log ${bigdata['trafficOutPackets']}
run keyword if '${7}[0]'!='FAIL' Set To Dictionary ${bigdataTraffic} trafficOutPackets=${bigdata['trafficOutPackets']}
${8}= Run keyword and ignore error log ${bigdata2['data'][0]['total_out_bytes']}
run keyword if '${8}[0]'!='FAIL' Set To Dictionary ${bigdataTraffic} trafficOutBytesList=${trafficOutBytesList}
${9}= Run keyword and ignore error log ${bigdata2['data'][0]['total_all_packets']}
run keyword if '${9}[0]'!='FAIL' Set To Dictionary ${bigdataTraffic} trafficTotalPacketsList=${trafficTotalPacketsList}
${10}= Run keyword and ignore error log ${bigdata2['data'][0]['total_in_packets']}
run keyword if '${10}[0]'!='FAIL' Set To Dictionary ${bigdataTraffic} trafficInPacketsList=${trafficInPacketsList}
${11}= Run keyword and ignore error log ${bigdata2['data'][0]['total_in_bytes']}
run keyword if '${11}[0]'!='FAIL' Set To Dictionary ${bigdataTraffic} trafficInBytesList=${trafficInBytesList}
${12}= Run keyword and ignore error log ${bigdata2['data'][0]['sessions']}
run keyword if '${12}[0]'!='FAIL' Set To Dictionary ${bigdataTraffic} sessionsList=${sessionsList}
${13}= Run keyword and ignore error log ${bigdata2['data'][0]['total_all_bytes']}
run keyword if '${13}[0]'!='FAIL' Set To Dictionary ${bigdataTraffic} trafficTotalBytesList=${trafficTotalBytesList}
${14}= Run keyword and ignore error log ${bigdata['trafficTotalPackets']}
run keyword if '${14}[0]'!='FAIL' Set To Dictionary ${bigdataTraffic} trafficTotalPackets=${bigdata['trafficTotalPackets']}
${bytes}= run keyword if '${apiName}'=="traffic" and '${statisticsUnit}'=='bytes' Set Variable sum(total_in_bytes) as total_in_bytes, sum(total_out_bytes) as total_out_bytes, sum(total_in_bytes+total_out_bytes) as total_all_bytes,
... ELSE Set Variable ${EMPTY}
${packets}= run keyword if '${apiName}'=="traffic" and '${statisticsUnit}'=='packets' Set Variable sum(total_in_packets) as total_in_packets, sum(total_out_packets) as total_out_packets, sum(total_in_packets+total_out_packets) as total_all_packets,
... ELSE Set Variable ${EMPTY}
${sessions}= run keyword if '${apiName}'=="traffic" and '${statisticsUnit}'=='sessions' Set Variable sum(new_conn_num) as sessions
... ELSE Set Variable ${EMPTY}
${where} catenate ${bytes} ${packets} ${sessions}
${where} run keyword if '${apiName}'=="traffic" and '${statisticsUnit}'=='${None}' Set Variable sum(total_in_bytes) as total_in_bytes, sum(total_out_bytes) as total_out_bytes, sum(total_in_bytes+total_out_bytes) as total_all_bytes, sum(total_in_packets) as total_in_packets, sum(total_out_packets) as total_out_packets, sum(total_in_packets+total_out_packets) as total_all_packets, sum(new_conn_num) as sessions,
${timeGranularity}= run keyword if '${timeGranularity}'=="${None}" set variable 30
... ELSE set variable ${timeGranularity}
#截取最后一个and
${where}= Get Substring ${strippedwhere} \ -1
${sql2} catenate select DATE_FORMAT(FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(__time)/${timeGranularity})*${timeGranularity}),'%Y-%m-%d %H:%i:%s') as statisticsTime, ${where} 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}