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
diff --git a/test_scripts/O2IMS_Compliance_Test/o2ims_compliance/7.3.4_SMO_succeeds_to_create_alarmSubscription_receive_alarm_notification_and_query_alarm_list.robot b/test_scripts/O2IMS_Compliance_Test/o2ims_compliance/7.3.4_SMO_succeeds_to_create_alarmSubscription_receive_alarm_notification_and_query_alarm_list.robot
new file mode 100644 (file)
index 0000000..42a3364
--- /dev/null
@@ -0,0 +1,284 @@
+*** Settings ***
+Documentation  Verify SMO succeeds to create alarmSubscription, receive alarm notification, and query alarm list
+# Library  REST       ssl_verify=False    loglevel=DEBUG
+Library  REST       ssl_verify=False
+
+Resource               ssh_helper.robot
+
+Variables              ${EXECDIR}${/}test_configs.yaml
+
+# Suite Setup            Set REST Headers
+Suite Setup            Set REST Headers And Clear Subscriptions
+Suite Teardown         Clear Subscriptions
+
+*** Variables ***
+${HOST}                ${ocloud.ssh.host}
+${PORT}                ${ocloud.ssh.port}
+${USERNAME}            ${ocloud.ssh.username}
+${PASSWORD}            ${ocloud.ssh.password}
+${OPENRC}              ${ocloud.ssh.openrc}
+
+${ORAN_HOST_EXTERNAL_IP}    ${ocloud.oran_o2_app.api.host}
+${ORAN_SERVICE_NODE_PORT}   ${ocloud.oran_o2_app.api.node_port}
+${GLOBAL_OCLOUD_ID1}        ${ocloud.oran_o2_app.g_ocloud_id}
+${SMO_TOKEN_DATA}           ${ocloud.oran_o2_app.smo_token_data}
+${globalLocationId}         ${ocloud.oran_o2_app.g_location_id}
+
+${ORAN_O2IMS_ENDPOINT}  ${ocloud.oran_o2_app.api.protocol}://${ORAN_HOST_EXTERNAL_IP}:${ORAN_SERVICE_NODE_PORT}
+
+${SMO_ALARM_OBSERVER_URL}     ${smo.service.protocol}://${smo.service.host}:${smo.service.port}${smo.o2ims_alarm_observer.path}
+${consumerSubscriptionId}   3F20D850-AF4F-A84F-FB5A-0AD585410361
+
+# ${subscription_data}  {"callback": "${SMO_ALARM_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "(neq,resourcePools.globalLocationId,${globalLocationId})" }
+
+# ${subscription_data}  {"callback": "${SMO_ALARM_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "" }
+
+*** Test Cases ***
+s1, create alarmSubscription
+    [documentation]  This test case verifies create alarmSubscription
+    [tags]  ORAN_Compliance     ORAN_O2     ORAN_O2IMS    ORAN_O2IMS_Alarm_Subscription
+
+    Clear Expectations
+    # Expect Response Body        ${CURDIR}/schemas/alarm_subscription_post_resp_properties.json
+    Expect Response Body        ${CURDIR}/schemas/alarm_subscription_properties.json
+
+    Set Headers     {"Content-Type": "application/json"}
+    ${subscription_data}  input     {"callback": "${SMO_ALARM_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "" }
+
+    # ${subscription_data}  input     {"callback": "${SMO_ALARM_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "(eq,resourceTypeID,typeid1234)" }
+
+    # ${subscription_data}  input     {"callback": "${SMO_ALARM_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "(neq,resourceTypeID,typeid1234)" }
+
+    # ${subscription_data}  input     {"callback": "${SMO_ALARM_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "(eq,perceivedSeverity,1)" }
+
+    ${res}     POST   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarmSubscriptions     ${subscription_data}
+    # Output Schema     request body   ${CURDIR}/schemas/.output/alarm_subscription_post_req_properties.json
+    # Output Schema   response body   ${CURDIR}/schemas/.output/alarm_subscription_post_resp_properties.json
+    Clear Expectations
+    log      ${res}   level=DEBUG
+    Integer  response status    201
+    Object   response body
+
+# s2, query alarmSubscription list
+    # [documentation]  This test case verifies query alarmSubscription list
+    # [tags]  ORAN_Compliance     ORAN_O2     ORAN_O2IMS    ORAN_O2IMS_Alarm_Subscription
+
+    Clear Expectations
+    Expect Response Body        ${CURDIR}/schemas/alarm_subscriptions_properties.json
+    ${res}     GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarmSubscriptions
+    # Output Schema   response body   ${CURDIR}/schemas/.output/alarm_subscriptions_properties.json
+    Clear Expectations
+    log      ${res}   level=INFO
+    Integer     response status    200
+    Array       response body
+    Array       $   minItems=1  uniqueItems=true
+
+    # all_fields
+    Expect Response Body        ${CURDIR}/schemas/alarm_subscriptions_properties.json
+    ${res}     GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarmSubscriptions?all_fields
+    # Output Schema   response body   ${CURDIR}/schemas/.output/alarm_subscriptions_properties.json
+    Clear Expectations
+    log      ${res}   level=INFO
+    Integer     response status    200
+    Array       response body
+    Array       $   minItems=1  uniqueItems=true
+
+# s?, query alarmSubscription list with filter
+#     [documentation]  This test case verifies Query OCloud resourceTypes with filter
+#     [tags]  ORAN_Compliance     ORAN_O2     ORAN_O2IMS    ORAN_O2IMS_Alarm_Subscription
+
+    # Clear Expectations
+    Expect Response Body        ${CURDIR}/schemas/alarm_subscriptions_properties.json
+    ${res}     GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarmSubscriptions?filter=(eq,consumerSubscriptionId,${consumerSubscriptionId})
+    Clear Expectations
+    log      ${res}   level=INFO
+    Integer     response status    200
+    Array       response body
+    Array       $   minItems=1
+
+# s3, query alarmSubscription detail
+#     [documentation]  This test case verifies Query OCloud resourceTypes detail
+#     [tags]  ORAN_Compliance     ORAN_O2     ORAN_O2IMS    ORAN_O2IMS_Alarm_Subscription
+
+    # Clear Expectations
+    # GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarmSubscriptions/${subscriptionId}
+    ${subscriptionId}      output   $[0].alarmSubscriptionId
+    # Clear Expectations
+    Expect Response Body        ${CURDIR}/schemas/alarm_subscription_properties.json
+    ${res}     GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarmSubscriptions/${subscriptionId}
+    # Output Schema   response body   ${CURDIR}/schemas/.output/alarm_subscriptions_properties.json
+    Clear Expectations
+    log      ${res}   level=INFO
+    Integer     response status    200
+    Object       response body
+
+    # all_fields
+    Expect Response Body        ${CURDIR}/schemas/alarm_subscription_allfields_properties.json
+    ${res}     GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarmSubscriptions/${subscriptionId}?all_fields
+    # Output Schema   response body   ${CURDIR}/schemas/.output/alarm_subscription_allfields_properties.json
+    Clear Expectations
+    log      ${res}   level=DEBUG
+    Integer     response status    200
+    Object       response body
+
+
+# Check duplication logic
+    Expect Response Body        ${CURDIR}/schemas/client_errors_properties.json
+    ${res}     POST   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarmSubscriptions     ${subscription_data}
+    # Output Schema   response body   ${CURDIR}/schemas/.output/client_errors_properties.json
+    Clear Expectations
+    log      ${res}   level=DEBUG
+    Integer  response status    400
+    Object   response body
+
+# s4, Stx/WRCP generates an alarm change event and check SMO succeeds to receive a alarm change notification
+#     [documentation]  This test case verifies Query OCloud resourcePools without filter
+#     [tags]  ORAN_Compliance     ORAN_O2     ORAN_O2IMS    ORAN_O2IMS_Alarm_Subscription
+
+    # ${stdout}  ${stderr}  ${rc}=    Assert Alarm With Disk Usage
+    # log     ${rc}   level=DEBUG
+    # Should Be Equal     ${rc} 0
+
+
+# s5, query alarm list without filter
+
+    Clear Expectations
+    Expect Response Body        ${CURDIR}/schemas/alarms_properties.json
+    ${res}     GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarms
+    # Output Schema   response body   ${CURDIR}/schemas/.output/alarms_properties.json
+    Clear Expectations
+    log      ${res}   level=DEBUG
+    Integer     response status    200
+    Array       response body
+    Array       $   minItems=1  uniqueItems=true
+
+    # # query with filter
+    # Expect Response Body        ${CURDIR}/schemas/alarms_properties.json
+    # ${res}     GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarms?all_fields&filter=(eq,perceivedSeverity,1)
+    # # Output Schema   response body   ${CURDIR}/schemas/.output/alarms_properties.json
+    # Clear Expectations
+    # log      ${res}   level=DEBUG
+    # Integer     response status    200
+    # Array       response body
+    # Array       $   minItems=1  uniqueItems=true
+
+    # extract resourceTypeId for query with fitler test
+    ${resourceTypeId}      output   $[0].resourceTypeId
+
+# s6, query alarm list with filter
+    Clear Expectations
+    # GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourceTypes?filter=(eq,name,pserver)
+    # ${resourceTypeId}      output   $[0].resourceTypeId
+    Expect Response Body        ${CURDIR}/schemas/alarms_properties.json
+    ${res}     GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarms?filter=(eq,resourceTypeID,${resourceTypeId})
+    Clear Expectations
+    log      ${res}   level=DEBUG
+    Integer     response status    200
+    Array       response body
+    Array       $   minItems=1  uniqueItems=true
+    Expect Response Body        ${CURDIR}/schemas/alarms_properties.json
+    ${res}     GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarms    {"filter": "(eq,resourceTypeID,${resourceTypeId};eq,alarmAcknowledged,false)"}
+    Clear Expectations
+    log      ${res}   level=DEBUG
+    Integer     response status    200
+    Array       response body
+    Array       $   minItems=1  uniqueItems=true
+
+
+# s7, query alarm detail
+    Expect Response Body        ${CURDIR}/schemas/alarms_properties.json
+    ${res}     GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarms?all_fields
+    # Output Schema   response body   ${CURDIR}/schemas/.output/alarms_properties.json
+    Clear Expectations
+    log      ${res}   level=DEBUG
+    Integer     response status    200
+    Array       response body
+    Array       $   minItems=1  uniqueItems=true
+
+    # all fields
+    ${res}     GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarms?all_fields
+    log      ${res}   level=DEBUG
+    Integer     response status    200
+    Array       response body
+    Array       $   minItems=1  uniqueItems=true
+
+    # alarm detail
+    ${alarmEventRecordId}      output   $[0].alarmEventRecordId
+    Expect Response Body        ${CURDIR}/schemas/alarm_properties.json
+    ${res}     GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarms/${alarmEventRecordId}
+    # Output Schema   response body   ${CURDIR}/schemas/.output/alarm_properties.json
+    Clear Expectations
+    log      ${res}   level=DEBUG
+    Integer     response status    200
+
+    # all fields
+    ${res}     GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarms/${alarmEventRecordId}?all_fields
+    log      ${res}   level=DEBUG
+    Integer     response status    200
+    Object       response body
+    Object      $.extensions
+    # Boolean      $.extensions['mgmt_affecting']
+    String      $.extensions['alarm_state']
+    # Boolean      $.extensions['degrade_affecting']
+    # Boolean      $.extensions['service_affecting']
+    String      $.extensions['alarm_type']
+    String      $.extensions['entity_type_id']
+    String      $.extensions['probable_cause']
+    String      $.extensions['alarm_id']
+    String      $.extensions['entity_instance_id']
+    String     $.extensions['proposed_repair_action']
+    # Boolean     $.extensions['suppression']
+    String     $.extensions['suppression_status']
+
+# s8, delete the alarmSubscription
+#     [documentation]  This test case verifies Query OCloud resourcePools with filter
+#     [tags]  ORAN_Compliance     ORAN_O2     ORAN_O2IMS    ORAN_O2IMS_Alarm_Subscription
+
+    # Clear Expectations
+    # Expect Response Body        ${CURDIR}/schemas/alarm_subscriptions_properties.json
+    ${res}     DELETE   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarmSubscriptions/${subscriptionId}
+    # Output Schema   response body   ${CURDIR}/schemas/.output/resourcePools_properties.json
+    Clear Expectations
+    log      ${res}   level=INFO
+    Integer     response status    200
+    # Array       response body
+    # Array       $   minItems=1  maxItems=1
+
+# s9, Stx/WRCP generates an alarm change event and check SMO cannot receive any alarm change notification
+#     [documentation]  This test case verifies Query OCloud resourcePools detail
+#     [tags]  ORAN_Compliance     ORAN_O2     ORAN_O2IMS    ORAN_O2IMS_Alarm_Subscription
+
+    # # Clear Expectations
+    # Expect Response Body        ${CURDIR}/schemas/alarm_subscriptions_properties.json
+    # ${res}     GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarmSubscriptions/${subscriptionId}
+    # # Output Schema   response body   ${CURDIR}/schemas/.output/resourcePool_properties.json
+    # Clear Expectations
+    # log      ${res}   level=INFO
+    # Integer     response status    200
+    # Object       response body
+
+# clear the alarm condition
+    ${stdout}  ${stderr}  ${rc}=    Clear Alarm With Disk Usage
+#    log     ${rc}   level=DEBUG
+#    Should Be Equal     ${rc} 0
+
+
+*** Keywords ***
+Set REST Headers
+    Set Headers     {"accept": "application/json"}
+    Set Headers     {"Authorization": "Bearer ${SMO_TOKEN_DATA}"}
+
+Clear Subscriptions
+    Clear Expectations
+    ${res}     GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarmSubscriptions
+    log     ${res}   level=DEBUG
+    @{subs}        output  $
+    FOR     ${sub}      IN      @{subs}
+        ${subscriptionId}=  input   ${sub}[alarmSubscriptionId]
+        ${res2}     DELETE   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureMonitoring/v1/alarmSubscriptions/${subscriptionId}
+        log     ${res2}   level=DEBUG
+    END
+
+Set REST Headers And Clear Subscriptions
+    Set REST Headers
+    Clear Subscriptions