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 an existing policy type with modification and keeping the same version should result in error.
32 CreatePolicyType /policy/api/v1/policytypes 406 onap.policy.monitoring.tcagen2.v2.json null null
35 [Documentation] Create a policy type named 'onap.policies.monitoring.tcagen2' and version '3.0.0'
36 CreatePolicyType /policy/api/v1/policytypes 200 onap.policy.monitoring.tcagen2.v3.json onap.policies.monitoring.tcagen2 3.0.0
38 RetrieveMonitoringPolicyTypes
39 [Documentation] Retrieve all monitoring related policy types
40 FetchPolicyTypes /policy/api/v1/policytypes/onap.policies.monitoring.tcagen2 2
42 CreateNewMonitoringPolicyV1
43 [Documentation] Create a policy named 'onap.restart.tca' and version '1.0.0' using specific api
44 ${postjson}= Get file ${DATA}/vCPE.policy.monitoring.input.tosca.json
45 CreatePolicy /policy/api/v1/policytypes/onap.policies.monitoring.tcagen2/versions/1.0.0/policies 200 ${postjson} onap.restart.tca 1.0.0
47 CreateNewMonitoringPolicyV1Again
48 [Documentation] Create an existing policy with modification and keeping the same version should result in error.
49 ${postjson}= Get file ${DATA}/vCPE.policy.monitoring.input.tosca.v1_2.json
50 CreatePolicy /policy/api/v1/policies 406 ${postjson} null null
52 CreateNewMonitoringPolicyV2
53 [Documentation] Create a policy named 'onap.restart.tca' and version '2.0.0' using generic api
54 ${postjson}= Get file ${DATA}/vCPE.policy.monitoring.input.tosca.v2.json
55 CreatePolicy /policy/api/v1/policies 200 ${postjson} onap.restart.tca 2.0.0
58 [Documentation] Create node templates in database using specific api
59 ${postjson}= Get file ${NODETEMPLATES}/nodetemplates.metadatasets.input.tosca.json
60 CreateNodeTemplate /policy/api/v1/nodetemplates 200 ${postjson} 3
62 RetrievePoliciesOfType
63 [Documentation] Retrieve all policies belonging to a specific Policy Type
64 FetchPolicies /policy/api/v1/policytypes/onap.policies.monitoring.tcagen2/versions/1.0.0/policies 2
67 [Documentation] Retrieve all policies
68 FetchPolicies /policy/api/v1/policies 3
70 RetrieveSpecificPolicy
71 [Documentation] Retrieve a policy named 'onap.restart.tca' and version '1.0.0' using generic api
72 FetchPolicy /policy/api/v1/policies/onap.restart.tca/versions/1.0.0 onap.restart.tca
74 RetrieveAllNodeTemplates
75 [Documentation] Retrieve all node templates
76 FetchNodeTemplates /policy/api/v1/nodetemplates 3
78 RetrieveSpecificNodeTemplate
79 [Documentation] Retrieve a node template named 'apexMetadata_grpc' and version '1.2.1' using generic api
80 FetchNodeTemplate /policy/api/v1/nodetemplates/apexMetadata_grpc/versions/1.2.1 apexMetadata_grpc
82 DeleteSpecificNodeTemplate
83 [Documentation] Delete a node template named 'apexMetadata_adaptive' and version '2.3.1' using generic api
84 DeleteReq /policy/api/v1/nodetemplates/apexMetadata_adaptive/versions/2.3.1 200
85 DeleteReq /policy/api/v1/nodetemplates/apexMetadata_adaptive/versions/2.3.1 404
89 [Documentation] Delete a policy named 'onap.restart.tca' and version '1.0.0' using generic api
90 DeleteReq /policy/api/v1/policies/onap.restart.tca/versions/1.0.0 200
91 DeleteReq /policy/api/v1/policies/onap.restart.tca/versions/1.0.0 404
93 DeleteSpecificPolicyV2
94 [Documentation] Delete a policy named 'onap.restart.tca' and version '2.0.0' using specific api
95 DeleteReq /policy/api/v1/policytypes/onap.policies.monitoring.tcagen2/versions/1.0.0/policies/onap.restart.tca/versions/2.0.0 200
96 DeleteReq /policy/api/v1/policytypes/onap.policies.monitoring.tcagen2/versions/1.0.0/policies/onap.restart.tca/versions/2.0.0 404
98 DeleteSpecificPolicyTypeV1
99 [Documentation] Delete a policy type named 'onap.policies.monitoring.tcagen2' and version '1.0.0'
100 DeleteReq /policy/api/v1/policytypes/onap.policies.monitoring.tcagen2/versions/1.0.0 200
101 DeleteReq /policy/api/v1/policytypes/onap.policies.monitoring.tcagen2/versions/1.0.0 404
103 DeleteSpecificPolicyTypeV2
104 [Documentation] Delete a policy type named 'onap.policies.monitoring.tcagen2' and version '2.0.0'
105 DeleteReq /policy/api/v1/policytypes/onap.policies.monitoring.tcagen2/versions/2.0.0 200
106 DeleteReq /policy/api/v1/policytypes/onap.policies.monitoring.tcagen2/versions/2.0.0 404
108 DeleteSpecificPolicyTypeV3
109 [Documentation] Delete a policy type named 'onap.policies.monitoring.tcagen2' and version '3.0.0'
110 DeleteReq /policy/api/v1/policytypes/onap.policies.monitoring.tcagen2/versions/3.0.0 200
111 DeleteReq /policy/api/v1/policytypes/onap.policies.monitoring.tcagen2/versions/3.0.0 404
114 [Documentation] Verify policy-api is exporting prometheus metrics
115 ${auth}= PolicyAdminAuth
116 ${resp}= GetMetrics ${POLICY_API_IP} ${auth} /policy/api/v1/
117 Should Contain ${resp.text} http_server_requests_seconds_count{exception="None",method="GET",outcome="SUCCESS",status="200",uri="/healthcheck",}
118 Should Contain ${resp.text} http_server_requests_seconds_count{exception="None",method="GET",outcome="SUCCESS",status="200",uri="/statistics",} 1.0
119 Should Contain ${resp.text} http_server_requests_seconds_count{exception="None",method="GET",outcome="SUCCESS",status="200",uri="/policytypes",} 1.0
120 Should Contain ${resp.text} http_server_requests_seconds_count{exception="None",method="GET",outcome="SUCCESS",status="200",uri="/policies",} 1.0
121 Should Contain ${resp.text} http_server_requests_seconds_count{exception="None",method="GET",outcome="SUCCESS",status="200",uri="/policies/{policyId}/versions/{policyVersion}",} 1.0
122 Should Contain ${resp.text} http_server_requests_seconds_count{exception="None",method="GET",outcome="SUCCESS",status="200",uri="/policytypes/{policyTypeId}/versions/{policyTypeVersion}/policies",} 1.0
123 Should Contain ${resp.text} http_server_requests_seconds_count{exception="None",method="POST",outcome="SUCCESS",status="200",uri="/policytypes/{policyTypeId}/versions/{policyTypeVersion}/policies",} 1.0
124 Should Contain ${resp.text} http_server_requests_seconds_count{exception="None",method="POST",outcome="SUCCESS",status="200",uri="/policytypes",} 1.0
125 Should Contain ${resp.text} http_server_requests_seconds_count{exception="None",method="DELETE",outcome="SUCCESS",status="200",uri="/policies/{policyId}/versions/{policyVersion}",} 1.0
126 Should Contain ${resp.text} http_server_requests_seconds_count{exception="None",method="DELETE",outcome="SUCCESS",status="200",uri="/policytypes/{policyTypeId}/versions/{versionId}",} 3.0
127 Should Contain ${resp.text} http_server_requests_seconds_count{exception="None",method="DELETE",outcome="SUCCESS",status="200",uri="/policytypes/{policyTypeId}/versions/{policyTypeVersion}/policies/{policyId}/versions/{policyVersion}",} 1.0
128 Should Contain ${resp.text} http_server_requests_seconds_sum
129 Should Contain ${resp.text} http_server_requests_seconds_max
130 Should Contain ${resp.text} spring_data_repository_invocations_seconds_count
131 Should Contain ${resp.text} spring_data_repository_invocations_seconds_sum
132 Should Contain ${resp.text} spring_data_repository_invocations_seconds_max
133 Should Contain ${resp.text} jvm_threads_live_threads
139 ${auth}= PolicyAdminAuth
140 ${resp}= PerformGetRequest ${POLICY_API_IP} ${url} 200 null ${auth}
144 [Arguments] ${url} ${expectedstatus}
145 ${auth}= PolicyAdminAuth
146 ${resp}= PerformDeleteRequest ${POLICY_API_IP} ${url} ${expectedstatus} ${auth}
150 [Arguments] ${url} ${expectedstatus} ${jsonfile} ${policytypename} ${policytypeversion}
151 [Documentation] Create the specific policy type
152 ${postjson}= Get file ${CURDIR}/data/${jsonfile}
153 ${auth}= PolicyAdminAuth
154 ${resp}= PerformPostRequest ${POLICY_API_IP} ${url} ${expectedstatus} ${postjson} null ${auth}
155 Run Keyword If ${expectedstatus}==200 List Should Contain Value ${resp.json()['policy_types']} ${policytypename}
156 Run Keyword If ${expectedstatus}==200 Should Be Equal As Strings ${resp.json()['policy_types']['${policytypename}']['version']} ${policytypeversion}
159 [Arguments] ${url} ${expectedLength}
160 [Documentation] Fetch all policy types
161 ${resp}= GetReq ${url}
162 Length Should Be ${resp.json()['policy_types']} ${expectedLength}
165 [Arguments] ${url} ${keyword}
166 [Documentation] Fetch the specific policy
167 ${resp}= GetReq ${url}
168 Dictionary Should Contain Key ${resp.json()['topology_template']['policies'][0]} ${keyword}
171 [Arguments] ${url} ${expectedLength}
172 [Documentation] Fetch all policies
173 ${resp}= GetReq ${url}
174 Length Should Be ${resp.json()['topology_template']['policies']} ${expectedLength}
178 [Arguments] ${url} ${expectedLength}
179 [Documentation] Fetch all node templates
180 ${resp}= GetReq ${url}
181 Length Should Be ${resp.json()} ${expectedLength}
184 [Arguments] ${url} ${keyword}
185 [Documentation] Fetch the specific node template
186 ${resp}= GetReq ${url}
187 Dictionary Should Contain Value ${resp.json()[0]} ${keyword}