blob: e64583183dcc1f6254f9071c44df92141e933dff [file] [log] [blame]
*** Settings ***
Library Collections
Library RequestsLibrary
Library OperatingSystem
Library json
Library Process
Resource ${CURDIR}/common-library.robot
*** Keywords ***
DeployPolicy
[Documentation] Deploy the policy in apex-pdp engine
${postjson}= Get File ${CURDIR}/data/policy_deploy.json
${postjson}= evaluate json.loads('''${postjson}''') json
set to dictionary ${postjson['groups'][0]['deploymentSubgroups'][0]['policies'][0]} name=${policyName}
${postjson}= evaluate json.dumps(${postjson}) json
${policyadmin}= PolicyAdminAuth
PerformPostRequest ${POLICY_PAP_IP} /policy/pap/v1/pdps/deployments/batch 202 ${postjson} null ${policyadmin}
RunEventOnApexEngine
[Documentation] Send event to verify policy execution
Create Session apexSession http://${APEX_EVENTS_IP} max_retries=1
${data}= Get Binary File ${CURDIR}/data/event.json
&{headers}= Create Dictionary Content-Type=application/json Accept=application/json
${resp}= PUT On Session apexSession /apex/FirstConsumer/EventIn data=${data} headers=${headers}
Should Be Equal As Strings ${resp.status_code} 200
CheckLogMessage
[Documentation] Read log messages received and check for expected content.
[Arguments] ${topic} ${status} ${expectedMsg}
${result}= CheckKafkaTopic ${topic} ${status}
Should Contain ${result} ${expectedMsg}
ValidatePolicyExecution
[Arguments] ${url} ${executionTime}
[Documentation] Check that policy execution under X milliseconds
${resp}= QueryPrometheus ${url}
${rawNumber}= Evaluate ${resp['data']['result'][0]['value'][1]}
${actualTime}= Set Variable ${rawNumber * ${1000}}
Should Be True ${actualTime} <= ${executionTime}
ValidateEventExecution
[Arguments] ${eventStartTime} ${eventEndTime} ${eventsNo}
[Documentation] Check that X amount of events were exeuted per second
${eventTimeTaken}= Subtract Date From Date ${eventEndTime} ${eventStartTime}
${eventResult}= Set Variable ${eventTimeTaken * ${1000}}
${eventsPerSecond}= Set Variable ${${1000} / ${eventResult}}
Should Be True ${eventsPerSecond} >= ${eventsNo}