*** Settings ***
Documentation  Test IPMI sensor IDs.

Resource               ../../lib/rest_client.robot
Resource               ../../lib/ipmi_client.robot
Resource               ../../lib/openbmc_ffdc.robot
Resource               ../../lib/state_manager.robot
Library                ../../data/model.py
Resource               ../../lib/boot_utils.robot
Resource               ../../lib/utils.robot

Test Setup              Open Connection And Log In
Test Teardown           Test Teardown Execution

*** Test Cases ***

DIMM Present And Not Present
    [Documentation]  Verify the IPMI sensor for DIMM3 present and not present.
    [Tags]  DIMM_Present_And_Not_Present

    # Set the dimm3 Present to 1
    Run IPMI Command
    ...  0x04 0x30 0xac 0xa9 0x00 0x40 0x00 0x00 0x00 0x00 0x20 0x00
    Verify The Attribute
    ...  ${HOST_INVENTORY_URI}system/chassis/motherboard/dimm3  Present  ${1}

    # Set the dimm3 Present to 0
    Run IPMI Command
    ...  0x04 0x30 0xac 0xa9 0xff 0x00 0x00 0x40 0x00 0x00 0x20 0x00
    Verify The Attribute
    ...  ${HOST_INVENTORY_URI}system/chassis/motherboard/dimm3  Present  ${0}


DIMM Functional And Not Functional
    [Documentation]  Verify that the DIMM3 is functional.
    [Tags]  DIMM_Functional_And_Not_Functional

    # Set the dimm3 Functional to 0
    Run IPMI Command
    ...  0x04 0x30 0xac 0x00 0x00 0x10 0x00 0x00 0x00 0x00 0x20 0x00
    Verify The Attribute
    ...  ${HOST_INVENTORY_URI}system/chassis/motherboard/dimm3
    ...  Functional  ${0}
    # Set the dimm3 Functional to 1
    Run IPMI Command
    ...  0x04 0x30 0xac 0x00 0x00 0x00 0x00 0x10 0x00 0x00 0x20 0x00
    Verify The Attribute
    ...  ${HOST_INVENTORY_URI}system/chassis/motherboard/dimm3
    ...  Functional  ${1}


CPU Present
    [Documentation]  Verify the IPMI sensor for CPU present.

    # sensor_id  component
    0x5a          cpu0

    [Template]  Check Present Bit
    [Tags]  CPU_Present


CPU Not Present
    [Documentation]  Verify the IPMI sensor for CPU not present.

    # sensor_id  component
    0x5a          cpu0

    [Template]  Check Not Present Bit
    [Tags]  CPU_Not_Present


CPU Functional
    [Documentation]  Verify the IPMI sensor for CPU functional.

    # sensor_id  component
    0x5a          cpu0

    [Template]  Check Functional Bit
    [Tags]  CPU_Functional


CPU Not Functional
    [Documentation]  Verify the IPMI sensor for CPU not functional.

    # sensor_id  component
    0x5a          cpu0

    [Template]  Check Not Functional Bit
    [Tags]  CPU_Not_Functional


GPU Present
    [Documentation]  Verify the IPMI sensor for GPU present.

    # sensor_id  component
    0xC5          gv100card0

    [Template]  Check Present Bit
    [Tags]  GPU_Present


GPU Not Present
    [Documentation]  Verify the IPMI sensor for GPU not present.

    # sensor_id  component
    0xC5          gv100card0

    [Template]  Check Not Present Bit
    [Tags]  GPU_Not_Present


GPU Functional
    [Documentation]  Verify the IPMI sensor GPU for functional.

    # sensor_id  component
    0xC5          gv100card0

    [Template]  Check Functional Bit
    [Tags]  GPU_Functional


GPU Not Functional
    [Documentation]  Verify the IPMI sensor GPU for not functional.

    # sensor_id  component
    0xC5          gv100card0

    [Template]  Check Not Functional Bit
    [Tags]  GPU_Not_Functional


