feat(validation):Dashboard统计数据与原始日志对比关键字以及测试用例提交,对比采用差值绝对值小于配置文件中设置的值

This commit is contained in:
wangxin
2020-07-20 19:01:55 +08:00
parent f7efbb840a
commit 77a79b77f0
3 changed files with 464 additions and 0 deletions

View File

@@ -0,0 +1,70 @@
*** Settings ***
Force Tags tsg-bfapi dashboard traffic
Library Collections
Resource ../../../03-Variable/BifangApiVariable.txt
Resource ../../../02-Keyword/tsg_bfapi/dashboard_data_compare/DashBoardLogValidation.robot
*** Test Cases ***
TrafficStatistics-0001
Dashboard-Validation-Traffic 2020-07-15 15:30:00 2020-07-16 15:35:00 1800
Dashboard-Validation-Policy-Hits-0002
Dashboard-Validation-Policy-Hits 2020-07-15 15:30:00 2020-07-16 15:35:00 security_event_hits_log sessions
Dashboard-Validation-Policy-Hits-Action-0003
Dashboard-Validation-Hits-Action 2020-07-17 18:30:00 2020-07-17 19:45:00 security_event_hits_log security_event_log Allow
Dashboard-Validation-Policy-Hits-Action-0004
Dashboard-Validation-Hits-Action 2020-07-17 18:30:00 2020-07-17 19:45:00 security_event_hits_log security_event_log Deny
Dashboard-Validation-Policy-Hits-Action-0005
Dashboard-Validation-Hits-Action 2020-07-17 18:30:00 2020-07-17 19:45:00 security_event_hits_log security_event_log Monitor
Dashboard-Validation-Policy-Hits-Action-0006
Dashboard-Validation-Hits-Action 2020-07-17 18:30:00 2020-07-17 19:45:00 security_event_hits_log security_event_log Intercept
Dashboard-Top-Hits-Validation-0007
Top-Hits-Validation 2020-07-17 18:30:00 2020-07-17 19:45:00 security_event_hits_log 10 security_event_log
Dashboard-Traffic-TopN-Clientip-Validation-0008
Traffic-TopN-X-Validation clientip 2020-07-17 19:40:00 2020-07-17 19:45:00 sessions 10
Dashboard-Traffic-TopN-Clientip-Validation-0009
Traffic-TopN-X-Validation clientip 2020-07-17 19:40:00 2020-07-17 19:45:00 bytes 10
Dashboard-Traffic-TopN-Clientip-Validation-0010
Traffic-TopN-X-Validation clientip 2020-07-17 19:40:00 2020-07-17 19:45:00 packets 10
Dashboard-Traffic-TopN-Serverip-Validation-0011
Traffic-TopN-X-Validation serverip 2020-07-17 19:40:00 2020-07-17 19:45:00 sessions 10
Dashboard-Traffic-TopN-Serverip-Validation-0012
Traffic-TopN-X-Validation serverip 2020-07-17 19:40:00 2020-07-17 19:45:00 bytes 10
Dashboard-Traffic-TopN-Serverip-Validation-0013
Traffic-TopN-X-Validation serverip 2020-07-17 19:40:00 2020-07-17 19:45:00 packets 10
Dashboard-Traffic-TopN-Subscriberid-Validation-0014
Traffic-TopN-X-Validation subscriberid 2020-07-17 19:40:00 2020-07-17 19:45:00 sessions 10
Dashboard-Traffic-TopN-Subscriberid-Validation-0015
Traffic-TopN-X-Validation subscriberid 2020-07-17 19:40:00 2020-07-17 19:45:00 bytes 10
Dashboard-Traffic-TopN-Subscriberid-Validation-0016
Traffic-TopN-X-Validation subscriberid 2020-07-17 19:40:00 2020-07-17 19:45:00 packets 10
Dashboard-Traffic-TopN-URL-Validation-0017
Traffic-TopN-X-Validation url 2020-07-17 19:40:00 2020-07-17 19:45:00 sessions 10
Dashboard-Traffic-TopN-Domain-Validation-0018
Traffic-TopN-X-Validation domain 2020-07-17 19:40:00 2020-07-17 19:45:00 sessions 10
Dashboard-Traffic-TopN-Domain-Validation-0019
Traffic-TopN-X-Validation domain 2020-07-17 19:40:00 2020-07-17 19:45:00 bytes 10
Dashboard-Traffic-TopN-Domain-Validation-0020
Traffic-TopN-X-Validation domain 2020-07-17 19:40:00 2020-07-17 19:45:00 packets 10
Dashboard-Validation-Policy-Hits-Action-0021
Dashboard-Validation-Hits-Action 2020-07-17 18:30:00 2020-07-17 19:45:00 proxy_event_hits_log proxy_event_log Intercept
Dashboard-Validation-Policy-Hits-Action-0022
Dashboard-Validation-Hits-Action 2020-07-17 18:30:00 2020-07-17 19:45:00 proxy_event_hits_log proxy_event_log Allow
Dashboard-Validation-Policy-Hits-Action-0023
Dashboard-Validation-Hits-Action 2020-07-17 18:30:00 2020-07-17 19:45:00 proxy_event_hits_log proxy_event_log Deny
Dashboard-Validation-Policy-Hits-Action-0024
Dashboard-Validation-Hits-Action 2020-07-17 18:30:00 2020-07-17 19:45:00 proxy_event_hits_log proxy_event_log Monitor
Dashboard-Validation-Policy-Hits-Action-0025
Dashboard-Validation-Hits-Action 2020-07-17 18:30:00 2020-07-17 19:45:00 proxy_event_hits_log proxy_event_log Redirect
Dashboard-Validation-Policy-Hits-Action-0026
Dashboard-Validation-Hits-Action 2020-07-17 18:30:00 2020-07-17 19:45:00 proxy_event_hits_log proxy_event_log Replace
Dashboard-Validation-Policy-Hits-Action-0027
Dashboard-Validation-Hits-Action 2020-07-17 18:30:00 2020-07-17 19:45:00 proxy_event_hits_log proxy_event_log Hijack
Dashboard-Validation-Policy-Hits-Action-0028
Dashboard-Validation-Hits-Action 2020-07-17 18:30:00 2020-07-17 19:45:00 proxy_event_hits_log proxy_event_log Insert
Dashboard-Pinning-Validation-0029
Pinning-Validation 2020-07-17 18:30:00 2020-07-17 19:45:00 100
Dashboard-Top-Hits-Validation-0030
Top-Hits-Validation 2020-07-17 18:30:00 2020-07-17 19:45:00 proxy_event_hits_log 10 proxy_event_log

