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