*** Settings ***

Documentation  Test Suite for Supported Fan Modules.

# Test Parameters:
# OPENBMC_HOST       The BMC host name or IP address.
# OPENBMC_USERNAME   The username to login to the BMC.
# OPENBMC_PASSWORD   The password for OPENBMC_USERNAME.
# OS_HOST            The OS host name or IP Address.
# OS_USERNAME        The OS login userid (usually root).
# OS_PASSWORD        The password for the OS login.

Resource         ../lib/state_manager.robot
Resource         ../lib/rest_client.robot
Resource         ../lib/fan_utils.robot
Resource         ../lib/common_utils.robot
Resource         ../lib/openbmc_ffdc.robot
Resource         ../syslib/utils_os.robot
Library          ../syslib/utils_keywords.py
Library          ../syslib/utils_os.py
Library          ../lib/gen_robot_valid.py

Test Setup       Open Connection And Log In
Suite Setup      REST Power On  stack_mode=skip
Test Teardown    FFDC On Test Case Fail


*** Variables ***

@{VALID_MODE_VALUES}   DEFAULT  CUSTOM


*** Test Cases ***

Verify Thermal Current Mode
    [Documentation]  Check current mode value.
    [Tags]  Verify_Thermal_Current_Mode

    # Example:
    #  /xyz/openbmc_project/control/thermal/0
    #
    # Response code:200, Content: {
    # "data": {
    #         "Current": "DEFAULT",
    #         "Supported": [
    #         "DEFAULT",
    #         "CUSTOM"
    #         },
    #         },
    # "message": "200 OK",
    # "status": "ok"
    # }

    ${current}=  Read Attribute  ${CONTROL_URI}thermal/0  current
    Rprint Vars  current

    Rvalid Value  current  valid_values=${VALID_MODE_VALUES}


Verify Supported Modes Available
    [Documentation]  Check supported modes available.
    [Tags]  Verify_Supported_Modes_Available

    ${supported}=  Read Attribute  ${CONTROL_URI}thermal/0  supported
    Rprint Vars  supported
