This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
dongxiaoyan-tsg-autotest/02-Keyword/tsg_bfapi/LogStatistics.robot
dongxiaoyan fc79ac3782 1、添加时间工具关键字
2、调整部分错误
2020-06-18 13:46:16 +08:00

269 lines
24 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

*** Settings ***
Resource ../../03-Variable/BifangApiVariable.txt
Library RequestsLibrary
Library String
Library Collections
*** Keywords ***
GetApi
[Arguments] ${apiName} ${url} ${startTime}=${None} ${endTime}=${None} ${limit}=50000 ${statisticTime}=${None} ${statisticsUnit}=${None} ${timeGranularity}=${None} ${policy_id}=${None} ${ip}=${None} ${device_ids}=${None} ${policy_ids}=${None} ${orderBy}=${None}
log policy_ids:${policy_ids}
#拼接查询条件
${strstrartTime}= run keyword if '${startTime}'!='${None}' Set Variable startTime=${startTime}&
... ELSE Set Variable ${EMPTY}
${strendTime}= run keyword if '${endTime}'!='${None}' Set Variable endTime=${endTime}&
... ELSE Set Variable ${EMPTY}
${strstatisticTime}= run keyword if '${statisticTime}'!='${None}' Set Variable statisticTime=${statisticTime}&
... ELSE Set Variable ${EMPTY}
${strlimit}= run keyword if '${limit}'!='${None}' Set Variable limit=${limit}&
... ELSE Set Variable ${EMPTY}
${strstatisticsUnit}= run keyword if '${statisticsUnit}'!='${None}' Set Variable statisticsUnit=${statisticsUnit}&
... ELSE Set Variable ${EMPTY}
${strtimeGranularity}= run keyword if '${timeGranularity}'!='${None}' Set Variable timeGranularity=${timeGranularity}&
... ELSE Set Variable ${EMPTY}
${strpolicy_id}= run keyword if '${policy_id}'!='${None}' Set Variable policy_id=${policy_id}&
... ELSE Set Variable ${EMPTY}
${strip}= run keyword if '${ip}'!='${None}' Set Variable ip=${ip}&
... ELSE Set Variable ${EMPTY}
${strdevice_ids}= run keyword if '${device_ids}'!='${None}' Set Variable device_ids=${device_ids}&
... ELSE Set Variable ${EMPTY}
${strpolicy_ids}= run keyword if '${policy_ids}'!='${None}' Set Variable policy_ids=${policy_ids}&
... ELSE Set Variable ${EMPTY}
${strorderBy}= run keyword if '${orderBy}'!='${None}' Set Variable orderBy=${orderBy}&
... ELSE Set Variable ${EMPTY}
#替换policy_id为policyId
${strpolicy_id}= run keyword if '${apiName}'=='domain_resource' replace string ${strpolicy_id} policy_id policyId
... ELSE Set Variable ${strpolicy_id}
#bifang请求信息
${condition} catenate SEPARATOR= ${strstrartTime} ${strendTime} ${strstatisticTime} ${strlimit} ${strstatisticsUnit} ${strtimeGranularity} ${strpolicy_id} ${strip} ${strdevice_ids} ${strpolicy_ids} ${strorderBy}
#创建请求信息
${header} Create Dictionary Content-Type=application/x-www-form-urlencoded Authorization=${token}
Create Session api http://${host}:${port}
#发送请求
${remoteResponse} Get Request api ${url}?${condition} headers=${header}
${bifang} to json ${remoteResponse.content}
#验证请求是否成功
Should Be Equal As Strings ${remoteResponse.status_code} 200
Should Be Equal As Strings ${bifang}[code] 200
#请求大数据
${strstrartTime}= run keyword if '${startTime}'!='${None}' Set Variable __time > '${startTime}' and
... ELSE Set Variable ${EMPTY}
${strendTime}= run keyword if '${endTime}'!='${None}' Set Variable __time < '${endTime}' and
... ELSE Set Variable ${EMPTY}
${strstatisticTime}= run keyword if '${statisticTime}'!='${None}' Set Variable statisticTime=${statisticTime} and
... ELSE Set Variable ${EMPTY}
${strstatisticsUnit}= run keyword if '${statisticsUnit}'!='${None}' Set Variable statisticsUnit=${statisticsUnit} and
... ELSE Set Variable ${EMPTY}
${strtimeGranularity}= run keyword if '${timeGranularity}'!='${None}' Set Variable timeGranularity=${timeGranularity} and
... ELSE Set Variable ${EMPTY}
${strpolicy_id}= run keyword if '${policy_id}'!='${None}' Set Variable policy_id=${policy_id} and
... ELSE Set Variable ${EMPTY}
${strip}= run keyword if '${ip}'!='${None}' Set Variable ip=${ip} and
... ELSE Set Variable ${EMPTY}
${strdevice_ids}= run keyword if '${device_ids}'!='${None}' Set Variable device_ids=${device_ids} and
... ELSE Set Variable ${EMPTY}
#sql拼接 ${where}
${sqlwhere} catenate ${strstrartTime} ${strendTime} ${strstatisticTime} ${strstatisticsUnit} ${strtimeGranularity} ${strpolicy_id} ${strip} ${strdevice_ids}
${strippedwhere}= Strip String ${sqlwhere} mode=right
#截取最后一个and
${where}= Get Substring ${strippedwhere} \ -4
#injectionstatics 时间粒度默认为30
${timeGranularity}= run keyword if '${timeGranularity}'=="${None}" and '${apiName}'=="injectionstatics" set variable 30
... ELSE set variable ${timeGranularity}
log ${apiName}
#topn排序依据 \ sessions、totalbytes、totalpackets
${TotalOrderBy}= run keyword if '${orderBy}'=="bytes" and '${apiName}'=="topn" set variable totalBytes
... ELSE IF '${orderBy}'=="packets" and '${apiName}'=="topn" set variable totalPackets
... ELSE IF '${orderBy}'=="sessions" and '${apiName}'=="topn" set variable sessions
#BigData
${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}
log ${sql}
log sql------------${sql}
#traffic二次请求sql
${sql2}= run keyword if '${apiName}'=='traffic' SplicingTrafficSql ${apiName} ${startTime} ${endTime} statisticsUnit=${statisticsUnit} timeGranularity=${timeGranularity} limit=${limit}
#请求大数据接口
${response}= BigData ${sql}
${bigdata} to json ${response.content}
#traffic二次请求大数据
${response2}= run keyword if '${apiName}'=="traffic" BigData ${sql2}
${bigdata2} run keyword if '${apiName}'=="traffic" to json ${response2.content}
#响应码断言
Should Be Equal As Strings ${response.status_code} 200
Should Be Equal As Strings ${bigdata}[status] 200
#traffic二次请求响应码断言
run keyword if '${apiName}'=="traffic" run keywords Should Be Equal As Strings ${response2.status_code} 200
... AND Should Be Equal As Strings ${bigdata2}[status] 200
#traffic二次请求json拼接与毕方一致
${bigdataTraffic}= run keyword if '${apiName}'=="traffic" SplicingTrafficJson ${bigdata} ${bigdata2}
${bifanglist} run keyword if '${apiName}'=="ip_correlation_domain" \ or '${apiName}'=='domain_resource' set variable ${bifang['data']['list']['list']}
... ELSE IF '${apiName}'=="traffic" set variable ${bifang['data']}
... ELSE set variable ${bifang['data']['list']}
${bigdatalist} run keyword if '${apiName}'=="traffic" set variable ${bigdataTraffic}
... ELSE set variable ${bigdata['data']}
FOR ${k} ${v} IN ENUMERATE @{bifanglist}
run keyword if '${apiName}'=="hijack_srcip_location" List Should Contain Value ${bigdatalist} ${v}
... ELSE IF '${apiName}'=="traffic" ForSecondary ${bigdatalist} ${bifanglist} ${apiName}
... ELSE ForSecondary @{bigdatalist}[${k}] ${v} ${apiName}
END
BigData
[Arguments] ${sql}
#创建请求信息
Create Session api http://192.168.40.186:9999
#发送请求
${remoteResponse}= Get Request api ?query=${sql}
[Return] ${remoteResponse}
ForSecondary
[Arguments] ${bigdata} ${v} ${apiName}
${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']}
[Return] ${bigdataTraffic}
SplicingTrafficSql
[Arguments] ${apiName} ${startTime} ${endTime} ${statisticsUnit} ${limit} ${timeGranularity}
${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,
... ELSE Set Variable ${where}
#清空尾随空格
${strippedwhere}= Strip String ${where} mode=right
#时间粒度默认值
${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}
[Return] ${sql2}
Recommend
[Arguments] ${url} ${statisticTime}
${header} Create Dictionary Content-Type=application/x-www-form-urlencoded Authorization=${token}
#Create Session api http://${host}:${port}/${version} headers=${header}
Create Session api http://${host}:${port} headers=${header}
${remoteResponse} Get Request api ${url}?statisticTime=${statisticTime} headers=${header}
${response} to json ${remoteResponse.content}
Should Be Equal As Strings ${remoteResponse.status_code} 200
Trend
[Arguments] ${url} ${startTime} ${endTime} ${logType} ${policyId}
${header} Create Dictionary Content-Type=application/x-www-form-urlencoded Authorization=${token}
Create Session api http://${host}:${port} headers=${header}
${remoteResponse} Get Request api ${url}?policyId=${policyId}&logType=${logType}&startTime=${startTime}&endTime=${endTime} headers=${header}
${response} to json ${remoteResponse.content}
Should Be Equal As Strings ${remoteResponse.status_code} 200
Should Be Equal As Strings ${remoteResponse.json()}[msg] Success
Timeandcount
[Arguments] ${url} ${logType} ${policyIds}
${header} Create Dictionary Content-Type=application/x-www-form-urlencoded Authorization=${token}
#Create Session api http://${host}:${port}/${version} headers=${header}
Create Session api http://${host}:${port} headers=${header}
${remoteResponse} Get Request api ${url}?policyIds=${policyIds}&logType=${logType} headers=${header}
${response} to json ${remoteResponse.content}
Should Be Equal As Strings ${remoteResponse.status_code} 200
Should Be Equal As Strings ${remoteResponse.json()}[msg] Success
${data} set variable ${response}[data][list]
FOR ${kk} ${vv} IN ENUMERATE @{data}
log ${vv}[policyId]
${true} Evaluate "${vv}[policyId]" in "${policyIds}"
Should Be Equal As Strings ${true} True
END