Add slas test for drools-apps and xacml-pdp 15/139115/3
authorrameshiyer27 <ramesh.murugan.iyer@est.tech>
Tue, 1 Oct 2024 14:19:25 +0000 (15:19 +0100)
committerrameshiyer27 <ramesh.murugan.iyer@est.tech>
Mon, 7 Oct 2024 12:38:08 +0000 (13:38 +0100)
Issue-ID: POLICY-5126
Change-Id: I989a3870e021a9054d7d39b83cefb626ac6fe52f
Signed-off-by: rameshiyer27 <ramesh.murugan.iyer@est.tech>
compose/metrics/prometheus.yml
csit/resources/tests/apex-pdp-common.robot
csit/resources/tests/apex-slas.robot
csit/resources/tests/common-library.robot
csit/resources/tests/drools-applications-slas.robot [new file with mode: 0644]
csit/resources/tests/xacml-pdp-slas.robot [new file with mode: 0644]
csit/run-k8s-csit.sh
csit/run-project-csit.sh

index c3d87f5..5ff5f94 100644 (file)
@@ -1,6 +1,6 @@
 #
 # ===========LICENSE_START====================================================
-#  Copyright (C) 2022-2023 Nordix Foundation.
+#  Copyright (C) 2022-2024 Nordix Foundation.
 # ============================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -58,7 +58,7 @@ scrape_configs:
 - job_name: "drools-apps-metrics"
   static_configs:
   - targets:
-    - "drools-apps:9696"
+    - "policy-drools-apps:9696"
   basic_auth:
     username: "demo@people.osaaf.org"
     password: "demo123456!"
@@ -66,7 +66,7 @@ scrape_configs:
 - job_name: "drools-pdp-metrics"
   static_configs:
   - targets:
-    - "drools:9696"
+    - "policy-drools:9696"
   basic_auth:
     username: "demo@people.osaaf.org"
     password: "demo123456!"
