1*** Settings ***
2Documentation    Test Redfish event service subscription function.
3
4Resource         ../../../lib/resource.robot
5Resource         ../../../lib/bmc_redfish_resource.robot
6Resource         ../../../lib/openbmc_ffdc.robot
7Resource         ../../../lib/bmc_redfish_utils.robot
8
9Suite Setup      Suite Setup Execution
10Suite teardown   Suite Teardown Execution
11
12Test Setup       Test Setup Execution
13Test Teardown    Test Teardown Execution
14
15Force Tags       Event_Service
16
17***Variables***
18
19# override this default using -v REMOTE_SERVER_IP:<IP> from CLI
20${REMOTE_SERVER_IP}    10.7.7.7
21
22** Test Cases **
23
24Verify Add Subscribe Server For Event Notification
25    [Documentation]  Subscribe a remote server and verify if added successful.
26    [Tags]  Verify_Add_Subscribe_Server_For_Event_Notification
27
28    ${subscription_list}=  Redfish_Utils.Get Member List
29    ...  /redfish/v1/EventService/Subscriptions
30
31    Should Be Empty  ${subscription_list}
32
33    ${RegistryPrefixes_list}=  Create List  Base  OpenBMC  TaskEvent
34    ${ResourceTypes_list}=  Create List  Task
35
36    ${payload}=  Create Dictionary
37    ...  Context=Test_Context  Destination=https://${REMOTE_SERVER_IP}:${HTTPS_PORT}/
38    ...  EventFormatType=Event  Protocol=Redfish  SubscriptionType=RedfishEvent
39    ...  RegistryPrefixes=${RegistryPrefixes_list}  ResourceTypes=${ResourceTypes_list}
40
41    Redfish.Post  /redfish/v1/EventService/Subscriptions  body=&{payload}
42    ...  valid_status_codes=[${HTTP_CREATED}]
43
44    ${subscription_list}=  Redfish_Utils.Get Member List
45    ...  /redfish/v1/EventService/Subscriptions
46
47    ${resp}=  redfish.Get  ${subscription_list[0]}
48
49    Dictionary Should Contain Sub Dictionary   ${resp.dict}  ${payload}
50
51
52*** Keywords ***
53
54Suite Setup Execution
55    [Documentation]  Do the suite setup.
56
57    Should Not be Empty  ${REMOTE_SERVER_IP}
58    Should Not be Empty  ${HTTPS_PORT}
59
60    Redfish.Login
61
62
63Suite Teardown Execution
64    [Documentation]  Do the suite teardown.
65
66    Run Keyword And Ignore Error  Delete All Redfish Sessions
67    Run Keyword And Ignore Error  Redfish.Logout
68
69
70Test Setup Execution
71    [Documentation]  Do the test setup.
72
73    ${subscription_list}=  Redfish_Utils.Get Member List
74    ...  /redfish/v1/EventService/Subscriptions
75
76    Delete All Subscriptions  ${subscription_list}
77
78    # Verify Redfish event service attribute ServiceEnabled is set to True.
79    ${resp} =  Redfish_utils.Get Attribute  /redfish/v1/EventService  ServiceEnabled
80    Should Be Equal As Strings  ${resp}  ${True}
81
82
83Test Teardown Execution
84    [Documentation]  Do the post test teardown.
85
86    FFDC On Test Case Fail
87
88    ${subscription_list}=  Redfish_Utils.Get Member List
89    ...  /redfish/v1/EventService/Subscriptions
90
91    Delete All Subscriptions  ${subscription_list}
92
93
94Delete All Subscriptions
95    [Documentation]  Delete all subscriptions.
96    [Arguments]   ${subscription_list}
97
98    # Description of argument(s):
99    # subscription_list   List of all subscriptions.
100
101    FOR  ${url}  IN  @{subscription_list}
102      Redfish.Delete  ${url}
103    END
104
105