Add O2 IMS compliance automation test scripts.
[it/test.git] / test_scripts / O2IMS_Compliance_Test / o2ims_compliance / 7.3.4_SMO_succeeds_to_create_alarmSubscription_receive_alarm_notification_and_query_alarm_list.robot
1 *** Settings ***
2 Documentation  Verify SMO succeeds to create alarmSubscription, receive alarm notification, and query alarm list
3 # Library  REST       ssl_verify=False    loglevel=DEBUG
4 Library  REST       ssl_verify=False
5
6 Resource               ssh_helper.robot
7
8 Variables              ${EXECDIR}${/}test_configs.yaml
9
10 # Suite Setup            Set REST Headers
11 Suite Setup            Set REST Headers And Clear Subscriptions
12 Suite Teardown         Clear Subscriptions
13
14 *** Variables ***
15 ${HOST}                ${ocloud.ssh.host}
16 ${PORT}                ${ocloud.ssh.port}
17 ${USERNAME}            ${ocloud.ssh.username}
18 ${PASSWORD}            ${ocloud.ssh.password}
19 ${OPENRC}              ${ocloud.ssh.openrc}
20
21 ${ORAN_HOST_EXTERNAL_IP}    ${ocloud.oran_o2_app.api.host}
22 ${ORAN_SERVICE_NODE_PORT}   ${ocloud.oran_o2_app.api.node_port}
23 ${GLOBAL_OCLOUD_ID1}        ${ocloud.oran_o2_app.g_ocloud_id}
24 ${SMO_TOKEN_DATA}           ${ocloud.oran_o2_app.smo_token_data}
25 ${globalLocationId}         ${ocloud.oran_o2_app.g_location_id}
26
27 ${ORAN_O2IMS_ENDPOINT}  ${ocloud.oran_o2_app.api.protocol}://${ORAN_HOST_EXTERNAL_IP}:${ORAN_SERVICE_NODE_PORT}
28
29 ${SMO_ALARM_OBSERVER_URL}     ${smo.service.protocol}://${smo.service.host}:${smo.service.port}${smo.o2ims_alarm_observer.path}
30 ${consumerSubscriptionId}   3F20D850-AF4F-A84F-FB5A-0AD585410361
31
32 # ${subscription_data}  {"callback": "${SMO_ALARM_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "(neq,resourcePools.globalLocationId,${globalLocationId})" }
33
34 # ${subscription_data}  {"callback": "${SMO_ALARM_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "" }
35
36 *** Test Cases ***
37 s1, create alarmSubscription
38     [documentation]  This test case verifies create alarmSubscription
39     [tags]  ORAN_Compliance     ORAN_O2     ORAN_O2IMS    ORAN_O2IMS_Alarm_Subscription
40
41     Clear Expectations
42     # Expect Response Body        ${CURDIR}/schemas/alarm_subscription_post_resp_properties.json
43     Expect Response Body        ${CURDIR}/schemas/alarm_subscription_properties.json
44
45     Set Headers     {"Content-Type": "application/json"}
46     ${subscription_data}  input     {"callback": "${SMO_ALARM_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "" }
47
48     # ${subscription_data}  input     {"callback": "${SMO_ALARM_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "(eq,resourceTypeID,typeid1234)" }
49
50     # ${subscription_data}  input     {"callback": "${SMO_ALARM_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "(neq,resourceTypeID,typeid1234)" }
51
52     # ${subscription_data}  input     {"callback": "${SMO_ALARM_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "(eq,perceivedSeverity,1)" }
53
54     ${res}     POST   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarmSubscriptions     ${subscription_data}
55     # Output Schema     request body   ${CURDIR}/schemas/.output/alarm_subscription_post_req_properties.json
56     # Output Schema   response body   ${CURDIR}/schemas/.output/alarm_subscription_post_resp_properties.json
57     Clear Expectations
58     log      ${res}   level=DEBUG
59     Integer  response status    201
60     Object   response body
61
62 # s2, query alarmSubscription list
63     # [documentation]  This test case verifies query alarmSubscription list
64     # [tags]  ORAN_Compliance     ORAN_O2     ORAN_O2IMS    ORAN_O2IMS_Alarm_Subscription
65
66     Clear Expectations
67     Expect Response Body        ${CURDIR}/schemas/alarm_subscriptions_properties.json
68     ${res}     GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarmSubscriptions
69     # Output Schema   response body   ${CURDIR}/schemas/.output/alarm_subscriptions_properties.json
70     Clear Expectations
71     log      ${res}   level=INFO
72     Integer     response status    200
73     Array       response body
74     Array       $   minItems=1  uniqueItems=true
75
76     # all_fields
77     Expect Response Body        ${CURDIR}/schemas/alarm_subscriptions_properties.json
78     ${res}     GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarmSubscriptions?all_fields
79     # Output Schema   response body   ${CURDIR}/schemas/.output/alarm_subscriptions_properties.json
80     Clear Expectations
81     log      ${res}   level=INFO
82     Integer     response status    200
83     Array       response body
84     Array       $   minItems=1  uniqueItems=true
85
86 # s?, query alarmSubscription list with filter
87 #     [documentation]  This test case verifies Query OCloud resourceTypes with filter
88 #     [tags]  ORAN_Compliance     ORAN_O2     ORAN_O2IMS    ORAN_O2IMS_Alarm_Subscription
89
90     # Clear Expectations
91     Expect Response Body        ${CURDIR}/schemas/alarm_subscriptions_properties.json
92     ${res}     GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarmSubscriptions?filter=(eq,consumerSubscriptionId,${consumerSubscriptionId})
93     Clear Expectations
94     log      ${res}   level=INFO
95     Integer     response status    200
96     Array       response body
97     Array       $   minItems=1
98
99 # s3, query alarmSubscription detail
100 #     [documentation]  This test case verifies Query OCloud resourceTypes detail
101 #     [tags]  ORAN_Compliance     ORAN_O2     ORAN_O2IMS    ORAN_O2IMS_Alarm_Subscription
102
103     # Clear Expectations
104     # GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarmSubscriptions/${subscriptionId}
105     ${subscriptionId}      output   $[0].alarmSubscriptionId
106     # Clear Expectations
107     Expect Response Body        ${CURDIR}/schemas/alarm_subscription_properties.json
108     ${res}     GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarmSubscriptions/${subscriptionId}
109     # Output Schema   response body   ${CURDIR}/schemas/.output/alarm_subscriptions_properties.json
110     Clear Expectations
111     log      ${res}   level=INFO
112     Integer     response status    200
113     Object       response body
114
115     # all_fields
116     Expect Response Body        ${CURDIR}/schemas/alarm_subscription_allfields_properties.json
117     ${res}     GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarmSubscriptions/${subscriptionId}?all_fields
118     # Output Schema   response body   ${CURDIR}/schemas/.output/alarm_subscription_allfields_properties.json
119     Clear Expectations
120     log      ${res}   level=DEBUG
121     Integer     response status    200
122     Object       response body
123
124
125 # Check duplication logic
126     Expect Response Body        ${CURDIR}/schemas/client_errors_properties.json
127     ${res}     POST   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarmSubscriptions     ${subscription_data}
128     # Output Schema   response body   ${CURDIR}/schemas/.output/client_errors_properties.json
129     Clear Expectations
130     log      ${res}   level=DEBUG
131     Integer  response status    400
132     Object   response body
133
134 # s4, Stx/WRCP generates an alarm change event and check SMO succeeds to receive a alarm change notification
135 #     [documentation]  This test case verifies Query OCloud resourcePools without filter
136 #     [tags]  ORAN_Compliance     ORAN_O2     ORAN_O2IMS    ORAN_O2IMS_Alarm_Subscription
137
138     # ${stdout}  ${stderr}  ${rc}=    Assert Alarm With Disk Usage
139     # log     ${rc}   level=DEBUG
140     # Should Be Equal     ${rc} 0
141
142
143 # s5, query alarm list without filter
144
145     Clear Expectations
146     Expect Response Body        ${CURDIR}/schemas/alarms_properties.json
147     ${res}     GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarms
148     # Output Schema   response body   ${CURDIR}/schemas/.output/alarms_properties.json
149     Clear Expectations
150     log      ${res}   level=DEBUG
151     Integer     response status    200
152     Array       response body
153     Array       $   minItems=1  uniqueItems=true
154
155     # # query with filter
156     # Expect Response Body        ${CURDIR}/schemas/alarms_properties.json
157     # ${res}     GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarms?all_fields&filter=(eq,perceivedSeverity,1)
158     # # Output Schema   response body   ${CURDIR}/schemas/.output/alarms_properties.json
159     # Clear Expectations
160     # log      ${res}   level=DEBUG
161     # Integer     response status    200
162     # Array       response body
163     # Array       $   minItems=1  uniqueItems=true
164
165     # extract resourceTypeId for query with fitler test
166     ${resourceTypeId}      output   $[0].resourceTypeId
167
168 # s6, query alarm list with filter
169     Clear Expectations
170     # GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourceTypes?filter=(eq,name,pserver)
171     # ${resourceTypeId}      output   $[0].resourceTypeId
172     Expect Response Body        ${CURDIR}/schemas/alarms_properties.json
173     ${res}     GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarms?filter=(eq,resourceTypeID,${resourceTypeId})
174     Clear Expectations
175     log      ${res}   level=DEBUG
176     Integer     response status    200
177     Array       response body
178     Array       $   minItems=1  uniqueItems=true
179     Expect Response Body        ${CURDIR}/schemas/alarms_properties.json
180     ${res}     GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarms    {"filter": "(eq,resourceTypeID,${resourceTypeId};eq,alarmAcknowledged,false)"}
181     Clear Expectations
182     log      ${res}   level=DEBUG
183     Integer     response status    200
184     Array       response body
185     Array       $   minItems=1  uniqueItems=true
186
187
188 # s7, query alarm detail
189     Expect Response Body        ${CURDIR}/schemas/alarms_properties.json
190     ${res}     GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarms?all_fields
191     # Output Schema   response body   ${CURDIR}/schemas/.output/alarms_properties.json
192     Clear Expectations
193     log      ${res}   level=DEBUG
194     Integer     response status    200
195     Array       response body
196     Array       $   minItems=1  uniqueItems=true
197
198     # all fields
199     ${res}     GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarms?all_fields
200     log      ${res}   level=DEBUG
201     Integer     response status    200
202     Array       response body
203     Array       $   minItems=1  uniqueItems=true
204
205     # alarm detail
206     ${alarmEventRecordId}      output   $[0].alarmEventRecordId
207     Expect Response Body        ${CURDIR}/schemas/alarm_properties.json
208     ${res}     GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarms/${alarmEventRecordId}
209     # Output Schema   response body   ${CURDIR}/schemas/.output/alarm_properties.json
210     Clear Expectations
211     log      ${res}   level=DEBUG
212     Integer     response status    200
213
214     # all fields
215     ${res}     GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarms/${alarmEventRecordId}?all_fields
216     log      ${res}   level=DEBUG
217     Integer     response status    200
218     Object       response body
219     Object      $.extensions
220     # Boolean      $.extensions['mgmt_affecting']
221     String      $.extensions['alarm_state']
222     # Boolean      $.extensions['degrade_affecting']
223     # Boolean      $.extensions['service_affecting']
224     String      $.extensions['alarm_type']
225     String      $.extensions['entity_type_id']
226     String      $.extensions['probable_cause']
227     String      $.extensions['alarm_id']
228     String      $.extensions['entity_instance_id']
229     String     $.extensions['proposed_repair_action']
230     # Boolean     $.extensions['suppression']
231     String     $.extensions['suppression_status']
232
233 # s8, delete the alarmSubscription
234 #     [documentation]  This test case verifies Query OCloud resourcePools with filter
235 #     [tags]  ORAN_Compliance     ORAN_O2     ORAN_O2IMS    ORAN_O2IMS_Alarm_Subscription
236
237     # Clear Expectations
238     # Expect Response Body        ${CURDIR}/schemas/alarm_subscriptions_properties.json
239     ${res}     DELETE   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarmSubscriptions/${subscriptionId}
240     # Output Schema   response body   ${CURDIR}/schemas/.output/resourcePools_properties.json
241     Clear Expectations
242     log      ${res}   level=INFO
243     Integer     response status    200
244     # Array       response body
245     # Array       $   minItems=1  maxItems=1
246
247 # s9, Stx/WRCP generates an alarm change event and check SMO cannot receive any alarm change notification
248 #     [documentation]  This test case verifies Query OCloud resourcePools detail
249 #     [tags]  ORAN_Compliance     ORAN_O2     ORAN_O2IMS    ORAN_O2IMS_Alarm_Subscription
250
251     # # Clear Expectations
252     # Expect Response Body        ${CURDIR}/schemas/alarm_subscriptions_properties.json
253     # ${res}     GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarmSubscriptions/${subscriptionId}
254     # # Output Schema   response body   ${CURDIR}/schemas/.output/resourcePool_properties.json
255     # Clear Expectations
256     # log      ${res}   level=INFO
257     # Integer     response status    200
258     # Object       response body
259
260 # clear the alarm condition
261     ${stdout}  ${stderr}  ${rc}=    Clear Alarm With Disk Usage
262 #    log     ${rc}   level=DEBUG
263 #    Should Be Equal     ${rc} 0
264
265
266 *** Keywords ***
267 Set REST Headers
268     Set Headers     {"accept": "application/json"}
269     Set Headers     {"Authorization": "Bearer ${SMO_TOKEN_DATA}"}
270
271 Clear Subscriptions
272     Clear Expectations
273     ${res}     GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarmSubscriptions
274     log     ${res}   level=DEBUG
275     @{subs}        output  $
276     FOR     ${sub}      IN      @{subs}
277         ${subscriptionId}=  input   ${sub}[alarmSubscriptionId]
278         ${res2}     DELETE   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarmSubscriptions/${subscriptionId}
279         log     ${res2}   level=DEBUG
280     END
281
282 Set REST Headers And Clear Subscriptions
283     Set REST Headers
284     Clear Subscriptions