index 958f690..8192460 100644 (file)
@@ -31,14 +31,6 @@ CheckLogMessage
     ${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
index f6e64b8..760bc34 100644 (file)
@@ -17,7 +17,7 @@ Healthcheck
      Set Suite Variable    ${pdpName}    ${resp.json()['name']}
 
 ValidatePolicyExecutionAndEventRateLowComplexity
-    [Documentation]  Validate that a moderate complexity policity can be executed in less than 100ms and minimum 10 events triggered per second
+    [Documentation]  Validate that a moderate complexity policy can be executed in less than 100ms and minimum 10 events triggered per second
     Set Test Variable    ${policyName}    onap.policies.apex.pnf.Test
     ${postjson}=  Get File  ${CURDIR}/data/${policyName}.json
     CreatePolicySuccessfully  /policy/api/v1/policytypes/onap.policies.native.Apex/versions/1.0.0/policies  ${postjson}  ${policyName}  1.0.0
@@ -31,7 +31,7 @@ ValidatePolicyExecutionAndEventRateLowComplexity
     ValidateEventExecution    ${eventStartTime}  ${eventEndTime}  10
 
 ValidatePolicyExecutionAndEventRateModerateComplexity
-    [Documentation]  Validate that a low complexity policity can be executed in less than 1000ms and minimum 1 events triggered per second
+    [Documentation]  Validate that a low complexity policy can be executed in less than 1000ms and minimum 1 events triggered per second
     Set Test Variable    ${policyName}    onap.policies.native.apex.Sampledomain
     ${postjson}=  Get File  ${CURDIR}/data/${policyName}.json
     CreatePolicySuccessfully  /policy/api/v1/policytypes/onap.policies.native.Apex/versions/1.0.0/policies  ${postjson}  ${policyName}  1.0.0
@@ -42,7 +42,7 @@ ValidatePolicyExecutionAndEventRateModerateComplexity
     ValidateEventExecution    ${eventStartTime}  ${eventEndTime}  1
 
 ValidatePolicyExecutionAndEventRateHighComplexity
-    [Documentation]  Validate that a high complexity policity can be executed in less than 5000ms and minimum 0.2 events triggered per second
+    [Documentation]  Validate that a high complexity policy can be executed in less than 5000ms and minimum 0.2 events triggered per second
     Set Test Variable    ${policyName}    onap.policies.apex.pnf.metadataSet.Test
     ${postjson}=  Get File  ${CURDIR}/data/${policyName}.json
     CreatePolicySuccessfully  /policy/api/v1/policytypes/onap.policies.native.Apex/versions/1.0.0/policies  ${postjson}  ${policyName}  1.0.0
index 4d69b34..e0b1c0f 100644 (file)
@@ -157,3 +157,11 @@ GetKafkaTopic
     [Arguments]    ${topic}
     ${resp}=    Run Process    ${CURDIR}/make_topics.py    ${topic}    ${KAFKA_IP}
     Log    ${resp.stdout}
+
+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}
\ No newline at end of file
diff --git a/csit/resources/tests/drools-applications-slas.robot b/csit/resources/tests/drools-applications-slas.robot
new file mode 100644 (file)
index 0000000..a153925
--- /dev/null
@@ -0,0 +1,14 @@
+*** Settings ***
+Library    OperatingSystem
+Resource    common-library.robot
+
+*** Test Cases ***
+WaitForPrometheusServer
+    [Documentation]  Sleep time to wait for Prometheus server to gather all metrics
+    Sleep    1 minute
+
+ValidatePolicyExecutionTimes
+    [Documentation]    Validate policy execution times using prometheus metrics
+    ValidatePolicyExecution   pdpd_policy_executions_latency_seconds_count{controller="usecases",controlloop="ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3",policy="operational.scaleout:1.0.0",status="SUCCESS", instance="policy-drools-apps:9696", job="drools-apps-metrics"}  1000
+    ValidatePolicyExecution   pdpd_policy_deployments_total{state="ACTIVE",operation="deploy",status="SUCCESS", instance="policy-drools-apps:9696", job="drools-apps-metrics"}  3000
+
diff --git a/csit/resources/tests/xacml-pdp-slas.robot b/csit/resources/tests/xacml-pdp-slas.robot
new file mode 100644 (file)
index 0000000..e3d2d91
--- /dev/null
@@ -0,0 +1,30 @@
+*** Settings ***
+Library    OperatingSystem
+Resource    common-library.robot
+
+*** Test Cases ***
+WaitForPrometheusServer
+    [Documentation]  Sleep time to wait for Prometheus server to gather all metrics
+    Sleep    1 minute
+
+ValidatePolicyDecisionsGauge
+    [Documentation]    Validate policy execution gauge using prometheus metrics
+    ValidatePrometheusMetric   pdpx_policy_decisions_created{application="optimization",status="permit", instance="policy-xacml-pdp:6969", job="xacml-pdp-metrics"}  1.8E9
+    ValidatePrometheusMetric   pdpx_policy_decisions_created{application="guard",status="not_applicable", instance="policy-xacml-pdp:6969", job="xacml-pdp-metrics"}  1.8E9
+    ValidatePrometheusMetric   pdpx_policy_decisions_created{application="monitoring",status="permit", instance="policy-xacml-pdp:6969", job="xacml-pdp-metrics"}  1.8E9
+    ValidatePrometheusMetric   pdpx_policy_decisions_created{application="naming",status="permit", instance="policy-xacml-pdp:6969", job="xacml-pdp-metrics"}  1.8E9
+
+ValidatePolicyDecisionsTotalCounter
+    [Documentation]    Validate policy decision counters using prometheus metrics
+    ValidatePrometheusMetric   pdpx_policy_decisions_total{application="optimization",status="permit", instance="policy-xacml-pdp:6969", job="xacml-pdp-metrics"}  1
+    ValidatePrometheusMetric   pdpx_policy_decisions_total{application="guard",status="not_applicable", instance="policy-xacml-pdp:6969", job="xacml-pdp-metrics"}  1
+    ValidatePrometheusMetric   pdpx_policy_decisions_total{application="monitoring",status="permit", instance="policy-xacml-pdp:6969", job="xacml-pdp-metrics"}  2
+    ValidatePrometheusMetric   pdpx_policy_decisions_total{application="naming",status="permit", instance="policy-xacml-pdp:6969", job="xacml-pdp-metrics"}  1
+
+*** Keywords ***
+ValidatePrometheusMetric
+    [Arguments]  ${url}  ${expectedLimit}
+    [Documentation]  Check that the policy execution is under X limit
+    ${resp}=  QueryPrometheus  ${url}
+    ${actualValue}=  Evaluate  ${resp['data']['result'][0]['value'][1]}
+    Should Be True   ${actualValue} <= ${expectedLimit}
index 69c5f9d..feab043 100755 (executable)
@@ -32,7 +32,7 @@ POLICY_CLAMP_ROBOT="policy-clamp-test.robot clamp-slas.robot"
 POLICY_API_ROBOT="api-test.robot api-slas.robot"
 POLICY_PAP_ROBOT="pap-test.robot pap-slas.robot"
 POLICY_APEX_PDP_ROBOT="apex-pdp-test.robot apex-slas.robot"
-POLICY_XACML_PDP_ROBOT="xacml-pdp-test.robot"
+POLICY_XACML_PDP_ROBOT="xacml-pdp-test.robot xacml-pdp-slas.robot"
 POLICY_DROOLS_PDP_ROBOT="drools-pdp-test.robot"
 POLICY_DISTRIBUTION_ROBOT="distribution-test.robot"
 
index 409209f..8183cde 100755 (executable)
@@ -123,8 +123,8 @@ function apex_healthcheck() {
 }
 
 function setup_drools_apps() {
-    export ROBOT_FILES="drools-applications-test.robot"
-    source ${DOCKER_COMPOSE_DIR}/start-compose.sh drools-applications
+    export ROBOT_FILES="drools-applications-test.robot drools-applications-slas.robot"
+    source ${DOCKER_COMPOSE_DIR}/start-compose.sh drools-applications --grafana
     sleep 10
     bash ${SCRIPTS}/wait_for_rest.sh localhost ${PAP_PORT}
     sleep 10
@@ -134,8 +134,8 @@ function setup_drools_apps() {
 }
 
 function setup_xacml_pdp() {
-    export ROBOT_FILES="xacml-pdp-test.robot"
-    source ${DOCKER_COMPOSE_DIR}/start-compose.sh xacml-pdp
+    export ROBOT_FILES="xacml-pdp-test.robot xacml-pdp-slas.robot"
+    source ${DOCKER_COMPOSE_DIR}/start-compose.sh xacml-pdp --grafana
     sleep 10
     bash ${SCRIPTS}/wait_for_rest.sh localhost "${XACML_PORT}"
 }