*** Settings ***
Documentation       This suite tests checkstop operations through OS.
Resource            ../lib/utils.robot
Resource            ../lib/openbmc_ffdc.robot
Resource            ../lib/ras/host_utils.robot
Resource            ../lib/resource.txt
Resource            ../lib/state_manager.robot
Test Setup          RAS Test Setup
Test Teardown       FFDC On Test Case Fail

*** Variables ***
${HOST_SETTINGS}    ${SETTINGS_URI}host0

*** Test Cases ***

Verify Channel Checkstop Through OS With Auto Reboot

    [Documentation]  Verify Channel Checkstop (MBS FIR REG INT PROTOCOL ERROR)
    ...              through OS With Auto Reboot settings enabled.
    [Tags]           Verify_Channel_Checkstop_Through_OS_With_Auto_Reboot

    Verify Checkstop Insertion With Auto Reboot
    ...  Centaur  2011400  4000000000000000

*** Keywords ***
Inject Checkstop Through OS
    [Documentation]  Inject checkstop on processor/centaur through OS.
    ...              Test sequence:
    ...              1. Boot To OS
    ...              2. Clear any existing gard records
    ...              3. Inject Checkstop on processor/centaur
    [Arguments]      ${chip_type}  ${fru}  ${address}
    # Description of arguments:
    # chip_type      The chip type (Processor/Centaur).
    # fru            FRU value (e.g. 2011400).
    # address        chip address (e.g 4000000000000000).


    Login To OS Host  ${OS_HOST}  ${OS_USERNAME}  ${OS_PASSWORD}
    # Get core values are present through OS.
    Get Cores Values From OS

    Gard Operations On OS  clear all

    # Fetch Processor/Centaur chip value based on the input chip_type.
    ${output}=  Get ChipID From OS  ${chip_type}
    ${chip_values}=  Split String  ${output}
    ${chip_value}=  Get From List  ${chip_values}  0

    Putscom Through OS  ${chip_value}  ${fru}  ${address}

Verify And Clear Gard Records On OS
    [Documentation]  Verify And Clear gard records on OS.

    Login To OS Host  ${OS_HOST}  ${OS_USERNAME}  ${OS_PASSWORD}
    ${output}=  Gard Operations On OS  list
    Should Not Contain  ${output}  'No GARD entries to display'
    Gard Operations On OS  clear all

Verify Checkstop Insertion With Auto Reboot
    [Documentation]  Inject and verify checkstop on processor/centaur through
    ...              OS with auto reboot.
    ...              Test sequence:
    ...              1. Enable Auto Reboot Setting
    ...              2. Inject Checkstop on processor/centaur
    ...              3. Check If HOST rebooted and OS is up
    ...              4. Verify & clear gard records
    [Arguments]      ${chip_type}  ${fru}  ${address}
    # Description of arguments:
    # chip_type      The chip type (Processor/Centaur).
    # fru            FRU value (e.g. 2011400).
    # address        chip address (e.g 4000000000000000).

    Set Auto Reboot  ${1}
    Inject Checkstop Through OS  ${chip_type}  ${fru}  ${address}
    Wait Until Keyword Succeeds  120 sec  20 sec  Is Host Rebooted
    Wait for OS  ${OS_HOST}  ${OS_USERNAME}  ${OS_PASSWORD}
    Verify And Clear Gard Records On OS

RAS Test SetUp
    [Documentation]  Validates input parameters.

    Should Not Be Empty
    ...   ${OS_HOST}  msg=You must provide DNS name/IP of the OS host.
    Should Not Be Empty
    ...   ${OS_USERNAME}  msg=You must provide OS host user name.
    Should Not Be Empty
    ...   ${OS_PASSWORD}  msg=You must provide OS host user password.
