xref: /openbmc/openbmc-test-automation/redfish/managers/test_managers_bmc_time.robot (revision c7272651cf866aadeed130dd5c3a197a2f6c269a)
1*** Settings ***
2Documentation    Test BMC manager time functionality.
3Resource                     ../../lib/resource.robot
4Resource                     ../../lib/bmc_redfish_resource.robot
5Resource                     ../../lib/common_utils.robot
6Resource                     ../../lib/openbmc_ffdc.robot
7Resource                     ../../lib/utils.robot
8
9Test Setup                   Run Keywords  Printn  AND  redfish.Login
10Test Teardown                Test Teardown Execution
11
12*** Variables ***
13${max_time_diff_in_seconds}  6
14${invalid_datetime}          "2019-04-251T12:24:46+00:00"
15
16*** Test Cases ***
17
18Verify Redfish BMC Time
19    [Documentation]  Verify that date/time obtained via redfish matches
20    ...  date/time obtained via BMC command line.
21    [Tags]  Verify_Redfish_BMC_Time
22
23    ${redfish_date_time}=  Redfish Get DateTime
24    ${cli_date_time}=  CLI Get BMC DateTime
25    ${time_diff}=  Subtract Date From Date  ${cli_date_time}
26    ...  ${redfish_date_time}
27    ${time_diff}=  Evaluate  abs(${time_diff})
28    Rprint Vars  redfish_date_time  cli_date_time  time_diff
29    Should Be True  ${time_diff} < ${max_time_diff_in_seconds}
30    ...  The difference between Redfish time and CLI time exceeds the allowed time difference.
31
32
33Verify Set Time Using Redfish
34    [Documentation]  Verify set time using redfish API.
35    [Tags]  Verify_Set_Time_Using_Redfish
36
37    ${old_bmc_time}=  CLI Get BMC DateTime
38    # Add 3 days to current date.
39    ${new_bmc_time}=  Add Time to Date  ${old_bmc_time}  3 Days
40    Redfish Set DateTime  ${new_bmc_time}
41    ${cli_bmc_time}=  CLI Get BMC DateTime
42    ${time_diff}=  Subtract Date From Date  ${cli_bmc_time}
43    ...  ${new_bmc_time}
44    ${time_diff}=  Evaluate  abs(${time_diff})
45    Rprint Vars   old_bmc_time  new_bmc_time  cli_bmc_time  time_diff  max_time_diff_in_seconds
46    Should Be True  ${time_diff} < ${max_time_diff_in_seconds}
47    ...  The difference between Redfish time and CLI time exceeds the allowed time difference.
48    # Setting back to old bmc time.
49    Redfish Set DateTime  ${old_bmc_time}
50
51
52Verify Set DateTime With Invalid Data Using Redfish
53    [Documentation]  Verify error while setting invalid DateTime using Redfish.
54    [Tags]  Verify_Set_DateTime_With_Invalid_Data_Using_Redfish
55
56    Redfish Set DateTime  ${invalid_datetime}  valid_status_codes=[${HTTP_BAD_REQUEST}]
57
58
59*** Keywords ***
60
61Test Teardown Execution
62    [Documentation]  Do the post test teardown.
63
64    FFDC On Test Case Fail
65    redfish.Logout
66
67
68Redfish Get DateTime
69    [Documentation]  Returns BMC Datetime value from Redfish.
70
71    ${date_time}=  Redfish.Get Attribute  ${REDFISH_BASE_URI}Managers/bmc  DateTime
72    [Return]  ${date_time}
73
74
75Redfish Set DateTime
76    [Documentation]  Set DateTime using Redfish.
77    [Arguments]  ${date_time}  &{kwargs}
78    # Description of argument(s):
79    # date_time                     New time to set for BMC (eg.
80    #                               "2019-06-30 09:21:28").
81    # kwargs                        Additional parms to be passed directly to
82    #                               th Redfish.Patch function.  A good use for
83    #                               this is when testing a bad date-time, the
84    #                               caller can specify
85    #                               valid_status_codes=[${HTTP_BAD_REQUEST}].
86
87    Redfish.Patch  ${REDFISH_BASE_URI}Managers/bmc  body={'DateTime': '${date_time}'}
88    ...  &{kwargs}
89
90