View File

@@ -0,0 +1,392 @@
*** Settings ***
Library Collections
Library RequestsLibrary
Library String
Library json
Resource ../../../03-Variable/Bifangapivariable.txt
Resource ForTwoKeywords.robot
Resource ../Common.robot
Resource ../policy_object/Log.robot
*** Keywords ***
Dashboard-Validation-Traffic
[Documentation]
... 描述Traffic统计验证
... 每条线的所有的总量平均是否和traffic的对应数量一致
... 每个点的ALL是否大于IN和OUT
... 数据涉及三种类型Bytes、Packets、Sessions
... 参数starttime(必传,开始时间紧)
... endtime(必传,结束时间)
... timeGranularity 统计粒度单位秒仅用于趋势查询sql缺省为30秒
... 返回:对比结果
[Arguments] ${starttime} ${endtime} ${timeGranularity}
${data} Set Variable startTime=${startTime}&endTime=${endTime}
${data} Run Keyword If "${timeGranularity}"!="${EMPTY}" Set Variable ${data}&timeGranularity=${timeGranularity}
... ELSE Set Variable ${data}
${url1} Set Variable report/traffic/statisticsbyunit
${bfResponse} TrafficBFRequest ${url1} ${data}
#bytes
${trafficInBytes} Set Variable ${bfResponse['data']['trafficInBytes']}
${trafficInBytesList} Set Variable ${bfResponse['data']['trafficInBytesList']}
${trafficOutBytes} Set Variable ${bfResponse['data']['trafficOutBytes']}
${trafficOutBytesList} Set Variable ${bfResponse['data']['trafficOutBytesList']}
${trafficTotalBytes} Set Variable ${bfResponse['data']['trafficTotalBytes']}
${trafficTotalBytesList} Set Variable ${bfResponse['data']['trafficTotalBytesList']}
#Packets
${trafficInPackets} Set Variable ${bfResponse['data']['trafficInPackets']}
${trafficInPacketsList} Set Variable ${bfResponse['data']['trafficInPacketsList']}
${trafficOutPackets} Set Variable ${bfResponse['data']['trafficOutPackets']}
${trafficOutPacketsList} Set Variable ${bfResponse['data']['trafficOutPacketsList']}
${trafficTotalPackets} Set Variable ${bfResponse['data']['trafficTotalPackets']}
${trafficTotalPacketsList} Set Variable ${bfResponse['data']['trafficTotalPacketsList']}
#sessions
${sessions} Set Variable ${bfResponse['data']['sessions']}
${sessionsList} Set Variable ${bfResponse['data']['sessionsList']}
#每条线的所有的总量平均是否和traffic的对应数量一致
${trafficBytesCalTotal} Evaluate ${trafficInBytes}+${trafficOutBytes}
Should Be True ${trafficTotalBytes}==${trafficBytesCalTotal}
${trafficPacketsCalTotal} Evaluate ${trafficInPackets}+${trafficOutPackets}
Should Be True ${trafficTotalPackets}==${trafficPacketsCalTotal}
#每个点的ALL是否大于IN和OUT
${len} Get Length ${trafficTotalBytesList}
${index} Set Variable ${0}
FOR ${trafficTotalBytes} IN @{trafficTotalBytesList}
${totalValue} Get From Dictionary ${trafficTotalBytes} statisticsNum
${inValue} Get From Dictionary ${trafficInBytesList[${index}]} statisticsNum
${outValue} Get From Dictionary ${trafficOutBytesList[${index}]} statisticsNum
Should Be True ${totalValue}>=${inValue}
Should Be True ${totalValue}>=${outValue}
${index} Evaluate ${index}+1
END
${index} Set Variable ${0}
FOR ${trafficTotalPackets} IN @{trafficTotalPacketsList}
${totalValue} Get From Dictionary ${trafficTotalPackets} statisticsNum
${inValue} Get From Dictionary ${trafficInPacketsList[${index}]} statisticsNum
${outValue} Get From Dictionary ${trafficOutPacketsList[${index}]} statisticsNum
Should Be True ${totalValue}>=${inValue}
Should Be True ${totalValue}>=${outValue}
${index} Evaluate ${index}+1
END
[Return] OK
Dashboard-Validation-Policy-Hits
[Documentation]
... Policy Hits by Action涉及验证
... 数据涉及三种类型Bytes、Packets、Sessions
... 每条线的各个时间点总量和对应action一致
... 参数starttime(必传,开始时间紧)
... endtime(必传,结束时间)
... orderBy 排序方式
... logType(必填,日志类型)
[Arguments] ${starttime} ${endtime} ${logType} ${orderBy}
${data} Set Variable logType=${logType}&startTime=${startTime}&endTime=${endTime}
${data} Run Keyword If "${orderBy}"!="${EMPTY}" Set Variable ${data}&orderBy=${orderBy}
... ELSE Set Variable ${data}
${url1} Set Variable report/policyevent/hit/action
${bfResponse} TrafficBFRequest ${url1} ${data}
${actionCount} Set Variable ${bfResponse['data']['actionCount']}
${DefaultCount} Set Variable ${EMPTY}
${AllowCount} Set Variable ${EMPTY}
${DenyCount} Set Variable ${EMPTY}
${MonitorCount} Set Variable ${EMPTY}
${InterceptCount} Set Variable ${EMPTY}
FOR ${action} IN @{actionCount}
${DefaultCount} Run Keyword If "${action['action']}"=="Default" and "${DefaultCount}"=="${EMPTY}" Set Variable ${action}
... ELSE Set Variable ${DefaultCount}
${AllowCount} Run Keyword If "${action['action']}"=="Allow" and "${AllowCount}"=="${EMPTY}" Set Variable ${action}
... ELSE Set Variable ${AllowCount}
${DenyCount} Run Keyword If "${action['action']}"=="Deny" and "${DenyCount}"=="${EMPTY}" Set Variable ${action}
... ELSE Set Variable ${DenyCount}
${MonitorCount} Run Keyword If "${action['action']}"=="Monitor" and "${MonitorCount}"=="${EMPTY}" Set Variable ${action}
... ELSE Set Variable ${MonitorCount}
${InterceptCount} Run Keyword If "${action['action']}"=="Intercept" and "${InterceptCount}"=="${EMPTY}" Set Variable ${action}
... ELSE Set Variable ${InterceptCount}
END
${trendList} Set Variable ${bfResponse['data']['trendList']}
${DefaultSessions} Set Variable ${0}
${DefaultBytes} Set Variable ${0}
${DefaultPackets} Set Variable ${0}
${AllowSessions} Set Variable ${0}
${AllowBytes} Set Variable ${0}
${AllowPackets} Set Variable ${0}
${DenySessions} Set Variable ${0}
${DenyBytes} Set Variable ${0}
${DenyPackets} Set Variable ${0}
${MonitorSessions} Set Variable ${0}
${MonitorBytes} Set Variable ${0}
${MonitorPackets} Set Variable ${0}
${InterceptSessions} Set Variable ${0}
${InterceptBytes} Set Variable ${0}
${InterceptPackets} Set Variable ${0}
FOR ${treand} IN @{trendList}
${action} Get From Dictionary ${treand} action
${sessions} Get From Dictionary ${treand} sessions
${bytes} Get From Dictionary ${treand} bytes
${packets} Get From Dictionary ${treand} packets
${DefaultSessions} Run Keyword If "${action}"=="Default" Evaluate ${DefaultSessions}+${sessions}
... ELSE Set Variable ${DefaultSessions}
${DefaultBytes} Run Keyword If "${action}"=="Default" Evaluate ${DefaultBytes}+${bytes}
... ELSE Set Variable ${DefaultBytes}
${DefaultPackets} Run Keyword If "${action}"=="Default" Evaluate ${DefaultPackets}+${packets}
... ELSE Set Variable ${DefaultPackets}
${AllowSessions} Run Keyword If "${action}"=="Allow" Evaluate ${AllowSessions}+${sessions}
... ELSE Set Variable ${AllowSessions}
${AllowBytes} Run Keyword If "${action}"=="Allow" Evaluate ${AllowBytes}+${bytes}
... ELSE Set Variable ${AllowBytes}
${AllowPackets} Run Keyword If "${action}"=="Allow" Evaluate ${AllowPackets}+${packets}
... ELSE Set Variable ${AllowPackets}
${DenySessions} Run Keyword If "${action}"=="Deny" Evaluate ${DenySessions}+${sessions}
... ELSE Set Variable ${DenySessions}
${DenyBytes} Run Keyword If "${action}"=="Deny" Evaluate ${DenyBytes}+${bytes}
... ELSE Set Variable ${DenyBytes}
${DenyPackets} Run Keyword If "${action}"=="Deny" Evaluate ${DenyPackets}+${packets}
... ELSE Set Variable ${DenyPackets}
${MonitorSessions} Run Keyword If "${action}"=="Monitor" Evaluate ${MonitorSessions}+${sessions}
... ELSE Set Variable ${MonitorSessions}
${MonitorBytes} Run Keyword If "${action}"=="Monitor" Evaluate ${MonitorBytes}+${bytes}
... ELSE Set Variable ${MonitorBytes}
${MonitorPackets} Run Keyword If "${action}"=="Monitor" Evaluate ${MonitorPackets}+${packets}
... ELSE Set Variable ${MonitorPackets}
${InterceptSessions} Run Keyword If "${action}"=="Intercept" Evaluate ${InterceptSessions}+${sessions}
... ELSE Set Variable ${InterceptSessions}
${InterceptBytes} Run Keyword If "${action}"=="Intercept" Evaluate ${InterceptBytes}+${bytes}
... ELSE Set Variable ${InterceptBytes}
${InterceptPackets} Run Keyword If "${action}"=="Intercept" Evaluate ${InterceptPackets}+${packets}
... ELSE Set Variable ${InterceptPackets}
END
Should Be True ${DefaultCount['sessions']}==${DefaultSessions}
Should Be True ${DefaultCount['packets']}==${DefaultPackets}
Should Be True ${DefaultCount['bytes']}==${DefaultBytes}
Should Be True ${AllowCount['sessions']}==${AllowSessions}
Should Be True ${AllowCount['packets']}==${AllowPackets}
Should Be True ${AllowCount['bytes']}==${AllowBytes}
Should Be True ${DenyCount['sessions']}==${DenySessions}
Should Be True ${DenyCount['packets']}==${DenyPackets}
Should Be True ${DenyCount['bytes']}==${DenyBytes}
Should Be True ${MonitorCount['sessions']}==${MonitorSessions}
Should Be True ${MonitorCount['packets']}==${MonitorPackets}
Should Be True ${MonitorCount['bytes']}==${MonitorBytes}
Should Be True ${InterceptCount['sessions']}==${InterceptSessions}
Should Be True ${InterceptCount['packets']}==${InterceptPackets}
Should Be True ${InterceptCount['bytes']}==${InterceptBytes}
[Return] OK
Dashboard-Validation-Hits-Action
[Documentation]
... security_event_log支持的action:Allow、Deny、Monitor、Intercept
... proxy_event_log支持的sub action:Allow、Deny、Monitor、Redirect、Replace、Hijack、Insert
... 到原始日志对应时间范围内对应动作比对,使用差值比对,即差的绝对值小于某个阈值参数;
... 支持security_event_logproxy_event_log
... proxy_event_log只对sessions进行比对
... security_event_log会进行sessions,bytes,packages三种数据的比对
... 参数starttime(必传,开始时间紧)
... endtime(必传,结束时间)
... orderBy 排序方式
... logType(必填,日志类型)
... originalLogTye(必填,原始日志日志类型)
... action(必填,动作)
[Arguments] ${starttime} ${endtime} ${logType} ${originalLogTye} ${action}
${data} Set Variable logType=${logType}&startTime=${startTime}&endTime=${endTime}
${url1} Set Variable report/policyevent/hit/action
${bfResponse} TrafficBFRequest ${url1} ${data}
${actionCount} Set Variable ${bfResponse['data']['actionCount']}
${actionTotal} Set Variable ${EMPTY}
FOR ${action1} IN @{actionCount}
${actionTotal} Run Keyword If "${action}"=="${action1['action']}" and "${actionTotal}"=="${EMPTY}" Set Variable ${action1}
... ELSE Set Variable ${actionTotal}
END
Run Keyword If "${actionTotal}"=="${EMPTY}" Fail 不支持的action ${action}
${conditions} Run Keyword If "${action}"=="Allow" and "${originalLogTye}"=="security_event_log" Set Variable common_action|int|=|128
... ELSE IF "${action}"=="Allow" and "${originalLogTye}"=="proxy_event_log" Set Variable common_sub_action|string|exactly|allow
... ELSE IF "${action}"=="Deny" and "${originalLogTye}"=="security_event_log" Set Variable common_action|int|=|16
... ELSE IF "${action}"=="Deny" and "${originalLogTye}"=="proxy_event_log" Set Variable common_sub_action|string|exactly|deny
... ELSE IF "${action}"=="Monitor" and "${originalLogTye}"=="security_event_log" Set Variable common_action|int|=|1
... ELSE IF "${action}"=="Monitor" and "${originalLogTye}"=="proxy_event_log" Set Variable common_sub_action|string|exactly|monitor
... ELSE IF "${action}"=="Intercept" Set Variable common_action|int|=|2
... ELSE IF "${action}"=="Redirect" Set Variable common_sub_action|string|exactly|redirect
... ELSE IF "${action}"=="Replace" Set Variable common_sub_action|string|exactly|replace
... ELSE IF "${action}"=="Hijack" Set Variable common_sub_action|string|exactly|hijack
... ELSE IF "${action}"=="Insert" Set Variable common_sub_action|string|exactly|insert
... ELSE Set Variable ${EMPTY}
${params} Create Dictionary logType=${originalLogTye} start_common_recv_time=${startTime} end_common_recv_time=${endTime} conditions=${conditions}
${response} QueryLogs ${params} count
${sessionsTotal} Set Variable ${response['total']}
${sessionsAbs} Evaluate abs(${sessionsTotal}-${actionTotal['sessions']})
Run Keyword And Return If "${originalLogTye}"=="proxy_event_log" Should Be True ${sessionsAbs}<=${hitsAbs}
Set To Dictionary ${params} pageNo=1 pageSize=${response['total']}
... fields=common_c2s_pkt_num|long,common_s2c_pkt_num|long,common_c2s_byte_num|long,common_s2c_byte_num|long conditions=${conditions}
${response} QueryLogs ${params} list
#计算Allow 的bytes,packets
${calBytes} Set Variable ${0}
${calPackets} Set Variable ${0}
FOR ${item} IN @{response['list']}
${bytes} Evaluate ${item['common_c2s_byte_num']}+${item['common_s2c_byte_num']}
${packets} Evaluate ${item['common_c2s_pkt_num']}+${item['common_s2c_pkt_num']}
${calBytes} Evaluate ${calBytes}+${bytes}
${calPackets} Evaluate ${calPackets}+${packets}
END
${bytesAbs} Evaluate abs(${calBytes}-${actionTotal['bytes']})
${packetsAbs} Evaluate abs(${calPackets}-${actionTotal['packets']})
Should Be True ${bytesAbs}<=${hitsAbs}
Should Be True ${packetsAbs}<=${hitsAbs}
[Return] OK
Top-Hits-Validation
[Documentation]
... 使用对应时间范围内对应策略id原始数据比对使用差值比对即差的绝对值小于某个阈值参数
... top只能使用整点5分钟内数据比较例如11:20-11:25,不能使用11:11-11:06这样的时间范围
... 参数starttime(必传,开始时间紧)
... endtime(必传,结束时间)
... limit topN的N
... logType(必填,日志类型)
... originalLogTye(必填,原始日志日志类型)
[Arguments] ${starttime} ${endtime} ${logType} ${limit} ${originalLogTye}
${data} Set Variable logType=${logType}&startTime=${startTime}&endTime=${endTime}&limit=${limit}
${url1} Set Variable report/policyevent/hit/topn
${bfResponse} TrafficBFRequest ${url1} ${data}
${list} Set Variable ${bfResponse['data']['list']}
FOR ${item} IN @{list}
${policyId} Get From Dictionary ${item} policyId
${sessions} Get From Dictionary ${item} sessions
${params} Create Dictionary logType=${originalLogTye} start_common_recv_time=${startTime} end_common_recv_time=${endTime} conditions=common_policy_id|int||${policyId}
${response} QueryLogs ${params} count
${sessionsTotal} Set Variable ${response['total']}
${sessionsAbs} Evaluate abs(${sessionsTotal}-${sessions})
Should Be True ${sessionsAbs}<=${hitsAbs}
END
[Return] OK
Traffic-TopN-X-Validation
[Documentation]
... 使用对应时间范围内对应策略ClientIP原始数据比对使用差值比对即差的绝对值小于某个阈值参数
... top只能使用整点5分钟内数据比较例如11:20-11:25,不能使用11:11-11:06这样的时间范围
... 数据涉及三种类型Bytes、Packets、Sessions
... 注意通联日志数量较大必须限制5分钟范围之内
... URL TOPN不支持比对
... 参数starttime(必传,开始时间紧)
... endtime(必传,结束时间)
... limit topN的N因为通联日志不支持url条件查询
... orderBy(必填排序依据sessions、bytes、packets)
... uri(必填topN接口url最后一段)
[Arguments] ${uri} ${starttime} ${endtime} ${orderBy} ${limit}
#关注的统计维度,注意url只有sessions
${caredDimension} Run Keyword If "${uri}"=="clientip" Set Variable clientIp
... ELSE IF "${uri}"=="serverip" Set Variable serverIp
... ELSE IF "${uri}"=="domain" Set Variable domain
... ELSE IF "${uri}"=="subscriberid" Set Variable subscriberid
... ELSE IF "${uri}"=="url" Fail 不支持URL维度的统计对比因为通联日志不支持url条件查询
... ELSE Fail 不支持的统计维度${uri}
${data} Set Variable orderBy=${orderBy}&startTime=${startTime}&endTime=${endTime}&limit=${limit}
${url1} Set Variable report/traffic/topn/${uri}
${bfResponse} TrafficBFRequest ${url1} ${data}
${list} Set Variable ${bfResponse['data']['list']}
${dimensionKeywords} Set Variable ${EMPTY}
${dimensionDict} Create Dictionary
${dimensionList} Create List
FOR ${item} IN @{list}
${dimensionKeyword} Set Variable ${item['${caredDimension}']}
${dimensionKeywords} Set Variable ${dimensionKeywords}^${dimensionKeyword}
${sessions} Get From Dictionary ${item} sessions
${bytes} Run Keyword If "${caredDimension}"!="url" Get From Dictionary ${item} totalBytes
... ELSE Set Variable ${0}
${packets} Run Keyword If "${caredDimension}"!="url" Get From Dictionary ${item} totalPackets
... ELSE Set Variable ${0}
${dict} Create Dictionary sessions=${sessions} bytes=${bytes} packets=${packets}
... originalSessions=${0} originalBytes=${0} originalPackets=${0}
Set To Dictionary ${dimensionDict} ${dimensionKeyword}=${dict}
Append To List ${dimensionList} ${dimensionKeyword}
END
${dimensionKeywords} Run Keyword If "${dimensionKeywords}"!="${EMPTY}" Remove String Using Regexp ${dimensionKeywords} ^\\^
... ELSE Set Variable ${dimensionKeywords}
${conditions} Run Keyword If "${caredDimension}"=="clientIp" Set Variable common_client_ip|string|exactly|${dimensionKeywords}
... ELSE IF "${caredDimension}"=="serverIp" Set Variable common_server_ip|string|exactly|${dimensionKeywords}
... ELSE IF "${caredDimension}"=="domain" Set Variable http_domain|string|exactly|${dimensionKeywords}
... ELSE IF "${caredDimension}"=="subscriberid" Set Variable common_subscriber_id|string|exactly|${dimensionKeywords}
... ELSE IF "${caredDimension}"=="url" Set Variable http_url|string|exactly|${dimensionKeywords}
${basicFields} Set Variable common_c2s_pkt_num|long,common_s2c_pkt_num|long,common_c2s_byte_num|long,common_s2c_byte_num|long
${fields} Run Keyword If "${caredDimension}"=="clientIp" Set Variable common_client_ip|string|,${basicFields}
... ELSE IF "${caredDimension}"=="serverIp" Set Variable common_server_ip|string|,${basicFields}
... ELSE IF "${caredDimension}"=="domain" Set Variable http_domain|string|,${basicFields}
... ELSE IF "${caredDimension}"=="subscriberid" Set Variable common_subscriber_id|string|,${basicFields}
... ELSE IF "${caredDimension}"=="url" Set Variable http_url|string|,${basicFields}
${dimensionField} Run Keyword If "${caredDimension}"=="clientIp" Set Variable common_client_ip
... ELSE IF "${caredDimension}"=="serverIp" Set Variable common_server_ip
... ELSE IF "${caredDimension}"=="domain" Set Variable http_domain
... ELSE IF "${caredDimension}"=="subscriberid" Set Variable common_subscriber_id
... ELSE IF "${caredDimension}"=="url" Set Variable http_url
${params} Create Dictionary logType=connection_record_log start_common_recv_time=${startTime}
... end_common_recv_time=${endTime} conditions=${conditions}
${response} QueryLogs ${params} count
Set To Dictionary ${params} pageNo=1 pageSize=${response['total']}
... fields=${fields} conditions=${conditions}
${response} QueryLogs ${params} list
FOR ${data} IN @{response['list']}
${key} Set Variable ${data['${dimensionField}']}
${value} Get From Dictionary ${dimensionDict} ${key}
${sessions} Evaluate ${value['originalSessions']}+1
${bytes} Evaluate ${value['originalBytes']}+${data['common_c2s_byte_num']}+${data['common_s2c_byte_num']}
${packets} Evaluate ${value['originalPackets']}+${data['common_c2s_pkt_num']}+${data['common_s2c_pkt_num']}
Set To Dictionary ${value} originalSessions=${sessions} originalBytes=${bytes} originalPackets=${packets}
END
FOR ${key} IN @{dimensionList}
${value} Get From Dictionary ${dimensionDict} ${key}
${sessionsAbs} Evaluate abs(${value['sessions']}-${value['originalSessions']})
${packetsAbs} Evaluate abs(${value['packets']}-${value['originalPackets']})
${bytesAbs} Evaluate abs(${value['bytes']}-${value['originalBytes']})
Run Keyword If "${orderBy}"=="bytes" Should Be True ${bytesAbs}<=${hitsAbs}
Run Keyword If "${orderBy}"=="packets" Should Be True ${packetsAbs}<=${hitsAbs}
Run Keyword If "${orderBy}"=="sessions" Should Be True ${sessionsAbs}<=${hitsAbs}
END
[Return] OK
Pinning-Validation
[Documentation]
... Pinning验证
... 对应not、maybe、yes三种类型总量和不大于安全策略日志Policy Hits by Action Sessions Intercept
[Arguments] ${starttime} ${endtime} ${limit}
${data} Set Variable startTime=${startTime}&endTime=${endTime}&limit=${limit}
${url1} Set Variable report/policyevent/hit/pinning
${bfResponse} TrafficBFRequest ${url1} ${data}
${data} Set Variable ${bfResponse['data']}
${notPinningNum} Set Variable ${data['notPinningNum']}
${maybePinningNum} Set Variable ${data['maybePinningNum']}
${pinningNum} Set Variable ${data['pinningNum']}
${total} Evaluate ${notPinningNum}+${maybePinningNum}+${pinningNum}
${url2} Set Variable report/policyevent/hit/action
${data1} Set Variable logType=security_event_hits_log&startTime=${startTime}&endTime=${endTime}&limit=${limit}&orderBy=sessions
${bfResponse} TrafficBFRequest ${url2} ${data1}
${data} Set Variable ${bfResponse['data']}
${actionCount} Set Variable ${data['actionCount']}
${Intercept} Set Variable ${0}
FOR ${action} IN @{actionCount}
${Intercept} Run Keyword If "${action['action']}"=="Intercept" Set Variable ${action['sessions']}
... ELSE Set Variable ${Intercept}
END
Should Be True ${Intercept}>=${total}

View File

@@ -62,3 +62,5 @@ ${snmpCommunity} public
#API配置信息
${oamHost} 192.168.40.210
${oamPort} 50080
#命中日志绝对值差,用于比对两种接口查询数据结果差值
${hitsAbs} 1000