Core Present
    [Documentation]  Verify the IPMI sensor for core present.

    # sensor_id  component
    0x1e          cpu0/core4

    [Template]  Check Present Bit
    [Tags]  Core_Present


Core Not Present
    [Documentation]  Verify the IPMI sensor for core not present.

    # sensor_id  component
    0x1e          cpu0/core4

    [Template]  Check Not Present Bit
    [Tags]  Core_Not_Present


Core Functional
    [Documentation]  Verify the IPMI sensor for core functional.

    # sensor_id  component
    0x1e          cpu0/core4

    [Template]  Check Functional Bit
    [Tags]  Core_Functional


Core Not Functional
    [Documentation]  Verify the IPMI sensor for core not functional.

    # sensor_id  component
    0x1e          cpu0/core4

    [Template]  Check Not Functional Bit
    [Tags]  Core_Not_Functional


# Operating System State Test Cases.

Set BootProgress To OSStart And Verify
    [Documentation]  Set BootProgress To OSStart and verify.

    # BootProgressID  BootProgress
    0x13              ${OS_BOOT_START}

    [Template]  Check BootProgress
    [Tags]  Set_BootProgress_To_OSStart_And_Verify


Set OperatingSystemState To CBoot And Verify
    [Documentation]  Set Operating System State to "CBoot"
    ...  and verify using REST.

    # OperatingSystemStateID  OperatingSystemState
    0x02                      ${OS_BOOT_CBoot}

    [Template]  Check OperatingSystemState
    [Tags]  Set_OperatingSystemState_To_CBoot_And_Verify


Set OperatingSystemState To PXEBoot And Verify
    [Documentation]  Set Operating System State to "PXEBoot"
    ...  and verify using REST.

    # OperatingSystemStateID  OperatingSystemState
    0x05                      ${OS_BOOT_PXE}

    [Template]  Check OperatingSystemState
    [Tags]  Set_OperatingSystemState_To_PXEBoot_And_Verify


Set OperatingSystemState To BootComplete And Verify
    [Documentation]  Set Operating System State to "BootComplete"
    ...  and verify using REST.

    # OperatingSystemStateID  OperatingSystemState
    0x40                      ${OS_BOOT_COMPLETE}

    [Template]  Check OperatingSystemState
    [Tags]  Set_OperatingSystemState_To_BootComplete_And_Verify


Set OperatingSystemState To CDROMBoot And Verify
    [Documentation]  Set Operating System State to "CDROMBoot"
    ...  and verify using REST.

    # OperatingSystemStateID  OperatingSystemState
    0x10                      ${OS_BOOT_CDROM}

    [Template]  Check OperatingSystemState
    [Tags]  Set_OperatingSystemState_To_CDROMBoot_And_Verify


Set OperatingSystemState To ROMBoot And Verify
    [Documentation]  Set Operating System State to "ROMBoot"
    ...  and verify using REST.

    # OperatingSystemStateID  OperatingSystemState
    0x20                      ${OS_BOOT_ROM}

    [Template]  Check OperatingSystemState
    [Tags]  Set_OperatingSystemState_To_ROMBoot_And_Verify


Set OperatingSystemState To DiagBoot And Verify
    [Documentation]  Set Operating System State to "DiagBoot"
    ...  and verify using REST.

    # OperatingSystemStateID  OperatingSystemState
    0x08                      ${OS_BOOT_DiagBoot}

    [Template]  Check OperatingSystemState
    [Tags]  Set_OperatingSystemState_To_DiagBoot_And_Verify


# Boot Progress Test Cases.

Set BootProgress To MemoryInit And Verify
    [Documentation]  Set BootProgress to "MemoryInit" and verify.

    # BootProgressID  BootProgress
    0x01              ${OS_BOOT_MEM}

    [Template]  Check BootProgress
    [Tags]  Set_BootProgress_To_MemoryInit_And_Verify


