*** Settings ***
Documentation   Suite to test OCC power module.

Resource        ../lib/open_power_utils.robot
Resource        ../lib/boot_utils.robot
Resource        ../lib/state_manager.robot
Resource        ../lib/openbmc_ffdc.robot
Resource        ../lib/utils.robot

Suite Setup     Suite Setup Execution
Test Teardown   Test Teardown Execution

*** Test Cases ***

Verify OCC Object Count
    [Documentation]  Verify that OCC and inventory entries match.
    [Tags]  Verify_OCC_Object_Count

    # Example:
    # /org/open_power/control/enumerate
    # {
    #    "/org/open_power/control/host0": {},
    #    "/org/open_power/control/occ0": {
    #       "OccActive": 0
    #   },
    # "/org/open_power/control/occ1": {
    #       "OccActive": 0
    #   }
    # }

    # Inventory counterpart cpu's:
    # "/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0",
    # "/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1",

    ${inventory_count}=  Count Object Entries
    ...  ${HOST_INVENTORY_URI}system/chassis/motherboard/  cpu*

    Should Be Equal  ${occ_count}  ${inventory_count}
    ...  msg=OCC and inventory entry counts are mismatched.

Verify OCC State When Host Is Booted
    [Documentation]  Verify OCC state when host is booted.
    [Tags]  Verify_OCC_State_When_Host_Is_Booted

    Verify OCC State  ${1}

Verify OCC State After Host Reboot
    [Documentation]  Verify OCC state and count after host reboot.
    [Tags]  Verify_OCC_State_After_Host_Reboot

    ${occ_count_before} =  Count OCC Object Entry
    Verify OCC State  ${1}
    REST OBMC Reboot (run)  stack_mode=normal  quiet=1
    Verify OCC State  ${1}
    ${occ_count_after} =  Count OCC Object Entry
    Should be Equal  ${occ_count_before}  ${occ_count_after}

Verify OCC State After BMC Reset
    [Documentation]  Verify OCC state and count after BMC reset.
    [Tags]  Verify_OCC_State_After_BMC_Reset

    ${occ_count_before} =  Count OCC Object Entry
    OBMC Reboot (run)
    Verify OCC State  ${1}
    ${occ_count_after} =  Count OCC Object Entry
    Should be Equal  ${occ_count_before}  ${occ_count_after}

Verify OCC State At Standby
    [Documentation]  Verify OCC state at standby.
    [Tags]  Verify_OCC_State_At_Standby

    REST Power Off  stack_mode=normal
    Verify OCC State  ${0}

*** Keywords ***

Suite Setup Execution
    [Documentation]  Do the initial test suite setup.
    # - Power off.
    # - Boot Host.

    Smart Power Off
    REST Power On
    Count OCC Object Entry

Count OCC Object Entry
    [Documentation]  Count OCC object entry and set count.

    ${object_count}=  Count Object Entries  ${OPENPOWER_CONTROL}  occ*
    Set Suite Variable  ${occ_count]  ${object_count}


Test Teardown Execution
    [Documentation]  Do the post test teardown.
    # - Capture FFDC on test failure.
    # - Delete error logs.
    # - Close all open SSH connections.

    FFDC On Test Case Fail
    Delete All Error Logs
    Close All Connections
