summaryrefslogtreecommitdiffstats
path: root/csit/resources/tests/apex-pdp-common.robot
diff options
context:
space:
mode:
authorwaynedunican <wayne.dunican@est.tech>2023-03-01 09:07:31 +0000
committerwaynedunican <wayne.dunican@est.tech>2023-03-31 09:22:52 +0100
commite4ff7e58336dfb4fa6699e0a37dbbb298a129ada (patch)
tree628b9dd05e310075d45af382655142fdcd419908 /csit/resources/tests/apex-pdp-common.robot
parent181e6c525c5e05bbb3e580fd0793b8332200659d (diff)
Add SLA Validations for Apex-PDP
- Add multiple apex microservice SLA tests - Add single instance apex SLA tests - Single instance SLA tests to be ran as part of CSIT runs - Multiple microservice will not be ran as part of CSITs due to high resource consumption - Multiple microservice SLA test results can be found in the linked JIRA - Added setup scripts for multiple instance SLA tests - nginx added for load balancing purposes for multiple apex instances Issue-ID: POLICY-4530 Issue-ID: POLICY-4164 Change-Id: Ib86e96c57f4b7bf2b4f5e930fd7d4a3805b50687 Signed-off-by: Wayne Dunican <wayne.dunican@est.tech> Signed-off-by: adheli.tavares <adheli.tavares@est.tech>
Diffstat (limited to 'csit/resources/tests/apex-pdp-common.robot')
-rw-r--r--csit/resources/tests/apex-pdp-common.robot64
1 files changed, 64 insertions, 0 deletions
diff --git a/csit/resources/tests/apex-pdp-common.robot b/csit/resources/tests/apex-pdp-common.robot
new file mode 100644
index 00000000..cf3f1f49
--- /dev/null
+++ b/csit/resources/tests/apex-pdp-common.robot
@@ -0,0 +1,64 @@
+*** 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
+
+VerifyPdpStatistics
+ [Documentation] Verify pdp statistics after policy execution
+ [Arguments] ${deployCount} ${deploySuccessCount} ${executedCount} ${executedSuccessCount}
+ ${policyadmin}= PolicyAdminAuth
+ ${resp}= PerformGetRequest ${POLICY_PAP_IP} /policy/pap/v1/pdps/statistics/defaultGroup/apex/${pdpName} 200 null ${policyadmin}
+ Should Be Equal As Strings ${resp.status_code} 200
+ Should Be Equal As Strings ${resp.json()['defaultGroup']['apex'][0]['pdpInstanceId']} ${pdpName}
+ Should Be Equal As Strings ${resp.json()['defaultGroup']['apex'][0]['pdpGroupName']} defaultGroup
+ Should Be Equal As Strings ${resp.json()['defaultGroup']['apex'][0]['pdpSubGroupName']} apex
+ Should Be Equal As Strings ${resp.json()['defaultGroup']['apex'][0]['policyDeployCount']} ${deployCount}
+ Should Be Equal As Strings ${resp.json()['defaultGroup']['apex'][0]['policyDeploySuccessCount']} ${deploySuccessCount}
+ Should Be Equal As Strings ${resp.json()['defaultGroup']['apex'][0]['policyDeployFailCount']} 0
+ Should Be Equal As Strings ${resp.json()['defaultGroup']['apex'][0]['policyExecutedCount']} ${executedCount}
+ Should Be Equal As Strings ${resp.json()['defaultGroup']['apex'][0]['policyExecutedSuccessCount']} ${executedSuccessCount}
+ Should Be Equal As Strings ${resp.json()['defaultGroup']['apex'][0]['policyExecutedFailCount']} 0
+
+CheckLogMessage
+ [Documentation] Read log messages received and check for expected content.
+ [Arguments] ${status} ${expectedMsg}
+ ${result}= CheckTopic APEX-CL-MGT ${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} \ No newline at end of file