Set BootProgress To MotherboardInit And Verify
    [Documentation]  Set BootProgress to "MotherboardInit" and verify.

    # BootProgressID  BootProgress
    0x14              ${OS_BOOT_MOTHERBOARD}

    [Template]  Check BootProgress
    [Tags]  Set_BootProgress_To_MotherboardInit_And_Verify


Set BootProgress To SecondaryProcInit And Verify
    [Documentation]  Set BootProgress to "SecondaryProcInit" and verify.

    # BootProgressID  BootProgress
    0x03              ${OS_BOOT_SECPCI}

    [Template]  Check BootProgress
    [Tags]  Set_BootProgress_To_SecondaryProcInit_And_Verify


Set BootProgress To PCIinit And Verify
    [Documentation]  Set BootProgress to "PCIinit" and verify.

    #BootProgressID  BootProgress
    0x07             ${OS_BOOT_PCI}

    [Template]  Check BootProgress
    [Tags]  Set_BootProgress_To_PCIinit_And_Verify


Set BootProgress To Unspecified And Verify
    [Documentation]  Set BootProgress to "Unspecified" and verify.

    # BootProgressID  BootProgress
    0x00              ${OS_BOOT_OFF}

    [Template]  Check BootProgress
    [Tags]  Set_BootProgress_To_Unspecified_And_Verify


TPM Enable and Disable
    [Documentation]  Enable and disable TPM.
    [Tags]  TPM_Enable_and_Disable

    # Set the TPMEnable to 0
    Run IPMI Command
    ...  0x04 0x30 0xD7 0x00 0x00 0x01 0x00 0x00 0x00 0x00 0x20 0x00
    Verify The Attribute  ${CONTROL_URI}/host0/TPMEnable  TPMEnable  ${0}

    # Set the TPMEnable to 1
    Run IPMI Command
    ...  0x04 0x30 0xD7 0x00 0x00 0x02 0x00 0x00 0x00 0x00 0x20 0x00
    Verify The Attribute  ${CONTROL_URI}/host0/TPMEnable  TPMEnable  ${1}


Autoreboot Enable and Disable
    [Documentation]  Enable and disable Autoreboot.
    [Tags]  Autoreboot_Enable_and_Disable

    # Set the TPMEnable to 0
    Run IPMI Command
    ...  0x04 0x30 0xDA 0x00 0x00 0x01 0x00 0x00 0x00 0x00 0x20 0x00
    Verify The Attribute  ${CONTROL_URI}/host0/auto_reboot  AutoReboot  ${0}

    # Set the TPMEnable to 1
    Run IPMI Command
    ...  0x04 0x30 0xDA 0x00 0x00 0x02 0x00 0x00 0x00 0x00 0x20 0x00
    Verify The Attribute  ${CONTROL_URI}/host0/auto_reboot  AutoReboot  ${1}


OccActive Enable And Disable
    [Documentation]  OCC Active Enable And Disable.
    [Tags]  OCC_Active_Enable_And_Disable

    # Set the OccActive to 1
    Run IPMI Command
    ...  0x04 0x30 0x08 0xa8 0x00 0x02 0x00 0x01 0x00 0x00 0x00 0x00
    Verify The Attribute  ${OPENPOWER_CONTROL}/occ0  OccActive  ${1}

    # Set the OccActive to 0
    Run IPMI Command
    ...  0x04 0x30 0x08 0xa8 0x00 0x01 0x00 0x02 0x00 0x00 0x00 0x00
    Verify The Attribute  ${OPENPOWER_CONTROL}/occ0  OccActive  ${0}


Verify IPMI BT Capabilities Command
    [Documentation]  Verify IPMI BT capability command response.
    [Tags]  Verify_IPMI_BT_Capabilities_Command
    [Setup]  REST Power On

    ${output} =  Run IPMI command  0x06 0x36
    Should Be True  "${output}" == " 01 3f 3f 0a 01"
    ...  msg=Incorrect Output.


*** Keywords ***

