1*** Settings *** 2 3Documentation Module to test IPMI SEL Time functionality. 4... Pre-requisite Condition : Client Machine and BMC should be in 5... Same TimeZone (example : UST) 6... 7... IPMI Raw command variables are defined under 8... ../data/ipmi_raw_command_table.py 9... Python basic functionalities are defined under 10... ../lib/functions.py imported under ../lib/resource.robot 11... 12... Test the Set/Get SEL Time functionality and compare the result against 13... BMC Native command (date). 14... 15... Set the Time Sync Mode from NTP to Manual to Set SEL Time. 16... Time Sync Mode change performed via REDFISH URI. 17... Performs the change in Time Sync Mode with Test Setup and Teardown Execution 18... with default NETWORK_TIMEOUT provided under ../lib/resource.robot. 19... 20... NETWORK_RESTART_TIME added for Set SEL Time and Add SEL Entry as the corresponding 21... command takes approx 5 seconds for the operation to reflect. 22... 23... Current SEL time identified via BMC Native command (date) and perform SEL Time operations. 24... 25... Script Verifies SEL Time for various scenarios such as, 26... Get current time from BMC and add future year and compare against BMC native command (date), 27... Gets BMC Current Time and Adds 15 minutes and compare against BMC native command (date), 28... Gets BMC Current Time and subtracts 1 day and compare against BMC native command (date), 29... Add SEL Entry for all the above scenarios and compare against BMC native command (date). 30 31Library DateTime 32Library Collections 33Library String 34Library ../lib/ipmi_utils.py 35Resource ../lib/ipmi_client.robot 36Resource ../lib/openbmc_ffdc.robot 37Variables ../data/ipmi_raw_cmd_table.py 38 39Test Setup Test Setup Execution 40Test Teardown Test Teardown Execution 41 42*** Variables *** 43 44${NETWORK_RESTART_TIME} 5s 45 46 47*** Test Cases *** 48 49Verify Default Get SEL Time 50 [Documentation] Verify IPMI Get SEL Time. 51 [Tags] Verify_Default_Get_SEL_Time 52 [Setup] Printn 53 [Teardown] FFDC On Test Case Fail 54 55 # Gets the current SEL time via Get SEL Time Command. 56 ${resp}= Get SEL Time Command 57 Should Not Be Empty ${resp} 58 59 60Verify Set SEL Time On NTP Mode 61 [Documentation] IPMI Set SEL Time without NTP 62 [Tags] Verify_Set_SEL_Time_On_NTP_Mode 63 [Setup] Printn 64 [Teardown] printn 65 66 # Get current time from BMC and add future year (here, 5years). 67 ${sel_date}= Get Specific Sel Date 5 68 69 # Gives Hexa decimal raw command data request with the prefix of 0x. 70 ${sel_date_raw}= Converting Date to HexaDecimal ${sel_date} 71 72 ${Set_sel_time}= Run Keyword and Expect Error *${IPMI_RAW_CMD['SEL_entry']['Set_SEL_Time'][2]}* 73 ... Run IPMI Command ${IPMI_RAW_CMD['SEL_entry']['Set_SEL_Time'][0]} ${sel_date_raw} 74 Should Contain ${Set_sel_time} ${IPMI_RAW_CMD['SEL_entry']['Set_SEL_Time'][1]} 75 76 77Verify SEL Set Time For Specific Time 78 [Documentation] Verify IPMI Set SEL Time. 79 [Tags] Verify_SEL_Set_Time_For_Specific_Time 80 81 # Get current time from BMC and add future year (here, 5years). 82 ${sel_date}= Get Specific Sel Date 5 83 84 # Gives Hexa decimal raw command data request with the prefix of 0x. 85 ${sel_date_raw}= Converting Date to HexaDecimal ${sel_date} 86 87 # Set SEL Entry command. 88 Set SEL Time Entry Via Raw Command ${sel_date_raw} 89 90 # Get SEL Time command. 91 ${get_sel_time}= Check Current Date Time Via IPMI 92 93 # Identify Time difference and find the difference is less than 6 seconds. 94 # Command execution may happen at the end of millisecond so considered 6 seconds as difference. 95 ${time_difference}= Get Time Difference ${get_sel_time} ${sel_date} 96 Should Be True 0<=${time_difference}<=5 97 ... msg=Set SEL Time Not Working 98 99 # Get BMC time (native) and compare with set sel time given. 100 ${bmc_time}= Get Current Date from BMC 101 102 ${difference}= Get Time Difference ${bmc_time} ${sel_date} 103 Should Be True 0<=${difference}<=6 104 105 106Verify Set SEL Time With Future Date And Time 107 [Documentation] Verify IPMI Get SEL Time by adding 15 minutes from current time. 108 [Tags] Verify_Set_SEL_Time_With_Future_Date_And_Time 109 110 # Gets BMC Current Time and Adds 15 minutes and sets the SEL Time. 111 ${sel_time} ${set_sel_time}= Identify SEL Time Future DateTime 06:15:00 112 113 # Set SEL Time via IPMI command. 114 Set SEL Time Via IPMI ${sel_time} 115 116 # Get SEL Time Command. 117 ${get_sel_time}= Check Current Date Time Via IPMI 118 119 # Difference of time between set sel time and get time. 120 ${difference}= Get Time Difference ${get_sel_time} ${set_sel_time} 121 Should Be True 0<=${difference}<=2 122 123 # Difference of time between BMC Date and Get SEL Time. 124 ${bmc_time}= Get Current Date from BMC 125 ${difference}= Get Time Difference ${get_sel_time} ${bmc_time} 126 Should Be True 0<=${difference}<=2 127 128 129Verify Set SEL Time With Past Date And Time 130 [Documentation] Verify IPMI Get SEL Time for yime delay of 1 day from current dat and time. 131 [Tags] Verify_Set_SEL_Time_With_Past_Date_And_Time 132 133 # Gets BMC current time and subtracts 1 day and sets the SEL Time. 134 ${sel_time} ${set_sel_time}= Identify SEL Time DateTime Delay 1d 135 136 ${status}= Run Keyword And Return Status Should Not Contain ${sel_time} 1969 137 ... msg=Date cannot be less than 1970. 138 139 IF '${status}' == '${TRUE}' 140 # Set SEL Time via IPMI command. 141 Set SEL Time Via IPMI ${sel_time} 142 # Get SEL Time Command. 143 ${get_sel_time}= Check Current Date Time Via IPMI 144 # Difference of time between set sel time and get time. 145 ${difference}= Get Time Difference ${get_sel_time} ${set_sel_time} 146 Should Be True 0<=${difference}<=2 147 # Difference of time between BMC Date and Get SEL Time. 148 ${bmc_time}= Get Current Date from BMC 149 ${difference}= Get Time Difference ${get_sel_time} ${bmc_time} 150 Should Be True 0<=${difference}<=2 151 ELSE 152 FAIL SEL Time cannot set Date less than 1970 153 END 154 155 156Verify SEL Set Time For Invalid Data Request 157 [Documentation] Verify IPMI Get SEL Time for invalid data request 158 [Tags] Verify_SEL_Set_Time_For_Invalid_Data_Request 159 [Setup] Printn 160 [Teardown] FFDC On Test Case Fail 161 162 # Gets BMC current date via date command. 163 ${current_date}= Get Current Date from BMC 164 165 # Gives hexa decimal Raw command data request with the prefix of 0x. 166 ${sel_date_raw}= Converting Date to HexaDecimal ${current_date} 167 168 # Set Invalid SEL Time with one extra request byte. 169 ${Set_seltime_invalid}= Run Keyword and Expect Error *${IPMI_RAW_CMD['SEL_entry']['Set_SEL_Time'][4]}* 170 ... Run IPMI Command ${IPMI_RAW_CMD['SEL_entry']['Set_SEL_Time'][0]} ${sel_date_raw} 0x00 171 Should Contain ${Set_seltime_invalid} ${IPMI_RAW_CMD['SEL_entry']['Set_SEL_Time'][3]} 172 173 174Verify SEL Set Time For Incomplete Data Request 175 [Documentation] Verify IPMI Get SEL Time for invalid data with one byte less request data. 176 [Tags] Verify_SEL_Set_Time_For_Incomplete_Data_Request 177 [Setup] Printn 178 [Teardown] FFDC On Test Case Fail 179 180 # Gets BMC current date via date command. 181 ${current_date}= Get Current Date from BMC 182 183 # Gives hexa decimal raw command data request with the prefix of 0x. 184 ${sel_date_raw}= Converting Date to HexaDecimal ${current_date} 185 186 # For data request less than expected byes, remove last byte. 187 ${sel_date_raw}= Split String ${sel_date_raw} 188 Remove From List ${sel_date_raw} -1 189 ${sel_date_raw}= Evaluate " ".join(${sel_date_raw}) 190 191 # Set incomplete SEL Time with one less request byte. 192 ${Set_seltime_incomplete}= 193 ... Run Keyword and Expect Error *${IPMI_RAW_CMD['SEL_entry']['Set_SEL_Time'][4]}* 194 ... Run IPMI Command ${IPMI_RAW_CMD['SEL_entry']['Set_SEL_Time'][0]} ${sel_date_raw} 195 Should Contain ${Set_seltime_incomplete} ${IPMI_RAW_CMD['SEL_entry']['Set_SEL_Time'][3]} 196 197 198Verify SEL Time In SEL Entry 199 [Documentation] Verify Configured SEL Time reflects in newly added SEL Entry. 200 [Tags] Verify_SEL_Time_In_SEL_Entry 201 202 Clear The SEL 203 204 # change to manual, get current time and add future year (here, 5years). 205 ${sel_date}= Get Specific Sel Date 5 206 207 # Gives hexa decimal raw command data request with the prefix of 0x. 208 ${sel_date_raw}= Converting Date to HexaDecimal ${sel_date} 209 210 # Set SEL Entry Command. 211 Set SEL Time Entry Via Raw Command ${sel_date_raw} 212 213 # Get SEL Time Command. 214 ${get_sel_time}= Check Current Date Time Via IPMI 215 216 # Identify Time difference and find the difference is less than 6 seconds. 217 # Command execution may happen at the end of millisecond so considered 6 seconds as difference. 218 ${time_difference}= Get Time Difference ${get_sel_time} ${sel_date} 219 Should Be True 0<=${time_difference}<=5 220 ... msg=Set SEL Time Not Working 221 222 # Get BMC time (native) and compare with set sel time given. 223 ${bmc_time}= Get Current Date from BMC 224 225 ${difference}= Get Time Difference ${bmc_time} ${sel_date} 226 Should Be True 0<=${difference}<=6 227 228 # Get any Sensor available from Sensor list. 229 ${sensor_name}= Fetch Any Sensor From Sensor List 230 231 # Get Sensor ID from SDR Get "sensor". 232 ${sensor_data1}= Fetch Sensor Details From SDR ${sensor_name} Sensor ID 233 ${name_sensor} ${sensor_number}= Get Data And Byte From SDR Sensor ${sensor_data1} 234 235 # Get Sensor Type from SDR Get "sensor". 236 ${sensor_data2}= Fetch Sensor Details From SDR ${sensor_name} Sensor Type (Threshold) 237 ${sensor_type} ${sensor_type_id}= Get Data And Byte From SDR Sensor ${sensor_data2} 238 239 # Add SEL Entry. 240 ${sel_create_resp}= Create SEL ${sensor_type_id} ${sensor_number} 241 242 # Finds the last added sel entry. 243 ${resp}= Verify Last SEL Added ${sensor_type} ${sensor_name} 244 245 # Fetches the date of the last added SEL Entry. 246 ${sel_entry_date}= Fetch Added SEL Date ${resp} 247 248 # Identify and find the time difference is less than 60 seconds. 249 # Finding the sensor details and execution may take up to a minute. 250 # Compare date and time of Set SEL with sel entry. 251 ${d}= Get Time Difference ${sel_entry_date} ${sel_date} 252 Should Be True 0<=${d}<=60 253 254 255Verify SEL Time In SEL Entry For Future Date and Time 256 [Documentation] Verify configured SEL Time (Future Date & Time) in added SEL Entry. 257 [Tags] Verify_SEL_Time_In_SEL_Entry_For_Future_Date_and_Time 258 259 Clear The SEL 260 261 # Gets BMC Current Time and Adds 15 minutes and sets the SEL Time. 262 ${sel_time} ${set_sel_time}= Identify SEL Time Future DateTime 06:15:00 263 264 # Set SEL Time via IPMI command. 265 Set SEL Time Via IPMI ${sel_time} 266 267 # Get SEL Time Command. 268 ${get_sel_time}= Check Current Date Time Via IPMI 269 270 # Difference of time between set sel time and get time. 271 ${difference}= Get Time Difference ${get_sel_time} ${set_sel_time} 272 Should Be True 0<=${difference}<=2 273 274 # Difference of time between BMC Date and Get SEL Time. 275 ${bmc_time}= Get Current Date from BMC 276 ${difference}= Get Time Difference ${get_sel_time} ${bmc_time} 277 Should Be True 0<=${difference}<=2 278 279 # Get any Sensor available from Sensor list. 280 ${sensor_name}= Fetch Any Sensor From Sensor List 281 282 # Get Sensor ID from SDR Get "sensor". 283 ${sensor_data1}= Fetch Sensor Details From SDR ${sensor_name} Sensor ID 284 ${name_sensor} ${sensor_number}= Get Data And Byte From SDR Sensor ${sensor_data1} 285 286 # Get Sensor Type from SDR Get "sensor". 287 ${sensor_data2}= Fetch Sensor Details From SDR ${sensor_name} Sensor Type (Threshold) 288 ${sensor_type} ${sensor_type_id}= Get Data And Byte From SDR Sensor ${sensor_data2} 289 290 # Add SEL Entry. 291 ${sel_create_resp}= Create SEL ${sensor_type_id} ${sensor_number} 292 293 # Finds the last added sel entry. 294 ${resp}= Verify Last SEL Added ${sensor_type} ${sensor_name} 295 296 # Fetches the date of the last added SEL Entry. 297 ${sel_entry_date}= Fetch Added SEL Date ${resp} 298 299 # Identify and find the time difference is less than 60 seconds. 300 # Finding the sensor details and execution may take up to a minute. 301 # Compare date and time of Set SEL with sel entry. 302 ${d}= Get Time Difference ${sel_entry_date} ${set_sel_time} 303 Should Be True 0<=${d}<=60 304 305 306Verify SEL Time In SEL Entry For Past Date And Time 307 [Documentation] Verify configured SEL Time (Past Date & Time) in added SEL Entry. 308 [Tags] Verify_SEL_Time_In_SEL_Entry_For_Past_Date_And_Time 309 310 Clear The SEL 311 312 # Gets BMC Current Time and subtracts 1 day and sets the SEL Time. 313 ${sel_time} ${set_sel_time}= Identify SEL Time DateTime Delay 1d 314 315 ${status}= Run Keyword And Return Status Should Not Contain ${sel_time} 1969 316 ... msg=Date cannot be less than 1970 317 318 IF '${status}' == '${TRUE}' 319 # Set SEL Time via IPMI command. 320 Set SEL Time Via IPMI ${sel_time} 321 # Get SEL Time Command. 322 ${get_sel_time}= Check Current Date Time Via IPMI 323 # Difference of time between set sel time and get time. 324 ${difference}= Get Time Difference ${get_sel_time} ${set_sel_time} 325 Should Be True 0<=${difference}<=2 326 # Difference of time between BMC Date and Get SEL Time. 327 ${bmc_time}= Get Current Date from BMC 328 ${difference}= Get Time Difference ${get_sel_time} ${bmc_time} 329 Should Be True 0<=${difference}<=2 330 331 # Get any Sensor available from Sensor list. 332 ${sensor_name}= Fetch Any Sensor From Sensor List 333 # Get Sensor ID from SDR Get "sensor". 334 ${sensor_data1}= Fetch Sensor Details From SDR ${sensor_name} Sensor ID 335 ${name_sensor} ${sensor_number}= Get Data And Byte From SDR Sensor ${sensor_data1} 336 337 # Get Sensor Type from SDR Get "sensor". 338 ${sensor_data2}= Fetch Sensor Details From SDR ${sensor_name} Sensor Type (Threshold) 339 ${sensor_type} ${sensor_type_id}= Get Data And Byte From SDR Sensor ${sensor_data2} 340 341 # Add SEL Entry. 342 ${sel_create_resp}= Create SEL ${sensor_type_id} ${sensor_number} 343 344 # Finds the last added sel entry. 345 ${resp}= Verify Last SEL Added ${sensor_type} ${sensor_name} 346 347 # Fetches the date of the last added SEL Entry. 348 ${sel_entry_date}= Fetch Added SEL Date ${resp} 349 350 # Identify and find the time difference is less than 60 seconds. 351 # Finding the sensor details and execution may take up to a minute. 352 # Compare date and time of Set SEL with sel entry. 353 ${d}= Get Time Difference ${sel_entry_date} ${set_sel_time} 354 Should Be True 0<=${d}<=60 355 ELSE 356 FAIL SEL Time cannot set Date less than 1970. 357 END 358 359 360Verify Multiple Set SEL Time With Multiple Add SEL Entry 361 [Documentation] Verify SEL time in multiple addition Of SEL entry. 362 [Tags] Verify_Multiple_Set_SEL_Time_With_Multiple_Add_SEL_Entry 363 364 # Gets BMC Current Time and Adds 15 minutes and sets the SEL Time. 365 ${sel_time} ${set_sel_time}= Identify SEL Time Future DateTime 06:15:00 366 367 FOR ${i} IN RANGE 1 6 368 369 # Set SEL Time via IPMI command. 370 Set SEL Time Via IPMI ${sel_time} 371 372 # Clear the SEL. 373 Clear The SEL 374 375 # Get any Sensor available from Sensor list. 376 ${sensor_name}= Fetch Any Sensor From Sensor List 377 378 # Get Sensor ID from SDR Get "sensor" and Identify Sensor ID. 379 ${sensor_data1}= Fetch Sensor Details From SDR ${sensor_name} Sensor ID 380 ${name_sensor} ${sensor_number}= Get Data And Byte From SDR Sensor ${sensor_data1} 381 382 # Get Sensor Type from SDR Get "sensor" and identify Sensor Type. 383 ${sensor_data2}= Fetch Sensor Details From SDR ${sensor_name} Sensor Type (Threshold) 384 ${sensor_type} ${sensor_type_id}= Get Data And Byte From SDR Sensor ${sensor_data2} 385 386 # Add SEL Entry. 387 ${sel_create_resp}= Create SEL ${sensor_type_id} ${sensor_number} 388 389 # Finds the last added sel entry. 390 ${resp}= Verify Last SEL Added ${sensor_type} ${sensor_name} 391 392 # Fetches the date of the last added SEL Entry. 393 ${sel_entry_date}= Fetch Added SEL Date ${resp} 394 395 # Identify and find the time difference is less than 60 seconds. 396 # Finding the sensor details and execution may take up to a minute. 397 # Compare date and time of Set SEL with sel entry. 398 ${d}= Get Time Difference ${sel_entry_date} ${set_sel_time} 399 Should Be True ${d}<=60 400 401 END 402 403 404*** Keywords *** 405 406Time Sync Mode Change Through Redfish 407 [Documentation] Export IP, token and change the time sync to manual. 408 [Arguments] ${value} 409 410 # Description of argument(s): 411 # ${value} Can be either ${FALSE} or ${TRUE}. 412 413 # May be changed to WebView. 414 415 # Changing Time Sync Mode to Manual. 416 Change Time Sync Mode Via Redfish ${value} 417 418 419Change Time Sync Mode Via Redfish 420 [Documentation] To change the time sync mode via Redfish. 421 [Arguments] ${value} 422 423 # Description of argument(s): 424 # ${value} Can be either ${FALSE} or ${TRUE} 425 426 # Creates request body for Redfish url. 427 ${mode}= Create Dictionary ProtocolEnabled=${value} 428 ${data}= Create Dictionary NTP=${mode} 429 430 # Patches the obtained body to the given url. 431 Redfish.patch ${REDFISH_NW_PROTOCOL_URI} body=&{data} 432 ... valid_status_codes=[${HTTP_NO_CONTENT}] 433 434 Sleep ${NETWORK_RESTART_TIME} 435 436 437Get SEL Time Command 438 [Documentation] Get SEL Time command. 439 440 # The response will be 8 byte timestamp in hexadecimal. 441 # example: If current date and time is "Wed May 4 18:55:00 UTC 2022", 442 # then, ${get_sel_time} will be "07 cc 72 62". 443 ${get_sel_time}= Run IPMI Command 444 ... ${IPMI_RAW_CMD['SEL_entry']['Get_SEL_Time'][0]} 445 446 [Return] ${get_sel_time} 447 448 449Set SEL Time Entry Via Raw Command 450 [Documentation] Set SEL Time command. 451 [Arguments] ${sel_date_raw} 452 453 # Description of argument(s): 454 # ${sel_date_raw} Time to set in hexadecimal bytes. 455 # Example: 456 # If date is 1st January 2022 12:30:00 PM, 457 # the hexadecimal timestamp is, 61D04948. 458 # then the request bytes are, 459 # ${sel_date_raw} 0x48 0x49 0xd0 0x61 460 461 Run IPMI Command ${IPMI_RAW_CMD['SEL_entry']['Set_SEL_Time'][0]} ${sel_date_raw} 462 Sleep ${NETWORK_RESTART_TIME} 463 464 465Clear The SEL 466 [Documentation] Clear SEL Command. 467 468 # Clear the SEL. 469 ${out}= Run IPMI Standard Command sel clear 470 Should Contain ${out} Clearing SEL 471 Sleep 2s 472 473 474Verify Last SEL Added 475 [Documentation] Verify last SEL added. 476 [Arguments] ${sensor_type} ${sensor_name} 477 478 # Description of argument(s): 479 # ${sensor_type} Type of the sensor (say Fan, Temp, etc.,). 480 # ${sensor_name} Name of the sensor. 481 482 ${resp}= Run IPMI Standard Command sel elist last 1 483 Run Keywords Should Contain ${resp} ${sensor_type} ${sensor_name} AND 484 ... Should Contain ${resp} Asserted msg=Add SEL Entry failed. 485 Should Not Contain ${resp} reset/cleared 486 487 [Return] ${resp} 488 489 490Check Current Date Time Via IPMI 491 [Documentation] Verify Current Date and Time Via IPMI user command. 492 493 ${resp}= Run IPMI Standard Command sel time get 494 [Return] ${resp} 495 496 497Get Specific Sel Date 498 [Documentation] Gets initial time and adds year to the current date and returns future date. 499 [Arguments] ${year} 500 501 # Description of argument(s): 502 # ${year} Can be any number of years (say 5 year). 503 504 ${current_date}= Get Current Date from BMC 505 506 # Converting given years to days by multiplying with 365days and adding the days to current date. 507 ${days}= Evaluate 365*${year}+1 508 ${date}= Add Time To Date 509 ... ${current_date} ${days}d result_format=%m/%d/%Y %H:%M:%S date_format=%m/%d/%Y %H:%M:%S 510 511 [Return] ${date} 512 513 514Converting Date to HexaDecimal 515 [Documentation] Converting the date into hexa decimal values. 516 [Arguments] ${date} 517 518 # Description of argument(s): 519 # ${date} Can be any date in format %m/%d/%Y %H:%M:%S. 520 521 ${epoch_date}= Convert Date ${date} epoch exclude_millis=yes date_format=%m/%d/%Y %H:%M:%S 522 ${date}= Convert To Hex ${epoch_date} lowercase=yes 523 524 # function calls from utils.py. 525 # Length of the date byte should be 8 so that each bytes are separated. 526 ${date}= Zfill Data ${date} 8 527 # To split every two characters to form one byte each. 528 ${date}= Split String With Index ${date} 2 529 # Prefix every list index value with 0x. 530 ${date}= Prefix Bytes ${date} 531 532 # Reverse the bytes and join the list to form request Time stamp data. 533 Reverse List ${date} 534 ${date}= Evaluate " ".join(${date}) 535 536 [Return] ${date} 537 538 539Get Time Difference 540 [Documentation] Converting the date into hexa decimal values. 541 [Arguments] ${date1} ${date2} 542 543 # Description of argument(s): 544 # ${date1} Can be any date in format %m/%d/%Y %H:%M:%S. 545 # ${date2} Can be any date in format %m/%d/%Y %H:%M:%S. 546 547 ${epoch_date1}= Convert Date ${date1} epoch exclude_millis=yes date_format=%m/%d/%Y %H:%M:%S 548 ${epoch_date2}= Convert Date ${date2} epoch exclude_millis=yes date_format=%m/%d/%Y %H:%M:%S 549 550 ${diff}= Evaluate int(${epoch_date1}) - int(${epoch_date2}) 551 552 [Return] ${diff} 553 554 555Identify SEL Time Future DateTime 556 [Documentation] Identify SEL Time Future DateTime. 557 [Arguments] ${time} 558 559 # Description of argument(s): 560 # ${time} Can be any number of hours or minutes in format %H:%M:%S. 561 562 # Gets BMC current date via date command. 563 ${current_date}= Get Current Date from BMC 564 565 ${datetime} = Add Time To Date 566 ... ${current_date} ${time} result_format=%m/%d/%Y %H:%M:%S date_format=%m/%d/%Y %H:%M:%S 567 568 #Set SEL Time. 569 ${quoted_date}= Fetch Date ${datetime} 570 571 [Return] ${quoted_date} ${datetime} 572 573 574Identify SEL Time DateTime Delay 575 [Documentation] Identify SEL Time DateTime Delay by subtracting given date. 576 [Arguments] ${days} 577 578 # Description of argument(s): 579 # ${days} Can be any days (say 3d). 580 581 # Gets BMC current date via date command. 582 ${current_date}= Get Current Date from BMC 583 584 ${datetime}= Subtract Time From Date 585 ... ${current_date} ${days} result_format=%m/%d/%Y %H:%M:%S date_format=%m/%d/%Y %H:%M:%S 586 587 # Format the sel time. 588 # function call from lib/utils.py. 589 ${quoted_date}= Fetch Date ${datetime} 590 591 [Return] ${quoted_date} ${datetime} 592 593 594Set SEL Time Via IPMI 595 [Documentation] Set SEL Time for given date using IPMI. 596 [Arguments] ${date_time} 597 598 # Description of argument(s): 599 # ${date_time} Can be any date in format %m/%d/%Y %H:%M:%S. 600 601 ${resp}= Run IPMI Standard Command sel time set "${date_time}" 602 Should Not Contain ${resp} Unspecified error 603 604 605Test Setup Execution 606 [Documentation] Test Setup Execution. 607 608 Redfish.Login 609 # Change timesync mode to manual with timeout as per resource.robot. 610 Time Sync Mode Change Through Redfish ${FALSE} 611 Sleep ${NETWORK_TIMEOUT} 612 613 614Test Teardown Execution 615 [Documentation] For execution of Test teardown. 616 617 Clear The SEL 618 619 # Change TimeSync mode to NTP with Timeout as per default resource.robot. 620 Time Sync Mode Change Through Redfish ${TRUE} 621 Sleep ${NETWORK_TIMEOUT} 622 Redfish.Logout 623 FFDC On Test Case Fail 624