| *** Settings *** | 
 | Documentation   Suite for testing non sensors. | 
 |  | 
 | Library      ../lib/state_map.py | 
 | Resource     ../lib/utils.robot | 
 | Resource     ../lib/boot_utils.robot | 
 | Resource     ../lib/state_manager.robot | 
 | Resource     ../lib/openbmc_ffdc.robot | 
 |  | 
 | Test Teardown     Post Test Case Execution | 
 |  | 
 | *** Variables *** | 
 |  | 
 | ${stack_mode}   skip | 
 |  | 
 | *** Test Cases *** | 
 |  | 
 | Verify Boot AttemptsLeft At Standby | 
 |     [Documentation]  Verify system boot attempts on various boot states. | 
 |     [Tags]  Verify_Boot_AttemptsLeft_At_Standby | 
 |     [Template]  Validate Boot AttemptsLeft | 
 |  | 
 |     # Example: Expected state | 
 |     # "data": { | 
 |     #    "/xyz/openbmc_project/state/host0": { | 
 |     #      "AttemptsLeft": 3, | 
 |     #      "BootProgress": "xyz.openbmc_project.State.Boot.Progress.ProgressStages.Unspecified", | 
 |     #      "CurrentHostState": "xyz.openbmc_project.State.Host.HostState.Off", | 
 |     #      "OperatingSystemState": "xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.Inactive", | 
 |     #      "RequestedHostTransition": "xyz.openbmc_project.State.Host.Transition.Off" | 
 |     #    } | 
 |     # } | 
 |  | 
 |     # System at standby    AttemptsLeft | 
 |     Reboot                 3 | 
 |  | 
 |  | 
 | Verify Boot AttemptsLeft At Host Booted | 
 |     [Documentation]  Verify the number of Host boot attempts left. | 
 |     [Tags]  Verify_Boot_AttemptsLeft_At_Host_Booted | 
 |     [Template]  Validate Boot AttemptsLeft | 
 |  | 
 |     # System at standby    AttemptsLeft | 
 |     Booted                 3 | 
 |  | 
 |  | 
 | Verify Boot AttemptsLeft When Host Reboot | 
 |     [Documentation]  Verify the number of Host reboots left. | 
 |     [Tags]  Verify_Boot_AttemptsLeft_When_Host_Reboot | 
 |     [Template]  Validate Boot AttemptsLeft | 
 |  | 
 |     # System at standby    AttemptsLeft | 
 |     RebootHost             2 | 
 |  | 
 |  | 
 | Verify Boot AttemptsLeft When Power Off | 
 |     [Documentation]  Verify the number of boots left while the system is poweref off. | 
 |     [Tags]  Verify_Boot_AttemptsLeft_When_Power_Off | 
 |     [Template]  Validate Boot AttemptsLeft | 
 |  | 
 |     # System at standby    AttemptsLeft | 
 |     Off                    2 | 
 |  | 
 |  | 
 | Verify Boot Sensor States At Ready | 
 |     [Documentation]  Verify system boot states at "Ready" state. | 
 |     [Tags]  Verify_Boot_Sensor_States_At_Ready | 
 |     [Template]  Valid Boot States | 
 |  | 
 |     # Example: Expected state | 
 |     # "data": { | 
 |     #    "/xyz/openbmc_project/state/bmc0": { | 
 |     #      "CurrentBMCState": "xyz.openbmc_project.State.BMC.BMCState.Ready", | 
 |     #      "RequestedBMCTransition": "xyz.openbmc_project.State.BMC.Transition.None" | 
 |     #    }, | 
 |     #    "/xyz/openbmc_project/state/chassis0": { | 
 |     #      "CurrentPowerState": "xyz.openbmc_project.State.Chassis.PowerState.Off", | 
 |     #      "RequestedPowerTransition": "xyz.openbmc_project.State.Chassis.Transition.Off" | 
 |     #    }, | 
 |     #    "/xyz/openbmc_project/state/host0": { | 
 |     #      "AttemptsLeft": 3, | 
 |     #      "BootProgress": "xyz.openbmc_project.State.Boot.Progress.ProgressStages.Unspecified", | 
 |     #      "CurrentHostState": "xyz.openbmc_project.State.Host.HostState.Off", | 
 |     #      "OperatingSystemState": "xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.Inactive", | 
 |     #      "RequestedHostTransition": "xyz.openbmc_project.State.Host.Transition.Off" | 
 |     #    } | 
 |     # } | 
 |  | 
 |     # System at standby. | 
 |     Off | 
 |  | 
 |  | 
 | Verify Boot Sensor States On Reboot Ready | 
 |     [Documentation]  Verify system boot states at "Ready" state. | 
 |     [Tags]  Verify_Boot_Sensor_States_On_Reboot_Ready | 
 |     [Template]  Valid Boot States | 
 |  | 
 |     # Example: Expected state | 
 |     # "data": { | 
 |     #    "/xyz/openbmc_project/state/bmc0": { | 
 |     #      "CurrentBMCState": "xyz.openbmc_project.State.BMC.BMCState.Ready", | 
 |     #      "RequestedBMCTransition": "xyz.openbmc_project.State.BMC.Transition.None" | 
 |     #    }, | 
 |     #    "/xyz/openbmc_project/state/chassis0": { | 
 |     #      "CurrentPowerState": "xyz.openbmc_project.State.Chassis.PowerState.Off", | 
 |     #      "RequestedPowerTransition": "xyz.openbmc_project.State.Chassis.Transition.Off" | 
 |     #    }, | 
 |     #    "/xyz/openbmc_project/state/host0": { | 
 |     #      "AttemptsLeft": 3, | 
 |     #      "BootProgress": "xyz.openbmc_project.State.Boot.Progress.ProgressStages.Unspecified", | 
 |     #      "CurrentHostState": "xyz.openbmc_project.State.Host.HostState.Off", | 
 |     #      "OperatingSystemState": "xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.Inactive", | 
 |     #      "RequestedHostTransition": "xyz.openbmc_project.State.Host.Transition.Off" | 
 |     #    } | 
 |     # } | 
 |  | 
 |     # BMC on reset to standby. | 
 |     Reboot | 
 |  | 
 |  | 
 | Verify Boot Sensor States At Running | 
 |     [Documentation]  Verify system boot states at "Running" state. | 
 |     [Tags]  Verify_Boot_Sensor_States_At_Running | 
 |     [Template]  Valid Boot States | 
 |  | 
 |     # Example: Expected state | 
 |     # "data": { | 
 |     #    "/xyz/openbmc_project/state/bmc0": { | 
 |     #      "CurrentBMCState": "xyz.openbmc_project.State.BMC.BMCState.Ready", | 
 |     #      "RequestedBMCTransition": "xyz.openbmc_project.State.BMC.Transition.None" | 
 |     #   }, | 
 |     #   "/xyz/openbmc_project/state/chassis0": { | 
 |     #      "CurrentPowerState": "xyz.openbmc_project.State.Chassis.PowerState.On", | 
 |     #      "RequestedPowerTransition": "xyz.openbmc_project.State.Chassis.Transition.Off" | 
 |     #   }, | 
 |     #   "/xyz/openbmc_project/state/host0": { | 
 |     #      "AttemptsLeft": 2, | 
 |     #      "BootProgress": "xyz.openbmc_project.State.Boot.Progress.ProgressStages.MotherboardInit", | 
 |     #      "CurrentHostState": "xyz.openbmc_project.State.Host.HostState.Running", | 
 |     #      "OperatingSystemState": "xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.Inactive", | 
 |     #      "RequestedHostTransition": "xyz.openbmc_project.State.Host.Transition.On" | 
 |     #   } | 
 |     # } | 
 |  | 
 |     # System at Running state but during initial state. | 
 |     Running | 
 |  | 
 |  | 
 | Verify Boot Sensor States At Host Booted | 
 |     [Documentation]  Verify system boot states when host is booted. | 
 |     [Tags]  Verify_Boot_Sensor_States_At_Host_Booted | 
 |     [Template]  Valid Boot States | 
 |  | 
 |     # Example: Expected state | 
 |     # "data": { | 
 |     #    "/xyz/openbmc_project/state/bmc0": { | 
 |     #      "CurrentBMCState": "xyz.openbmc_project.State.BMC.BMCState.Ready", | 
 |     #      "RequestedBMCTransition": "xyz.openbmc_project.State.BMC.Transition.None" | 
 |     #   }, | 
 |     #   "/xyz/openbmc_project/state/chassis0": { | 
 |     #      "CurrentPowerState": "xyz.openbmc_project.State.Chassis.PowerState.On", | 
 |     #      "RequestedPowerTransition": "xyz.openbmc_project.State.Chassis.Transition.Off" | 
 |     #   }, | 
 |     #   "/xyz/openbmc_project/state/host0": { | 
 |     #      "AttemptsLeft": 3, | 
 |     #      "BootProgress": "xyz.openbmc_project.State.Boot.Progress.ProgressStages.OSStart", | 
 |     #      "CurrentHostState": "xyz.openbmc_project.State.Host.HostState.Running", | 
 |     #      "OperatingSystemState": "xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.BootComplete", | 
 |     #      "RequestedHostTransition": "xyz.openbmc_project.State.Host.Transition.On" | 
 |     #   } | 
 |     # } | 
 |  | 
 |     # System when host is booted. | 
 |     Booted | 
 |  | 
 |  | 
 | Verify Boot Sensor States RR on Host Booted | 
 |     [Documentation]  Verify system boot states post BMC reset. | 
 |     [Tags]  Verify_Boot_Sensor_States_RR_on_Host_Booted | 
 |     [Template]  Valid Boot States | 
 |  | 
 |     # Example: Expected state | 
 |     # "data": { | 
 |     #    "/xyz/openbmc_project/state/bmc0": { | 
 |     #      "CurrentBMCState": "xyz.openbmc_project.State.BMC.BMCState.Ready", | 
 |     #      "RequestedBMCTransition": "xyz.openbmc_project.State.BMC.Transition.None" | 
 |     #   }, | 
 |     #   "/xyz/openbmc_project/state/chassis0": { | 
 |     #      "CurrentPowerState": "xyz.openbmc_project.State.Chassis.PowerState.On", | 
 |     #      "RequestedPowerTransition": "xyz.openbmc_project.State.Chassis.Transition.Off" | 
 |     #   }, | 
 |     #   "/xyz/openbmc_project/state/host0": { | 
 |     #      "AttemptsLeft": 3, | 
 |     #      "BootProgress": "xyz.openbmc_project.State.Boot.Progress.ProgressStages.OSStart", | 
 |     #      "CurrentHostState": "xyz.openbmc_project.State.Host.HostState.Running", | 
 |     #      "OperatingSystemState": "xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.BootComplete", | 
 |     #      "RequestedHostTransition": "xyz.openbmc_project.State.Host.Transition.On" | 
 |     #   } | 
 |     # } | 
 |  | 
 |     # System when host is booted. | 
 |     ResetReload | 
 |  | 
 |  | 
 | *** Keywords *** | 
 |  | 
 | Validate Boot AttemptsLeft | 
 |     [Documentation]  Verify boot attempts for a given system state. | 
 |     [Arguments]  ${sys_state}  ${expected_attempts_left} | 
 |  | 
 |     # Description of argument(s): | 
 |     # sys_state    A user-defined boot state (e.g. "Off", "On", etc). | 
 |     #              See VALID_BOOT_STATES in state_map.py. | 
 |     # expected_attempts_left     Boot attempts left. | 
 |  | 
 |     Choose Boot And Run  ${sys_state} | 
 |     ${atempts_left}=  Read Attribute  ${HOST_STATE_URI}  AttemptsLeft | 
 |     Should Be True  ${atempts_left} == ${expected_attempts_left} | 
 |  | 
 |  | 
 | Valid Boot States | 
 |     [Documentation]  Verify boot states for a given system state. | 
 |     [Arguments]  ${sys_state} | 
 |  | 
 |     # Description of argument(s): | 
 |     # sys_state    A user-defined boot state (e.g. "Off", "On", etc). | 
 |     #              See VALID_BOOT_STATES in state_map.py. | 
 |  | 
 |     Choose Boot And Run  ${sys_state} | 
 |     ${boot_states}=  Get Boot State | 
 |     ${valid_state}=  Valid Boot State  ${sys_state}  ${boot_states} | 
 |     Should Be True  ${valid_state} | 
 |  | 
 |  | 
 | Choose Boot And Run | 
 |     [Documentation]  Choose system boot type. | 
 |     [Arguments]  ${option} | 
 |  | 
 |     # Description of argument(s): | 
 |     # option    Boot type (e.g. "Off", "On", "Reboot", etc.). | 
 |  | 
 |     Run Keyword If  '${option}' == 'Off' | 
 |     ...    Initiate Host PowerOff | 
 |     ...  ELSE IF  '${option}' == 'Reboot' | 
 |     ...    Run Keywords  Initiate Host PowerOff  AND  Initiate BMC Reboot | 
 |     ...                  AND  Wait For BMC Ready | 
 |     ...  ELSE IF  '${option}' == 'Running' | 
 |     ...    Power On Till Chassis Is On | 
 |     ...  ELSE IF  '${option}' == 'Booted' | 
 |     ...    Initiate Host Boot | 
 |     ...  ELSE IF  '${option}' == 'RebootHost' | 
 |     ...    Initiate Host Reboot  wait=${0} | 
 |     ...  ELSE IF  '${option}' == 'ResetReload' | 
 |     ...    Reboot Host And Expect Runtime | 
 |  | 
 |  | 
 | Power On Till Chassis Is On | 
 |     [Documentation]  Initiate power on and check till chassis state is just | 
 |     ...              turned "On". | 
 |  | 
 |     # TODO: Move to smart power off once ready. | 
 |     Initiate Host PowerOff | 
 |     Initiate Host Boot  wait=${0} | 
 |     Wait Until Keyword Succeeds  2 min  10 sec  Is Chassis On | 
 |  | 
 |     # TODO: Find better mechanism instead of wait. | 
 |     Sleep  20 Sec | 
 |  | 
 |  | 
 | Reboot Host And Expect Runtime | 
 |     [Documentation]  Initiate reset reload when host is booted. | 
 |  | 
 |     Initiate BMC Reboot | 
 |     Wait Until Keyword Succeeds  10 min  10 sec  Is OS Booted | 
 |     Verify BMC RTC And UTC Time Drift | 
 |  | 
 |  | 
 | Post Test Case Execution | 
 |    [Documentation]  Do the post test teardown. | 
 |    # - Capture FFDC on test failure. | 
 |    # - Delete error logs. | 
 |    # - Close all open SSH connections. | 
 |    # - Clear all REST sessions. | 
 |  | 
 |    FFDC On Test Case Fail | 
 |    Delete All Error Logs | 
 |    Close All Connections | 
 |  |