Check Present Bit
    [Documentation]  Set the present field to 1 and verify.
    [Arguments]  ${sensor_id}  ${component}

    # Description of argument(s):
    # sensor_id     Corresponding to OperatingSystemState.
    # component     Component name.

    Run IPMI Command
    ...  0x04 0x30 ${sensor_id} 0xa9 0x00 0x80 0x00 0x00 0x00 0x00 0x20 0x00
    Verify The Attribute
    ...  ${HOST_INVENTORY_URI}system/chassis/motherboard/${component}
    ...  Present  ${1}


Check Not Present Bit
    [Documentation]  Set the present field to 1 and verify.
    [Arguments]  ${sensor_id}  ${component}

    # Description of argument(s):
    # sensor_id    Corresponding to OperatingSystemState.
    # component    Component name.

    Run IPMI Command
    ...  0x04 0x30 ${sensor_id} 0xa9 0x00 0x00 0x00 0x80 0x00 0x00 0x20 0x00
    Verify The Attribute
    ...  ${HOST_INVENTORY_URI}system/chassis/motherboard/${component}
    ...  Present  ${0}


Check Functional Bit
    [Documentation]  Set the functional to 1 and verify.
    [Arguments]  ${sensor_id}  ${component}

    # Description of argument(s):
    # sensor_id    Corresponding to OperatingSystemState.
    # component    Component name.

    Run IPMI Command
    ...  0x04 0x30 ${sensor_id} 0x00 0x00 0x00 0x00 0x00 0x01 0x00 0x20 0x00
    Verify The Attribute
    ...  ${HOST_INVENTORY_URI}system/chassis/motherboard/${component}
    ...  Functional  ${1}


Check Not Functional Bit
    [Documentation]  Set the functional to 0 and verify.
    [Arguments]  ${sensor_id}  ${component}

    # Description of argument(s):
    # sensor_id    Corresponding to OperatingSystemState.
    # component    Component name.

    Run IPMI Command
    ...  0x04 0x30 ${sensor_id} 0xa9 0xff 0x00 0x01 0x00 0x00 0x00 0x20 0x00
    Verify The Attribute
    ...  ${HOST_INVENTORY_URI}system/chassis/motherboard/${component}
    ...  Functional  ${0}


Check OperatingSystemState
    [Documentation]  Set OperatingSystemState and verify.
    [Arguments]  ${sensor_id}  ${OperatingSystemState}

    # Description of argument(s):
    # sensor_id               Corresponding to OperatingSystemState.
    # OperatingSystemState    OperatingSystemState to be set.

    Run IPMI Command
    ...  0x04 0x30 0x05 0xa9 0x00 ${sensor_id} 0x00 0x00 0x00 0x00 0x00 0x00
    ${resp}=  Read Attribute  ${SYSTEM_STATE_URI}/host0  OperatingSystemState
    Should Be Equal  ${OperatingSystemState}  ${resp}


Check BootProgress
    [Documentation]  Set the Bootprogress and verify.
    [Arguments]  ${BootProgressID}  ${BootProgress}

    # Description of argument(s):
    # BootProgressID    Corresponding to BootProgress.
    # BootProgress      BootProgress to be set.

    Run IPMI Command
    ...  0x04 0x30 0x03 0xa8 0x00 0x04 0x00 0x00 0x00 0x00 ${BootProgressID} 0x00
    ${resp}=  Read Attribute  ${SYSTEM_STATE_URI}/host0  BootProgress
    Should Be Equal  ${BootProgress}  ${resp}


Verify The Attribute
    [Arguments]  ${uri}  ${parm}  ${value}

    # Description of arguments:
    # uri     URI path.
    # parm    Attribute.
    # value   Output to be compared.

    ${output}=  Read Attribute  ${uri}  ${parm}
    Should Be Equal  ${value}  ${output}


Test Teardown Execution
    [Documentation]  Do the post test teardown.
    ...  1. Capture FFDC on test failure.
    ...  2. Close all open SSH connections.

    FFDC On Test Case Fail
    Close All Connections

