*** 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.

    # SensorID  Component
    0x5a        cpu0

    [Template]  Check Present Bit
    [Tags]  CPU_Present

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

    # SensorID  Component
    0x5a        cpu0

    [Template]  Check Not Present Bit
    [Tags]  CPU_Not_Present

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

    # SensorID  Component
    0x5a        cpu0

    [Template]  Check Functional Bit
    [Tags]  CPU_Functional

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

    # SensorID  Component
    0x5a        cpu0

    [Template]  Check Not Functional Bit
    [Tags]  CPU_Not_Functional

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

    # SensorID  Component
    0xC5        gv100card0

    [Template]  Check Present Bit
    [Tags]  GPU_Present

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

    # SensorID  Component
    0xC5        gv100card0

    [Template]  Check Not Present Bit
    [Tags]  GPU_Not_Present

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

    # SensorID  Component
    0xC5        gv100card0

    [Template]  Check Functional Bit
    [Tags]  GPU_Functional

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

    # SensorID  Component
    0xC5        gv100card0

    [Template]  Check Not Functional Bit
    [Tags]  GPU_Not_Functional

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

    # SensorID  Component
    0x1e        cpu0/core4

    [Template]  Check Present Bit
    [Tags]  Core_Present

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

    # SensorID  Component
    0x1e        cpu0/core4

    [Template]  Check Not Present Bit
    [Tags]  Core_Not_Present

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

    # SensorID  Component
    0x1e        cpu0/core4

    [Template]  Check Functional Bit
    [Tags]  Core_Functional

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

    # SensorID  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}  ${Comp}

    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/${Comp}  Present  ${1}

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

    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/${Comp}  Present  ${0}

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

    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/${Comp}  Functional  ${1}

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

    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/${Comp}  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):
    # ${Sensor_ID}  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

