***Settings***
Documentation   Generic REST/SSH/IPMI stress buster program.

Library        ../lib/jobs_processing.py
Resource       ../lib/rest_client.robot
Resource       ../lib/connection_client.robot
Resource       ../lib/ipmi_client.robot
Resource       ../lib/utils.robot
Resource       ../lib/openbmc_ffdc.robot

Test Teardown  FFDC On Test Case Fail

***Variables***

# Caller can specify a value for the following using -v parms
# Currently REST/SSH/IPMI session allowed.
${REST_BUSTER_MAX}    ${16}
${SSH_BUSTER_MAX}     ${16}
${IPMI_BUSTER_MAX}    ${5}

***Test Cases***

Stress BMC REST Server
    [Documentation]  Execute maximum allowed REST operation.
    [Tags]  Stress_BMC_REST_Server

    Log To Console  REST call request burst ${REST_BUSTER_MAX}
    ${dict}=  Execute Process
    ...  ${REST_BUSTER_MAX}  REST Enumerate Request On BMC
    Dictionary Should Not Contain Value  ${dict}  False
    ...  msg=One or more REST operations has failed.


Stress BMC SSH Server
    [Documentation]  Execute maximum allowed SSH operation.
    [Tags]  Stress_BMC_SSH_Server
    Log To Console  SSH call request burst ${SSH_BUSTER_MAX}
    ${dict}=  Execute Process
    ...  ${SSH_BUSTER_MAX}  SSH Connect And Execute Command
    Dictionary Should Not Contain Value  ${dict}  False
    ...  msg=One or more SSH operations has failed.


Stress BMC IPMI Server
    [Documentation]  Execute maximum allowed IPMI operation.
    [Tags]  Stress_BMC_IPMI_Server
    Log To Console  IPMI call request burst ${IPMI_BUSTER_MAX}
    ${dict}=  Execute Process  ${IPMI_BUSTER_MAX}  IPMI Check Status
    Dictionary Should Not Contain Value  ${dict}  False
    ...  msg=One or more IPMI operations has failed.

***Keywords***

REST Enumerate Request On BMC
    [Documentation]  Execute REST GET operation.

    # Create REST session.
    Create Session  openbmc  ${AUTH_URI}
    ${headers}=  Create Dictionary  Content-Type=application/json
    @{credentials}=  Create List  ${rest_username}  ${rest_password}
    ${data}=  Create Dictionary  data=@{credentials}
    ${resp}=  POST On Session  openbmc  /login  json=${data}  headers=${headers}
    Should Be Equal As Strings  ${resp.status_code}  ${HTTP_OK}

    # Trigger GET REST enumeration.
    ${resp}=  GET On Session  openbmc  /redfish/v1/Managers/${MANAGER_ID}  expected_status=any
    Log To Console  GET Request /redfish/v1/Managers/${MANAGER_ID}
    Should Be Equal As Strings  ${resp.status_code}  ${HTTP_OK}
    Delete All Sessions


SSH Connect And Execute Command
    [Documentation]  Execute SSH command execution operation.
    BMC Execute Command  df -h


IPMI Check Status
    [Documentation]  Execute IPMI command execution operation.
    Run IPMI Standard Command  chassis status
