3 Library RequestsLibrary
4 Library OperatingSystem
6 Resource ${CURDIR}/../../common-library.robot
11 [Documentation] Verify policy api health check
12 ${resp}= GetReq /policy/api/v1/healthcheck
13 Should Be Equal As Strings ${resp.json()['code']} 200
14 Should Be Equal As Strings ${resp.json()['healthy']} True
15 Should Be Equal As Strings ${resp.json()['message']} alive
18 [Documentation] Verify policy api statistics
19 ${resp}= GetReq /policy/api/v1/statistics
20 Should Be Equal As Strings ${resp.json()['code']} 200
23 [Documentation] Retrieve all policy types
24 FetchPolicyTypes /policy/api/v1/policytypes 37
27 [Documentation] Create an existing policy type with modification and keeping the same version should result in error.
28 CreatePolicyType /policy/api/v1/policytypes 406 onap.policy.monitoring.tcagen2.v1.json null null
31 [Documentation] Create a policy type named 'onap.policies.monitoring.tcagen2' and version '2.0.0'
32 CreatePolicyType /policy/api/v1/policytypes 200 onap.policy.monitoring.tcagen2.v2.json onap.policies.monitoring.tcagen2 2.0.0
34 RetrieveMonitoringPolicyTypes
35 [Documentation] Retrieve all monitoring related policy types
36 FetchPolicyTypes /policy/api/v1/policytypes/onap.policies.monitoring.tcagen2 2
38 CreateNewMonitoringPolicyV1
39 [Documentation] Create a policy named 'onap.restart.tca' and version '1.0.0' using specific api
40 ${postjson}= Get file ${DATA}/vCPE.policy.monitoring.input.tosca.json
41 CreatePolicy /policy/api/v1/policytypes/onap.policies.monitoring.tcagen2/versions/1.0.0/policies 200 ${postjson} onap.restart.tca 1.0.0
43 CreateNewMonitoringPolicyV1Again
44 [Documentation] Create an existing policy with modification and keeping the same version should result in error.
45 ${postjson}= Get file ${DATA}/vCPE.policy.monitoring.input.tosca.v1_2.json
46 CreatePolicy /policy/api/v1/policies 406 ${postjson} null null
48 CreateNewMonitoringPolicyV2
49 [Documentation] Create a policy named 'onap.restart.tca' and version '2.0.0' using generic api
50 ${postjson}= Get file ${DATA}/vCPE.policy.monitoring.input.tosca.v2.json
51 CreatePolicy /policy/api/v1/policies 200 ${postjson} onap.restart.tca 2.0.0
55 [Documentation] Create node templates in database using specific api
56 ${postjson}= Get file ${NODETEMPLATES}/nodetemplates.metadatasets.input.tosca.json
57 CreateNodeTemplate /policy/api/v1/nodetemplates 200 ${postjson} 3
59 RetrievePoliciesOfType
60 [Documentation] Retrieve all policies belonging to a specific Policy Type
61 FetchPolicies /policy/api/v1/policytypes/onap.policies.monitoring.tcagen2/versions/1.0.0/policies 2
64 [Documentation] Retrieve all policies
65 FetchPolicies /policy/api/v1/policies 3
67 RetrieveSpecificPolicy
68 [Documentation] Retrieve a policy named 'onap.restart.tca' and version '1.0.0' using generic api
69 FetchPolicy /policy/api/v1/policies/onap.restart.tca/versions/1.0.0 onap.restart.tca
71 RetrieveAllNodeTemplates
72 [Documentation] Retrieve all node templates
73 FetchNodeTemplates /policy/api/v1/nodetemplates 3
75 RetrieveSpecificNodeTemplate
76 [Documentation] Retrieve a node template named 'apexMetadata_grpc' and version '1.2.1' using generic api
77 FetchNodeTemplate /policy/api/v1/nodetemplates/apexMetadata_grpc/versions/1.2.1 apexMetadata_grpc
79 DeleteSpecificNodeTemplate
80 [Documentation] Delete a node template named 'apexMetadata_adaptive' and version '2.3.1' using generic api
81 DeleteReq /policy/api/v1/nodetemplates/apexMetadata_adaptive/versions/2.3.1 200
82 DeleteReq /policy/api/v1/nodetemplates/apexMetadata_adaptive/versions/2.3.1 404
86 [Documentation] Delete a policy named 'onap.restart.tca' and version '1.0.0' using generic api
87 DeleteReq /policy/api/v1/policies/onap.restart.tca/versions/1.0.0 200
88 DeleteReq /policy/api/v1/policies/onap.restart.tca/versions/1.0.0 404
90 DeleteSpecificPolicyV2
91 [Documentation] Delete a policy named 'onap.restart.tca' and version '2.0.0' using specific api
92 DeleteReq /policy/api/v1/policytypes/onap.policies.monitoring.tcagen2/versions/1.0.0/policies/onap.restart.tca/versions/2.0.0 200
93 DeleteReq /policy/api/v1/policytypes/onap.policies.monitoring.tcagen2/versions/1.0.0/policies/onap.restart.tca/versions/2.0.0 404
95 DeleteSpecificPolicyTypeV1
96 [Documentation] Delete a policy type named 'onap.policies.monitoring.tcagen2' and version '1.0.0'
97 DeleteReq /policy/api/v1/policytypes/onap.policies.monitoring.tcagen2/versions/1.0.0 200
98 DeleteReq /policy/api/v1/policytypes/onap.policies.monitoring.tcagen2/versions/1.0.0 404
100 DeleteSpecificPolicyTypeV2
101 [Documentation] Delete a policy type named 'onap.policies.monitoring.tcagen2' and version '2.0.0'
102 DeleteReq /policy/api/v1/policytypes/onap.policies.monitoring.tcagen2/versions/2.0.0 200
103 DeleteReq /policy/api/v1/policytypes/onap.policies.monitoring.tcagen2/versions/2.0.0 404
106 [Documentation] Verify policy-api is exporting prometheus metrics
107 ${auth}= PolicyAdminAuth
108 ${resp}= GetMetrics ${POLICY_API_IP} ${auth}
109 Should Contain ${resp.text} http_server_requests_seconds_count{exception="None",method="GET",outcome="SUCCESS",status="200",uri="/policy/api/v1/healthcheck",} 1.0
110 Should Contain ${resp.text} http_server_requests_seconds_count{exception="None",method="GET",outcome="SUCCESS",status="200",uri="/policy/api/v1/statistics",} 1.0
111 Should Contain ${resp.text} http_server_requests_seconds_count{exception="None",method="GET",outcome="SUCCESS",status="200",uri="/policy/api/v1/policytypes",} 1.0
112 Should Contain ${resp.text} http_server_requests_seconds_count{exception="None",method="GET",outcome="SUCCESS",status="200",uri="/policy/api/v1/policies",} 1.0
113 Should Contain ${resp.text} http_server_requests_seconds_count{exception="None",method="GET",outcome="SUCCESS",status="200",uri="/policy/api/v1/policies/{policyId}/versions/{policyVersion}",} 1.0
114 Should Contain ${resp.text} http_server_requests_seconds_count{exception="None",method="GET",outcome="SUCCESS",status="200",uri="/policy/api/v1/policytypes/{policyTypeId}/versions/{policyTypeVersion}/policies",} 1.0
115 Should Contain ${resp.text} http_server_requests_seconds_count{exception="None",method="POST",outcome="SUCCESS",status="200",uri="/policy/api/v1/policytypes/{policyTypeId}/versions/{policyTypeVersion}/policies",} 1.0
116 Should Contain ${resp.text} http_server_requests_seconds_count{exception="None",method="POST",outcome="SUCCESS",status="200",uri="/policy/api/v1/policytypes",} 1.0
117 Should Contain ${resp.text} http_server_requests_seconds_count{exception="None",method="DELETE",outcome="SUCCESS",status="200",uri="/policy/api/v1/policies/{policyId}/versions/{policyVersion}",} 1.0
118 Should Contain ${resp.text} http_server_requests_seconds_count{exception="None",method="DELETE",outcome="SUCCESS",status="200",uri="/policy/api/v1/policytypes/{policyTypeId}/versions/{versionId}",} 2.0
119 Should Contain ${resp.text} http_server_requests_seconds_count{exception="None",method="DELETE",outcome="SUCCESS",status="200",uri="/policy/api/v1/policytypes/{policyTypeId}/versions/{policyTypeVersion}/policies/{policyId}/versions/{policyVersion}",} 1.0
120 Should Contain ${resp.text} http_server_requests_seconds_sum
121 Should Contain ${resp.text} http_server_requests_seconds_max
122 Should Contain ${resp.text} spring_data_repository_invocations_seconds_count
123 Should Contain ${resp.text} spring_data_repository_invocations_seconds_sum
124 Should Contain ${resp.text} spring_data_repository_invocations_seconds_max
125 Should Contain ${resp.text} jvm_threads_live_threads
131 ${auth}= PolicyAdminAuth
132 ${resp}= PerformGetRequest ${POLICY_API_IP} ${url} 200 null ${auth}
136 [Arguments] ${url} ${expectedstatus}
137 ${auth}= PolicyAdminAuth
138 ${resp}= PerformDeleteRequest ${POLICY_API_IP} ${url} ${expectedstatus} ${auth}
142 [Arguments] ${url} ${expectedstatus} ${jsonfile} ${policytypename} ${policytypeversion}
143 [Documentation] Create the specific policy type
144 ${postjson}= Get file ${CURDIR}/data/${jsonfile}
145 ${auth}= PolicyAdminAuth
146 ${resp}= PerformPostRequest ${POLICY_API_IP} ${url} ${expectedstatus} ${postjson} null ${auth}
147 Run Keyword If ${expectedstatus}==200 List Should Contain Value ${resp.json()['policy_types']} ${policytypename}
148 Run Keyword If ${expectedstatus}==200 Should Be Equal As Strings ${resp.json()['policy_types']['${policytypename}']['version']} ${policytypeversion}
151 [Arguments] ${url} ${expectedLength}
152 [Documentation] Fetch all policy types
153 ${resp}= GetReq ${url}
154 Length Should Be ${resp.json()['policy_types']} ${expectedLength}
157 [Arguments] ${url} ${keyword}
158 [Documentation] Fetch the specific policy
159 ${resp}= GetReq ${url}
160 Dictionary Should Contain Key ${resp.json()['topology_template']['policies'][0]} ${keyword}
163 [Arguments] ${url} ${expectedLength}
164 [Documentation] Fetch all policies
165 ${resp}= GetReq ${url}
166 Length Should Be ${resp.json()['topology_template']['policies']} ${expectedLength}
170 [Arguments] ${url} ${expectedLength}
171 [Documentation] Fetch all node templates
172 ${resp}= GetReq ${url}
173 Length Should Be ${resp.json()} ${expectedLength}
176 [Arguments] ${url} ${keyword}
177 [Documentation] Fetch the specific node template
178 ${resp}= GetReq ${url}
179 Dictionary Should Contain Value ${resp.json()[0]} ${keyword}