1***Settings***
2Documentation   Generic REST/SSH/IPMI stress buster program.
3
4Library        ../lib/jobs_processing.py
5Resource       ../lib/rest_client.robot
6Resource       ../lib/connection_client.robot
7Resource       ../lib/ipmi_client.robot
8Resource       ../lib/utils.robot
9Resource       ../lib/openbmc_ffdc.robot
10
11Test Teardown  FFDC On Test Case Fail
12
13***Variables***
14
15# Caller can specify a value for the following using -v parms
16# Currently REST/SSH/IPMI session allowed.
17${REST_BUSTER_MAX}    ${16}
18${SSH_BUSTER_MAX}     ${16}
19${IPMI_BUSTER_MAX}    ${5}
20
21***Test Cases***
22
23Stress BMC REST Server
24    [Documentation]  Execute maximum allowed REST operation.
25    [Tags]  Stress_BMC_REST_Server
26
27    Log To Console  REST call request burst ${REST_BUSTER_MAX}
28    ${dict}=  Execute Process
29    ...  ${REST_BUSTER_MAX}  REST Enumerate Request On BMC
30    Dictionary Should Not Contain Value  ${dict}  False
31    ...  msg=One or more REST operations has failed.
32
33
34Stress BMC SSH Server
35    [Documentation]  Execute maximum allowed SSH operation.
36    [Tags]  Stress_BMC_SSH_Server
37    Log To Console  SSH call request burst ${SSH_BUSTER_MAX}
38    ${dict}=  Execute Process
39    ...  ${SSH_BUSTER_MAX}  SSH Connect And Execute Command
40    Dictionary Should Not Contain Value  ${dict}  False
41    ...  msg=One or more SSH operations has failed.
42
43
44Stress BMC IPMI Server
45    [Documentation]  Execute maximum allowed IPMI operation.
46    [Tags]  Stress_BMC_IPMI_Server
47    Log To Console  IPMI call request burst ${IPMI_BUSTER_MAX}
48    ${dict}=  Execute Process  ${IPMI_BUSTER_MAX}  IPMI Check Status
49    Dictionary Should Not Contain Value  ${dict}  False
50    ...  msg=One or more IPMI operations has failed.
51
52***Keywords***
53
54REST Enumerate Request On BMC
55    [Documentation]  Execute REST GET operation.
56
57    # Create REST session.
58    Create Session  openbmc  ${AUTH_URI}
59    ${headers}=  Create Dictionary  Content-Type=application/json
60    @{credentials}=  Create List  ${rest_username}  ${rest_password}
61    ${data}=  Create Dictionary  data=@{credentials}
62    ${resp}=  POST On Session  openbmc  /login  json=${data}  headers=${headers}
63    Should Be Equal As Strings  ${resp.status_code}  ${HTTP_OK}
64
65    # Trigger GET REST enumeration.
66    ${resp}=  GET On Session  openbmc  /redfish/v1/Managers/${MANAGER_ID}  expected_status=any
67    Log To Console  GET Request /redfish/v1/Managers/${MANAGER_ID}
68    Should Be Equal As Strings  ${resp.status_code}  ${HTTP_OK}
69    Delete All Sessions
70
71
72SSH Connect And Execute Command
73    [Documentation]  Execute SSH command execution operation.
74    BMC Execute Command  df -h
75
76
77IPMI Check Status
78    [Documentation]  Execute IPMI command execution operation.
79    Run IPMI Standard Command  chassis status
80