Add SLA Validations for Apex-PDP
[policy/docker.git] / csit / resources / tests / apex-pdp-common.robot
1 *** Settings ***
2 Library     Collections
3 Library     RequestsLibrary
4 Library     OperatingSystem
5 Library     json
6 Library     Process
7 Resource    ${CURDIR}/common-library.robot
8
9 *** Keywords ***
10
11 DeployPolicy
12      [Documentation]    Deploy the policy in apex-pdp engine
13      ${postjson}=    Get File  ${CURDIR}/data/policy_deploy.json
14      ${postjson}=    evaluate    json.loads('''${postjson}''')    json
15      set to dictionary    ${postjson['groups'][0]['deploymentSubgroups'][0]['policies'][0]}    name=${policyName}
16      ${postjson}=    evaluate    json.dumps(${postjson})    json
17      ${policyadmin}=  PolicyAdminAuth
18      PerformPostRequest  ${POLICY_PAP_IP}  /policy/pap/v1/pdps/deployments/batch  202  ${postjson}  null  ${policyadmin}
19
20 RunEventOnApexEngine
21     [Documentation]    Send event to verify policy execution
22     Create Session   apexSession  http://${APEX_EVENTS_IP}   max_retries=1
23     ${data}=    Get Binary File     ${CURDIR}/data/event.json
24     &{headers}=  Create Dictionary    Content-Type=application/json    Accept=application/json
25     ${resp}=    PUT On Session    apexSession    /apex/FirstConsumer/EventIn    data=${data}   headers=${headers}
26     Should Be Equal As Strings    ${resp.status_code}   200
27
28 VerifyPdpStatistics
29      [Documentation]    Verify pdp statistics after policy execution
30      [Arguments]    ${deployCount}    ${deploySuccessCount}    ${executedCount}    ${executedSuccessCount}
31      ${policyadmin}=  PolicyAdminAuth
32      ${resp}=  PerformGetRequest  ${POLICY_PAP_IP}  /policy/pap/v1/pdps/statistics/defaultGroup/apex/${pdpName}  200  null  ${policyadmin}
33      Should Be Equal As Strings    ${resp.status_code}     200
34      Should Be Equal As Strings    ${resp.json()['defaultGroup']['apex'][0]['pdpInstanceId']}  ${pdpName}
35      Should Be Equal As Strings    ${resp.json()['defaultGroup']['apex'][0]['pdpGroupName']}  defaultGroup
36      Should Be Equal As Strings    ${resp.json()['defaultGroup']['apex'][0]['pdpSubGroupName']}  apex
37      Should Be Equal As Strings    ${resp.json()['defaultGroup']['apex'][0]['policyDeployCount']}  ${deployCount}
38      Should Be Equal As Strings    ${resp.json()['defaultGroup']['apex'][0]['policyDeploySuccessCount']}  ${deploySuccessCount}
39      Should Be Equal As Strings    ${resp.json()['defaultGroup']['apex'][0]['policyDeployFailCount']}  0
40      Should Be Equal As Strings    ${resp.json()['defaultGroup']['apex'][0]['policyExecutedCount']}  ${executedCount}
41      Should Be Equal As Strings    ${resp.json()['defaultGroup']['apex'][0]['policyExecutedSuccessCount']}  ${executedSuccessCount}
42      Should Be Equal As Strings    ${resp.json()['defaultGroup']['apex'][0]['policyExecutedFailCount']}  0
43
44 CheckLogMessage
45     [Documentation]    Read log messages received and check for expected content.
46     [Arguments]    ${status}    ${expectedMsg}
47     ${result}=     CheckTopic     APEX-CL-MGT    ${status}
48     Should Contain    ${result}    ${expectedMsg}
49
50 ValidatePolicyExecution
51     [Arguments]  ${url}  ${executionTime}
52     [Documentation]  Check that policy execution under X milliseconds
53     ${resp}=  QueryPrometheus  ${url}
54     ${rawNumber}=  Evaluate  ${resp['data']['result'][0]['value'][1]}
55     ${actualTime}=   Set Variable  ${rawNumber * ${1000}}
56     Should Be True   ${actualTime} <= ${executionTime}
57
58 ValidateEventExecution
59     [Arguments]  ${eventStartTime}  ${eventEndTime}  ${eventsNo}
60     [Documentation]    Check that X amount of events were exeuted per second
61     ${eventTimeTaken}=  Subtract Date From Date  ${eventEndTime}  ${eventStartTime}
62     ${eventResult}=  Set Variable  ${eventTimeTaken * ${1000}}
63     ${eventsPerSecond}=  Set Variable  ${${1000} / ${eventResult}}
64     Should Be True  ${eventsPerSecond} >= ${eventsNo}