| Chris Austen | b29d2e8 | 2016-06-07 12:25:35 -0500 | [diff] [blame] | 1 | *** Settings *** | 
|  | 2 | Resource                ../lib/resource.txt | 
|  | 3 | Resource                ../lib/rest_client.robot | 
| George Keishing | 5e870cd | 2016-08-24 10:05:47 -0500 | [diff] [blame] | 4 | Resource                ../lib/connection_client.robot | 
| George Keishing | 30c12ff | 2016-09-02 10:25:29 -0500 | [diff] [blame] | 5 | Library                 DateTime | 
|  | 6 | Library                 Process | 
| Chris Austen | b29d2e8 | 2016-06-07 12:25:35 -0500 | [diff] [blame] | 7 | Library                 OperatingSystem | 
| Michael Walsh | a6723f2 | 2016-11-22 11:12:01 -0600 | [diff] [blame] | 8 | Library                 gen_print.py | 
|  | 9 | Library                 gen_robot_print.py | 
| Chris Austen | b29d2e8 | 2016-06-07 12:25:35 -0500 | [diff] [blame] | 10 |  | 
|  | 11 | *** Variables *** | 
|  | 12 | ${SYSTEM_SHUTDOWN_TIME}       ${5} | 
| Michael Walsh | a6723f2 | 2016-11-22 11:12:01 -0600 | [diff] [blame] | 13 | ${dbuscmdBase} | 
| George Keishing | 85ca05e | 2016-11-30 09:47:18 -0600 | [diff] [blame] | 14 | ...  dbus-send --system --print-reply --dest=${OPENBMC_BASE_DBUS}.settings.Host | 
| Michael Walsh | a6723f2 | 2016-11-22 11:12:01 -0600 | [diff] [blame] | 15 | ${dbuscmdGet} | 
| George Keishing | 9485af9 | 2017-01-04 10:21:43 -0600 | [diff] [blame] | 16 | ...  ${SETTINGS_URI}host0  org.freedesktop.DBus.Properties.Get | 
| George Keishing | 85ca05e | 2016-11-30 09:47:18 -0600 | [diff] [blame] | 17 | # Enable when ready with openbmc/openbmc-test-automation#203 | 
|  | 18 | #${dbuscmdString}=  string:"xyz.openbmc_project.settings.Host" string: | 
| Michael Walsh | a6723f2 | 2016-11-22 11:12:01 -0600 | [diff] [blame] | 19 | ${dbuscmdString}=   string:"org.openbmc.settings.Host" string: | 
|  | 20 |  | 
|  | 21 | # Assign default value to QUIET for programs which may not define it. | 
|  | 22 | ${QUIET}  ${0} | 
| Sivas SRR | ea85d1f | 2016-11-13 22:44:28 -0600 | [diff] [blame] | 23 | ${bmc_mem_free_cmd}=   free | tr -s ' ' | sed '/^Mem/!d' | cut -d" " -f4 | 
|  | 24 | ${bmc_mem_total_cmd}=   free | tr -s ' ' | sed '/^Mem/!d' | cut -d" " -f2 | 
|  | 25 | ${bmc_cpu_usage_cmd}=   top -n 1  | grep CPU: | cut -c 7-9 | 
| Sridevi Ramesh | 1699d37 | 2016-12-06 00:20:22 -0600 | [diff] [blame] | 26 | ${HOST_SETTING}    ${SETTINGS_URI}host0 | 
| Sivas SRR | aca5571 | 2016-12-21 04:32:35 -0600 | [diff] [blame] | 27 | # /dev/mtdblock5 filesystem  should be 100% full always | 
|  | 28 | ${bmc_file_system_usage_cmd}= | 
|  | 29 | ...  df -h | grep -v /dev/mtdblock5 | cut -c 52-54 | grep 100 | wc -l | 
| Chris Austen | b29d2e8 | 2016-06-07 12:25:35 -0500 | [diff] [blame] | 30 |  | 
| George Keishing | cce9df2 | 2017-01-24 06:19:33 -0600 | [diff] [blame] | 31 | ${BOOT_TIME}     ${0} | 
|  | 32 | ${BOOT_COUNT}    ${0} | 
| Sivas SRR | 8254db6 | 2017-02-07 09:39:46 -0600 | [diff] [blame^] | 33 | ${devicetree_base}  /sys/firmware/devicetree/base/model | 
| George Keishing | cce9df2 | 2017-01-24 06:19:33 -0600 | [diff] [blame] | 34 |  | 
| Chris Austen | b29d2e8 | 2016-06-07 12:25:35 -0500 | [diff] [blame] | 35 | *** Keywords *** | 
| Sridevi Ramesh | 1699d37 | 2016-12-06 00:20:22 -0600 | [diff] [blame] | 36 |  | 
| Sivas SRR | 8254db6 | 2017-02-07 09:39:46 -0600 | [diff] [blame^] | 37 | Get BMC System Model | 
|  | 38 | [Documentation]  Get the BMC model from the device tree. | 
|  | 39 |  | 
|  | 40 | ${bmc_model}  ${stderr}=  Execute Command  cat ${devicetree_base} | cut -f 1 | 
|  | 41 | ...  -d ${SPACE}  return_stderr=True | 
|  | 42 | Should Be Empty  ${stderr} | 
|  | 43 | Should Not Be Empty  ${bmc_model} | 
|  | 44 | [Return]  ${bmc_model} | 
|  | 45 |  | 
|  | 46 | Verify BMC System Model | 
|  | 47 | [Documentation]  Verify the BMC model with ${OPENBMC_MODEL}. | 
|  | 48 | [Arguments]  ${bmc_model} | 
|  | 49 |  | 
|  | 50 | ${tmp_bmc_model}=  Fetch From Right  ${OPENBMC_MODEL}  / | 
|  | 51 | ${tmp_bmc_model}=  Fetch From Left  ${tmp_bmc_model}  . | 
|  | 52 | ${ret}=  Run Keyword And Return Status  Should Contain  ${bmc_model} | 
|  | 53 | ...  ${tmp_bmc_model}  ignore_case=True | 
|  | 54 | [Return]  ${ret} | 
|  | 55 |  | 
| Chris Austen | b29d2e8 | 2016-06-07 12:25:35 -0500 | [diff] [blame] | 56 | Wait For Host To Ping | 
| root | 442f0ef | 2016-08-04 20:23:05 +0000 | [diff] [blame] | 57 | [Arguments]  ${host}  ${timeout}=${OPENBMC_REBOOT_TIMEOUT}min | 
|  | 58 | ...          ${interval}=5 sec | 
|  | 59 |  | 
|  | 60 | # host      The DNS name or IP of the host to ping. | 
|  | 61 | # timeout   The amount of time after which attempts to ping cease. | 
|  | 62 | # interval  The amount of time in between attempts to ping. | 
|  | 63 |  | 
|  | 64 | Wait Until Keyword Succeeds  ${timeout}  ${interval}  Ping Host  ${host} | 
| Chris Austen | b29d2e8 | 2016-06-07 12:25:35 -0500 | [diff] [blame] | 65 |  | 
|  | 66 | Ping Host | 
|  | 67 | [Arguments]     ${host} | 
| George Keishing | 8a84f95 | 2016-08-25 04:54:53 -0500 | [diff] [blame] | 68 | Should Not Be Empty    ${host}   msg=No host provided | 
| Michael Walsh | a6723f2 | 2016-11-22 11:12:01 -0600 | [diff] [blame] | 69 | ${RC}   ${output}=     Run and return RC and Output    ping -c 4 ${host} | 
| Chris Austen | b29d2e8 | 2016-06-07 12:25:35 -0500 | [diff] [blame] | 70 | Log     RC: ${RC}\nOutput:\n${output} | 
|  | 71 | Should be equal     ${RC}   ${0} | 
|  | 72 |  | 
|  | 73 | Get Boot Progress | 
| Michael Walsh | a6723f2 | 2016-11-22 11:12:01 -0600 | [diff] [blame] | 74 | [Arguments]  ${quiet}=${QUIET} | 
|  | 75 |  | 
| George Keishing | 85ca05e | 2016-11-30 09:47:18 -0600 | [diff] [blame] | 76 | ${state}=  Read Attribute  ${OPENBMC_BASE_URI}sensors/host/BootProgress | 
| Michael Walsh | a6723f2 | 2016-11-22 11:12:01 -0600 | [diff] [blame] | 77 | ...  value  quiet=${quiet} | 
| Gunnar Mills | c9ea936 | 2016-12-13 16:21:13 -0600 | [diff] [blame] | 78 | [Return]  ${state} | 
| Chris Austen | b29d2e8 | 2016-06-07 12:25:35 -0500 | [diff] [blame] | 79 |  | 
|  | 80 | Is Power On | 
| root | 442f0ef | 2016-08-04 20:23:05 +0000 | [diff] [blame] | 81 | ${state}=  Get Power State | 
|  | 82 | Should be equal  ${state}  ${1} | 
| Chris Austen | b29d2e8 | 2016-06-07 12:25:35 -0500 | [diff] [blame] | 83 |  | 
|  | 84 | Is Power Off | 
| root | 442f0ef | 2016-08-04 20:23:05 +0000 | [diff] [blame] | 85 | ${state}=  Get Power State | 
|  | 86 | Should be equal  ${state}  ${0} | 
| Chris Austen | b29d2e8 | 2016-06-07 12:25:35 -0500 | [diff] [blame] | 87 |  | 
| root | 442f0ef | 2016-08-04 20:23:05 +0000 | [diff] [blame] | 88 | Initiate Power On | 
|  | 89 | [Documentation]  Initiates the power on and waits until the Is Power On | 
|  | 90 | ...  keyword returns that the power state has switched to on. | 
| Michael Walsh | a6723f2 | 2016-11-22 11:12:01 -0600 | [diff] [blame] | 91 | [Arguments]  ${wait}=${1} | 
|  | 92 |  | 
| Chris Austen | b29d2e8 | 2016-06-07 12:25:35 -0500 | [diff] [blame] | 93 | @{arglist}=   Create List | 
|  | 94 | ${args}=     Create Dictionary    data=@{arglist} | 
| George Keishing | 85ca05e | 2016-11-30 09:47:18 -0600 | [diff] [blame] | 95 | ${resp}=  Call Method  ${OPENBMC_BASE_URI}control/chassis0/  powerOn | 
| Michael Walsh | a6723f2 | 2016-11-22 11:12:01 -0600 | [diff] [blame] | 96 | ...  data=${args} | 
| Chris Austen | b29d2e8 | 2016-06-07 12:25:35 -0500 | [diff] [blame] | 97 | should be equal as strings      ${resp.status_code}     ${HTTP_OK} | 
| Chris Austen | b29d2e8 | 2016-06-07 12:25:35 -0500 | [diff] [blame] | 98 |  | 
| Michael Walsh | a6723f2 | 2016-11-22 11:12:01 -0600 | [diff] [blame] | 99 | # Does caller want to wait for power on status? | 
|  | 100 | Run Keyword If  '${wait}' == '${0}'  Return From Keyword | 
|  | 101 | Wait Until Keyword Succeeds  3 min  10 sec  Is Power On | 
| Rahul Maheshwari | f684ba7 | 2016-10-25 07:24:41 -0500 | [diff] [blame] | 102 |  | 
| root | 442f0ef | 2016-08-04 20:23:05 +0000 | [diff] [blame] | 103 | Initiate Power Off | 
|  | 104 | [Documentation]  Initiates the power off and waits until the Is Power Off | 
|  | 105 | ...  keyword returns that the power state has switched to off. | 
| Chris Austen | b29d2e8 | 2016-06-07 12:25:35 -0500 | [diff] [blame] | 106 | @{arglist}=   Create List | 
|  | 107 | ${args}=     Create Dictionary    data=@{arglist} | 
| George Keishing | 85ca05e | 2016-11-30 09:47:18 -0600 | [diff] [blame] | 108 | ${resp}=  Call Method  ${OPENBMC_BASE_URI}control/chassis0/  powerOff | 
| Michael Walsh | a6723f2 | 2016-11-22 11:12:01 -0600 | [diff] [blame] | 109 | ...  data=${args} | 
| Chris Austen | b29d2e8 | 2016-06-07 12:25:35 -0500 | [diff] [blame] | 110 | should be equal as strings      ${resp.status_code}     ${HTTP_OK} | 
| Michael Walsh | a6723f2 | 2016-11-22 11:12:01 -0600 | [diff] [blame] | 111 | Wait Until Keyword Succeeds  1 min  10 sec  Is Power Off | 
| Chris Austen | b29d2e8 | 2016-06-07 12:25:35 -0500 | [diff] [blame] | 112 |  | 
|  | 113 | Trigger Warm Reset | 
|  | 114 | log to console    "Triggering warm reset" | 
| Michael Walsh | a6723f2 | 2016-11-22 11:12:01 -0600 | [diff] [blame] | 115 | ${data}=   create dictionary   data=@{EMPTY} | 
| George Keishing | 85ca05e | 2016-11-30 09:47:18 -0600 | [diff] [blame] | 116 | ${resp}=  openbmc post request | 
|  | 117 | ...  ${OPENBMC_BASE_URI}control/bmc0/action/warmReset  data=${data} | 
| Chris Austen | b29d2e8 | 2016-06-07 12:25:35 -0500 | [diff] [blame] | 118 | Should Be Equal As Strings      ${resp.status_code}     ${HTTP_OK} | 
| George Keishing | b370081 | 2016-08-31 03:03:30 -0500 | [diff] [blame] | 119 | ${session_active}=   Check If warmReset is Initiated | 
|  | 120 | Run Keyword If   '${session_active}' == '${True}' | 
|  | 121 | ...    Fail   msg=warm reset didn't occur | 
|  | 122 |  | 
| Chris Austen | b29d2e8 | 2016-06-07 12:25:35 -0500 | [diff] [blame] | 123 | Sleep   ${SYSTEM_SHUTDOWN_TIME}min | 
| Rahul Maheshwari | 5f253c4 | 2017-01-30 05:19:51 -0600 | [diff] [blame] | 124 | Check If BMC Is Up | 
| Michael Walsh | 49ab0f4 | 2016-07-20 11:44:33 -0500 | [diff] [blame] | 125 |  | 
|  | 126 | Check OS | 
| root | 442f0ef | 2016-08-04 20:23:05 +0000 | [diff] [blame] | 127 | [Documentation]  Attempts to ping the host OS and then checks that the host | 
|  | 128 | ...              OS is up by running an SSH command. | 
| Michael Walsh | 49ab0f4 | 2016-07-20 11:44:33 -0500 | [diff] [blame] | 129 |  | 
|  | 130 | [Arguments]  ${os_host}=${OS_HOST}  ${os_username}=${OS_USERNAME} | 
| Michael Walsh | a6723f2 | 2016-11-22 11:12:01 -0600 | [diff] [blame] | 131 | ...          ${os_password}=${OS_PASSWORD}  ${quiet}=${QUIET} | 
|  | 132 | ...          ${print_string}=${EMPTY} | 
| Michael Walsh | 49ab0f4 | 2016-07-20 11:44:33 -0500 | [diff] [blame] | 133 | [Teardown]  Close Connection | 
|  | 134 |  | 
|  | 135 | # os_host           The DNS name/IP of the OS host associated with our BMC. | 
|  | 136 | # os_username       The username to be used to sign on to the OS host. | 
|  | 137 | # os_password       The password to be used to sign on to the OS host. | 
| Michael Walsh | a6723f2 | 2016-11-22 11:12:01 -0600 | [diff] [blame] | 138 | # quiet             Indicates whether this keyword should write to console. | 
|  | 139 | # print_string      A string to be printed before checking the OS. | 
|  | 140 |  | 
|  | 141 | rprint  ${print_string} | 
| Michael Walsh | 49ab0f4 | 2016-07-20 11:44:33 -0500 | [diff] [blame] | 142 |  | 
| root | 442f0ef | 2016-08-04 20:23:05 +0000 | [diff] [blame] | 143 | # Attempt to ping the OS. Store the return code to check later. | 
|  | 144 | ${ping_rc}=  Run Keyword and Return Status  Ping Host  ${os_host} | 
|  | 145 |  | 
| Michael Walsh | 49ab0f4 | 2016-07-20 11:44:33 -0500 | [diff] [blame] | 146 | Open connection  ${os_host} | 
| Michael Walsh | 49ab0f4 | 2016-07-20 11:44:33 -0500 | [diff] [blame] | 147 |  | 
| Michael Walsh | a6723f2 | 2016-11-22 11:12:01 -0600 | [diff] [blame] | 148 | ${status}  ${msg}=  Run Keyword And Ignore Error  Login  ${os_username} | 
|  | 149 | ...  ${os_password} | 
|  | 150 | ${err_msg1}=  Sprint Error  ${msg} | 
|  | 151 | ${err_msg}=  Catenate  SEPARATOR=  \n  ${err_msg1} | 
|  | 152 | Run Keyword If  '${status}' == 'FAIL'  Fail  msg=${err_msg} | 
| Michael Walsh | 49ab0f4 | 2016-07-20 11:44:33 -0500 | [diff] [blame] | 153 | ${output}  ${stderr}  ${rc}=  Execute Command  uptime  return_stderr=True | 
|  | 154 | ...        return_rc=True | 
|  | 155 |  | 
| Michael Walsh | a6723f2 | 2016-11-22 11:12:01 -0600 | [diff] [blame] | 156 | ${temp_msg}=  Catenate  Could not execute a command on the operating | 
|  | 157 | ...  system.\n | 
|  | 158 | ${err_msg1}=  Sprint Error  ${temp_msg} | 
|  | 159 | ${err_msg}=  Catenate  SEPARATOR=  \n  ${err_msg1} | 
|  | 160 |  | 
|  | 161 | # If the return code returned by "Execute Command" is non-zero, this | 
|  | 162 | # keyword will fail. | 
|  | 163 | Should Be Equal  ${rc}  ${0}  msg=${err_msg} | 
| Michael Walsh | 49ab0f4 | 2016-07-20 11:44:33 -0500 | [diff] [blame] | 164 | # We will likewise fail if there is any stderr data. | 
|  | 165 | Should Be Empty  ${stderr} | 
|  | 166 |  | 
| Michael Walsh | a6723f2 | 2016-11-22 11:12:01 -0600 | [diff] [blame] | 167 | ${temp_msg}=  Set Variable  Could not ping the operating system.\n | 
|  | 168 | ${err_msg1}=  Sprint Error  ${temp_msg} | 
|  | 169 | ${err_msg}=  Catenate  SEPARATOR=  \n  ${err_msg1} | 
|  | 170 | # We will likewise fail if the OS did not ping, as we could SSH but not | 
|  | 171 | # ping | 
|  | 172 | Should Be Equal As Strings  ${ping_rc}  ${TRUE}  msg=${err_msg} | 
| root | 442f0ef | 2016-08-04 20:23:05 +0000 | [diff] [blame] | 173 |  | 
| Michael Walsh | 49ab0f4 | 2016-07-20 11:44:33 -0500 | [diff] [blame] | 174 | Wait for OS | 
|  | 175 | [Documentation]  Waits for the host OS to come up via calls to "Check OS". | 
|  | 176 | [Arguments]  ${os_host}=${OS_HOST}  ${os_username}=${OS_USERNAME} | 
|  | 177 | ...          ${os_password}=${OS_PASSWORD}  ${timeout}=${OS_WAIT_TIMEOUT} | 
| Michael Walsh | a6723f2 | 2016-11-22 11:12:01 -0600 | [diff] [blame] | 178 | ...          ${quiet}=${0} | 
|  | 179 | [Teardown]  rprintn | 
| Michael Walsh | 49ab0f4 | 2016-07-20 11:44:33 -0500 | [diff] [blame] | 180 |  | 
|  | 181 | # os_host           The DNS name or IP of the OS host associated with our | 
|  | 182 | #                   BMC. | 
|  | 183 | # os_username       The username to be used to sign on to the OS host. | 
|  | 184 | # os_password       The password to be used to sign on to the OS host. | 
|  | 185 | # timeout           The timeout in seconds indicating how long you're | 
|  | 186 | #                   willing to wait for the OS to respond. | 
| Michael Walsh | a6723f2 | 2016-11-22 11:12:01 -0600 | [diff] [blame] | 187 | # quiet             Indicates whether this keyword should write to console. | 
| Michael Walsh | 49ab0f4 | 2016-07-20 11:44:33 -0500 | [diff] [blame] | 188 |  | 
|  | 189 | # The interval to be used between calls to "Check OS". | 
|  | 190 | ${interval}=  Set Variable  5 | 
|  | 191 |  | 
| Michael Walsh | a6723f2 | 2016-11-22 11:12:01 -0600 | [diff] [blame] | 192 | ${message}=  Catenate  Checking every ${interval} seconds for up to | 
|  | 193 | ...  ${timeout} seconds for the operating system to communicate. | 
|  | 194 | rqprint_timen  ${message} | 
|  | 195 |  | 
| Michael Walsh | 49ab0f4 | 2016-07-20 11:44:33 -0500 | [diff] [blame] | 196 | Wait Until Keyword Succeeds  ${timeout} sec  ${interval}  Check OS | 
|  | 197 | ...                          ${os_host}  ${os_username}  ${os_password} | 
| Michael Walsh | a6723f2 | 2016-11-22 11:12:01 -0600 | [diff] [blame] | 198 | ...                          print_string=\# | 
|  | 199 |  | 
|  | 200 | rqprintn | 
|  | 201 |  | 
|  | 202 | rqprint_timen  The operating system is now communicating. | 
| root | 442f0ef | 2016-08-04 20:23:05 +0000 | [diff] [blame] | 203 |  | 
| Rahul Maheshwari | 2c72504 | 2017-01-29 22:55:28 -0600 | [diff] [blame] | 204 | Get BMC State Deprecated | 
| root | 442f0ef | 2016-08-04 20:23:05 +0000 | [diff] [blame] | 205 | [Documentation]  Returns the state of the BMC as a string. (i.e: BMC_READY) | 
| Michael Walsh | a6723f2 | 2016-11-22 11:12:01 -0600 | [diff] [blame] | 206 | [Arguments]  ${quiet}=${QUIET} | 
|  | 207 |  | 
| root | 442f0ef | 2016-08-04 20:23:05 +0000 | [diff] [blame] | 208 | @{arglist}=  Create List | 
|  | 209 | ${args}=  Create Dictionary  data=@{arglist} | 
| George Keishing | 85ca05e | 2016-11-30 09:47:18 -0600 | [diff] [blame] | 210 | ${resp}=  Call Method  ${OPENBMC_BASE_URI}managers/System/  getSystemState | 
| Michael Walsh | a6723f2 | 2016-11-22 11:12:01 -0600 | [diff] [blame] | 211 | ...        data=${args}  quiet=${quiet} | 
| root | 442f0ef | 2016-08-04 20:23:05 +0000 | [diff] [blame] | 212 | Should be equal as strings  ${resp.status_code}  ${HTTP_OK} | 
|  | 213 | ${content}=  to json  ${resp.content} | 
| Gunnar Mills | c9ea936 | 2016-12-13 16:21:13 -0600 | [diff] [blame] | 214 | [Return]  ${content["data"]} | 
| root | 442f0ef | 2016-08-04 20:23:05 +0000 | [diff] [blame] | 215 |  | 
|  | 216 | Get Power State | 
|  | 217 | [Documentation]  Returns the power state as an integer. Either 0 or 1. | 
| Michael Walsh | a6723f2 | 2016-11-22 11:12:01 -0600 | [diff] [blame] | 218 | [Arguments]  ${quiet}=${QUIET} | 
|  | 219 |  | 
| root | 442f0ef | 2016-08-04 20:23:05 +0000 | [diff] [blame] | 220 | @{arglist}=  Create List | 
|  | 221 | ${args}=  Create Dictionary  data=@{arglist} | 
| Michael Walsh | a6723f2 | 2016-11-22 11:12:01 -0600 | [diff] [blame] | 222 |  | 
| George Keishing | 85ca05e | 2016-11-30 09:47:18 -0600 | [diff] [blame] | 223 | ${resp}=  Call Method  ${OPENBMC_BASE_URI}control/chassis0/  getPowerState | 
| Michael Walsh | a6723f2 | 2016-11-22 11:12:01 -0600 | [diff] [blame] | 224 | ...        data=${args}  quiet=${quiet} | 
| root | 442f0ef | 2016-08-04 20:23:05 +0000 | [diff] [blame] | 225 | Should be equal as strings  ${resp.status_code}  ${HTTP_OK} | 
|  | 226 | ${content}=  to json  ${resp.content} | 
| Gunnar Mills | c9ea936 | 2016-12-13 16:21:13 -0600 | [diff] [blame] | 227 | [Return]  ${content["data"]} | 
| Jay Azurin | e4c52eb | 2016-08-16 20:51:10 -0500 | [diff] [blame] | 228 |  | 
|  | 229 | Clear BMC Record Log | 
|  | 230 | [Documentation]  Clears all the event logs on the BMC. This would be | 
|  | 231 | ...              equivalent to ipmitool sel clear. | 
|  | 232 | @{arglist}=   Create List | 
|  | 233 | ${args}=     Create Dictionary    data=@{arglist} | 
| George Keishing | 85ca05e | 2016-11-30 09:47:18 -0600 | [diff] [blame] | 234 | ${resp}=  Call Method | 
|  | 235 | ...  ${OPENBMC_BASE_URI}records/events/  clear  data=${args} | 
| Jay Azurin | e4c52eb | 2016-08-16 20:51:10 -0500 | [diff] [blame] | 236 | should be equal as strings      ${resp.status_code}     ${HTTP_OK} | 
|  | 237 |  | 
|  | 238 | Copy PNOR to BMC | 
|  | 239 | Import Library      SCPLibrary      WITH NAME       scp | 
|  | 240 | Open Connection for SCP | 
|  | 241 | Log    Copying ${PNOR_IMAGE_PATH} to /tmp | 
|  | 242 | scp.Put File    ${PNOR_IMAGE_PATH}   /tmp | 
|  | 243 |  | 
|  | 244 | Flash PNOR | 
|  | 245 | [Documentation]    Calls flash bios update method to flash PNOR image | 
| Gunnar Mills | 3803280 | 2016-12-12 13:43:40 -0600 | [diff] [blame] | 246 | [Arguments]    ${pnor_image} | 
| Jay Azurin | e4c52eb | 2016-08-16 20:51:10 -0500 | [diff] [blame] | 247 | @{arglist}=   Create List    ${pnor_image} | 
|  | 248 | ${args}=     Create Dictionary    data=@{arglist} | 
| George Keishing | 85ca05e | 2016-11-30 09:47:18 -0600 | [diff] [blame] | 249 | ${resp}=  Call Method  ${OPENBMC_BASE_URI}control/flash/bios/  update | 
| Michael Walsh | a6723f2 | 2016-11-22 11:12:01 -0600 | [diff] [blame] | 250 | ...  data=${args} | 
| Jay Azurin | e4c52eb | 2016-08-16 20:51:10 -0500 | [diff] [blame] | 251 | should be equal as strings      ${resp.status_code}     ${HTTP_OK} | 
|  | 252 | Wait Until Keyword Succeeds    2 min   10 sec    Is PNOR Flashing | 
|  | 253 |  | 
|  | 254 | Get Flash BIOS Status | 
|  | 255 | [Documentation]  Returns the status of the flash BIOS API as a string. For | 
|  | 256 | ...              example 'Flashing', 'Flash Done', etc | 
| George Keishing | 85ca05e | 2016-11-30 09:47:18 -0600 | [diff] [blame] | 257 | ${data}=      Read Properties     ${OPENBMC_BASE_URI}control/flash/bios | 
| Gunnar Mills | c9ea936 | 2016-12-13 16:21:13 -0600 | [diff] [blame] | 258 | [Return]    ${data['status']} | 
| Jay Azurin | e4c52eb | 2016-08-16 20:51:10 -0500 | [diff] [blame] | 259 |  | 
|  | 260 | Is PNOR Flashing | 
|  | 261 | [Documentation]  Get BIOS 'Flashing' status. This indicates that PNOR | 
|  | 262 | ...              flashing has started. | 
|  | 263 | ${status}=    Get Flash BIOS Status | 
|  | 264 | should be equal as strings     ${status}     Flashing | 
|  | 265 |  | 
|  | 266 | Is PNOR Flash Done | 
|  | 267 | [Documentation]  Get BIOS 'Flash Done' status.  This indicates that the | 
|  | 268 | ...              PNOR flashing has completed. | 
| Leah McNutt | 9ba3227 | 2016-11-17 15:48:39 +0000 | [diff] [blame] | 269 | ${status}=    Get Flash BIOS Status | 
| Jay Azurin | e4c52eb | 2016-08-16 20:51:10 -0500 | [diff] [blame] | 270 | should be equal as strings     ${status}     Flash Done | 
|  | 271 |  | 
|  | 272 | Is System State Host Booted | 
|  | 273 | [Documentation]  Checks whether system state is HOST_BOOTED. | 
| Rahul Maheshwari | 2c72504 | 2017-01-29 22:55:28 -0600 | [diff] [blame] | 274 | ${state}=    Get BMC State Deprecated | 
| Jay Azurin | e4c52eb | 2016-08-16 20:51:10 -0500 | [diff] [blame] | 275 | should be equal as strings     ${state}     HOST_BOOTED | 
| George Keishing | 5e870cd | 2016-08-24 10:05:47 -0500 | [diff] [blame] | 276 |  | 
| Rahul Maheshwari | 2c72504 | 2017-01-29 22:55:28 -0600 | [diff] [blame] | 277 | Is OS Starting | 
|  | 278 | [Documentation]  Check if boot progress is OS starting. | 
|  | 279 | ${boot_progress}=  Get Boot Progress | 
|  | 280 | Should Be Equal  ${boot_progress}  FW Progress, Starting OS | 
|  | 281 |  | 
| George Keishing | 5e870cd | 2016-08-24 10:05:47 -0500 | [diff] [blame] | 282 | Verify Ping and REST Authentication | 
| Michael Walsh | a6723f2 | 2016-11-22 11:12:01 -0600 | [diff] [blame] | 283 | ${l_ping}=   Run Keyword And Return Status | 
| George Keishing | 5e870cd | 2016-08-24 10:05:47 -0500 | [diff] [blame] | 284 | ...    Ping Host  ${OPENBMC_HOST} | 
| George Keishing | c4d3dc0 | 2016-09-19 03:45:55 -0500 | [diff] [blame] | 285 | Run Keyword If  '${l_ping}' == '${False}' | 
|  | 286 | ...    Fail   msg=Ping Failed | 
| George Keishing | 5e870cd | 2016-08-24 10:05:47 -0500 | [diff] [blame] | 287 |  | 
| Michael Walsh | a6723f2 | 2016-11-22 11:12:01 -0600 | [diff] [blame] | 288 | ${l_rest}=   Run Keyword And Return Status | 
| George Keishing | 5e870cd | 2016-08-24 10:05:47 -0500 | [diff] [blame] | 289 | ...    Initialize OpenBMC | 
| George Keishing | c4d3dc0 | 2016-09-19 03:45:55 -0500 | [diff] [blame] | 290 | Run Keyword If  '${l_rest}' == '${False}' | 
|  | 291 | ...    Fail   msg=REST Authentication Failed | 
| George Keishing | 5e870cd | 2016-08-24 10:05:47 -0500 | [diff] [blame] | 292 |  | 
|  | 293 | # Just to make sure the SSH is working for SCP | 
|  | 294 | Open Connection And Log In | 
|  | 295 | ${system}   ${stderr}=    Execute Command   hostname   return_stderr=True | 
|  | 296 | Should Be Empty     ${stderr} | 
|  | 297 |  | 
| George Keishing | c4d3dc0 | 2016-09-19 03:45:55 -0500 | [diff] [blame] | 298 | Check If BMC is Up | 
|  | 299 | [Documentation]  Wait for Host to be online. Checks every X seconds | 
|  | 300 | ...              interval for Y minutes and fails if timed out. | 
|  | 301 | ...              Default MAX timedout is 10 min, interval 10 seconds. | 
| Gunnar Mills | 3803280 | 2016-12-12 13:43:40 -0600 | [diff] [blame] | 302 | [Arguments]      ${max_timeout}=${OPENBMC_REBOOT_TIMEOUT} min | 
| George Keishing | c4d3dc0 | 2016-09-19 03:45:55 -0500 | [diff] [blame] | 303 | ...              ${interval}=10 sec | 
|  | 304 |  | 
|  | 305 | Wait Until Keyword Succeeds | 
|  | 306 | ...   ${max_timeout}  ${interval}   Verify Ping and REST Authentication | 
|  | 307 |  | 
| George Keishing | b370081 | 2016-08-31 03:03:30 -0500 | [diff] [blame] | 308 |  | 
|  | 309 | Check If warmReset is Initiated | 
|  | 310 | [Documentation]  Ping would be still alive, so try SSH to connect | 
|  | 311 | ...              if fails the ports are down indicating reboot | 
|  | 312 | ...              is in progress | 
| George Keishing | 3c05d35 | 2016-12-13 06:54:50 -0600 | [diff] [blame] | 313 |  | 
|  | 314 | # Warm reset adds 3 seconds delay before forcing reboot | 
|  | 315 | # To minimize race conditions, we wait for 7 seconds | 
|  | 316 | Sleep  7s | 
| George Keishing | b370081 | 2016-08-31 03:03:30 -0500 | [diff] [blame] | 317 | ${alive}=   Run Keyword and Return Status | 
|  | 318 | ...    Open Connection And Log In | 
|  | 319 | Return From Keyword If   '${alive}' == '${False}'    ${False} | 
| Gunnar Mills | c9ea936 | 2016-12-13 16:21:13 -0600 | [diff] [blame] | 320 | [Return]    ${True} | 
| George Keishing | b370081 | 2016-08-31 03:03:30 -0500 | [diff] [blame] | 321 |  | 
| George Keishing | 06ae4aa | 2016-08-30 01:41:28 -0500 | [diff] [blame] | 322 | Flush REST Sessions | 
|  | 323 | [Documentation]   Removes all the active session objects | 
|  | 324 | Delete All Sessions | 
| George Keishing | b370081 | 2016-08-31 03:03:30 -0500 | [diff] [blame] | 325 |  | 
| Sivas SRR | e1143ae | 2016-08-26 22:31:02 -0500 | [diff] [blame] | 326 | Initialize DBUS cmd | 
|  | 327 | [Documentation]  Initialize dbus string with property string to extract | 
| Gunnar Mills | 3803280 | 2016-12-12 13:43:40 -0600 | [diff] [blame] | 328 | [Arguments]   ${boot_property} | 
| Michael Walsh | a6723f2 | 2016-11-22 11:12:01 -0600 | [diff] [blame] | 329 | ${cmd}=     Catenate  ${dbuscmdBase} ${dbuscmdGet} ${dbuscmdString} | 
|  | 330 | ${cmd}=     Catenate  ${cmd}${boot_property} | 
| Sivas SRR | e1143ae | 2016-08-26 22:31:02 -0500 | [diff] [blame] | 331 | Set Global Variable   ${dbuscmd}     ${cmd} | 
|  | 332 |  | 
| George Keishing | 30c12ff | 2016-09-02 10:25:29 -0500 | [diff] [blame] | 333 |  | 
| Gunnar Mills | 9c76034 | 2016-12-08 10:12:06 -0600 | [diff] [blame] | 334 | Stop OBMC Console Client | 
|  | 335 | [Documentation]   Stop any running obmc_console_client | 
|  | 336 | ...               writing to file_path. | 
|  | 337 | [Arguments]   ${file_path}=/tmp/obmc-console.log | 
|  | 338 |  | 
| Michael Walsh | 01bd368 | 2017-01-10 11:21:05 -0600 | [diff] [blame] | 339 | ${cmd_buf}=  Catenate  SEPARATOR=${SPACE} | 
|  | 340 | ...  ps ax | grep obmc-console-client | grep ${file_path} | grep -v grep | 
|  | 341 | ...  | awk '{print $1}' | 
|  | 342 |  | 
| Gunnar Mills | 9c76034 | 2016-12-08 10:12:06 -0600 | [diff] [blame] | 343 | ${pid}= | 
| Michael Walsh | 01bd368 | 2017-01-10 11:21:05 -0600 | [diff] [blame] | 344 | ...  Execute Command  ${cmd_buf} | 
| Gunnar Mills | 9c76034 | 2016-12-08 10:12:06 -0600 | [diff] [blame] | 345 |  | 
|  | 346 | Run Keyword If  '${pid}' != '${EMPTY}' | 
|  | 347 | ...  Execute Command  kill -s KILL ${pid} | 
|  | 348 | ...  ELSE  Log  "No obmc-console-client process running" | 
|  | 349 |  | 
|  | 350 |  | 
| George Keishing | 30c12ff | 2016-09-02 10:25:29 -0500 | [diff] [blame] | 351 | Start SOL Console Logging | 
| Gunnar Mills | 9c76034 | 2016-12-08 10:12:06 -0600 | [diff] [blame] | 352 | [Documentation]   Start a new obmc_console_client process and direct | 
|  | 353 | ...               output to a file. | 
|  | 354 | [Arguments]   ${file_path}=/tmp/obmc-console.log | 
| George Keishing | 30c12ff | 2016-09-02 10:25:29 -0500 | [diff] [blame] | 355 |  | 
|  | 356 | Open Connection And Log In | 
|  | 357 |  | 
| Gunnar Mills | 9c76034 | 2016-12-08 10:12:06 -0600 | [diff] [blame] | 358 | Stop OBMC Console Client  ${file_path} | 
|  | 359 |  | 
| George Keishing | 30c12ff | 2016-09-02 10:25:29 -0500 | [diff] [blame] | 360 | Start Command | 
| Gunnar Mills | 9c76034 | 2016-12-08 10:12:06 -0600 | [diff] [blame] | 361 | ...  obmc-console-client > ${file_path} | 
| George Keishing | 30c12ff | 2016-09-02 10:25:29 -0500 | [diff] [blame] | 362 |  | 
|  | 363 |  | 
|  | 364 | Stop SOL Console Logging | 
| Michael Walsh | 01bd368 | 2017-01-10 11:21:05 -0600 | [diff] [blame] | 365 | [Documentation]  Stop obmc_console_client process, if any, and | 
|  | 366 | ...              return the console output as a string. | 
|  | 367 | [Arguments]  ${file_path}=/tmp/obmc-console.log  ${targ_file_path}=${EMPTY} | 
|  | 368 |  | 
|  | 369 | # Description of arguments: | 
|  | 370 | # file_path       The path on the obmc system where SOL output may be | 
|  | 371 | #                 found. | 
|  | 372 | # targ_file_path  If specified, the file path to which SOL data should be | 
|  | 373 | #                 written. | 
| George Keishing | 30c12ff | 2016-09-02 10:25:29 -0500 | [diff] [blame] | 374 |  | 
|  | 375 | Open Connection And Log In | 
|  | 376 |  | 
| Gunnar Mills | 9c76034 | 2016-12-08 10:12:06 -0600 | [diff] [blame] | 377 | Stop OBMC Console Client  ${file_path} | 
| George Keishing | 30c12ff | 2016-09-02 10:25:29 -0500 | [diff] [blame] | 378 |  | 
| Michael Walsh | 01bd368 | 2017-01-10 11:21:05 -0600 | [diff] [blame] | 379 | ${cmd_buf}=  Set Variable  cat ${file_path} | 
|  | 380 |  | 
| George Keishing | 30c12ff | 2016-09-02 10:25:29 -0500 | [diff] [blame] | 381 | ${console}  ${stderr}= | 
|  | 382 | ...  Execute Command | 
| Michael Walsh | 01bd368 | 2017-01-10 11:21:05 -0600 | [diff] [blame] | 383 | ...  if [ -f ${file_path} ] ; then cat ${file_path} ; fi | 
| George Keishing | 30c12ff | 2016-09-02 10:25:29 -0500 | [diff] [blame] | 384 | ...  return_stderr=True | 
| Gunnar Mills | 9c76034 | 2016-12-08 10:12:06 -0600 | [diff] [blame] | 385 | Should Be Empty  ${stderr} | 
| George Keishing | 30c12ff | 2016-09-02 10:25:29 -0500 | [diff] [blame] | 386 |  | 
| Michael Walsh | 01bd368 | 2017-01-10 11:21:05 -0600 | [diff] [blame] | 387 | Run Keyword If  '${targ_file_path}' != '${EMPTY}' | 
|  | 388 | ...  Append To File  ${targ_file_path}  ${console} | 
| George Keishing | 30c12ff | 2016-09-02 10:25:29 -0500 | [diff] [blame] | 389 |  | 
| Michael Walsh | 01bd368 | 2017-01-10 11:21:05 -0600 | [diff] [blame] | 390 | [Return]  ${console} | 
| George Keishing | 30c12ff | 2016-09-02 10:25:29 -0500 | [diff] [blame] | 391 |  | 
|  | 392 | Get Time Stamp | 
|  | 393 | [Documentation]     Get the current time stamp data | 
|  | 394 | ${cur_time}=    Get Current Date   result_format=%Y%m%d%H%M%S%f | 
| Sridevi Ramesh | b96a0c3 | 2016-10-19 05:09:52 -0500 | [diff] [blame] | 395 | [Return]   ${cur_time} | 
| George Keishing | 30c12ff | 2016-09-02 10:25:29 -0500 | [diff] [blame] | 396 |  | 
| George Keishing | 1b15020 | 2016-09-29 08:51:58 -0500 | [diff] [blame] | 397 |  | 
|  | 398 | Verify BMC State | 
|  | 399 | [Documentation]   Get the BMC state and verify if the current | 
|  | 400 | ...               BMC state is as expected. | 
|  | 401 | [Arguments]       ${expected} | 
|  | 402 |  | 
| Rahul Maheshwari | 2c72504 | 2017-01-29 22:55:28 -0600 | [diff] [blame] | 403 | ${current}=  Get BMC State Deprecated | 
| George Keishing | 8db0e1b | 2016-10-20 13:46:54 -0500 | [diff] [blame] | 404 | Should Contain  ${expected}   ${current} | 
| George Keishing | 1b15020 | 2016-09-29 08:51:58 -0500 | [diff] [blame] | 405 |  | 
| Rahul Maheshwari | f684ba7 | 2016-10-25 07:24:41 -0500 | [diff] [blame] | 406 | Start Journal Log | 
|  | 407 | [Documentation]   Start capturing journal log to a file in /tmp using | 
|  | 408 | ...               journalctl command. By default journal log is collected | 
|  | 409 | ...               at /tmp/journal_log else user input location. | 
|  | 410 | ...               The File is appended with datetime. | 
|  | 411 | [Arguments]       ${file_path}=/tmp/journal_log | 
|  | 412 |  | 
|  | 413 | Open Connection And Log In | 
|  | 414 |  | 
|  | 415 | ${cur_time}=    Get Time Stamp | 
|  | 416 | Set Global Variable   ${LOG_TIME}   ${cur_time} | 
|  | 417 | Start Command | 
|  | 418 | ...  journalctl -f > ${file_path}-${LOG_TIME} | 
|  | 419 | Log    Journal Log Started: ${file_path}-${LOG_TIME} | 
|  | 420 |  | 
|  | 421 | Stop Journal Log | 
|  | 422 | [Documentation]   Stop journalctl process if its running. | 
|  | 423 | ...               By default return log from /tmp/journal_log else | 
|  | 424 | ...               user input location. | 
|  | 425 | [Arguments]       ${file_path}=/tmp/journal_log | 
|  | 426 |  | 
|  | 427 | Open Connection And Log In | 
|  | 428 |  | 
|  | 429 | ${rc}= | 
|  | 430 | ...  Execute Command | 
|  | 431 | ...  ps ax | grep journalctl | grep -v grep | 
|  | 432 | ...  return_stdout=False  return_rc=True | 
|  | 433 |  | 
|  | 434 | Return From Keyword If   '${rc}' == '${1}' | 
|  | 435 | ...   No journal log process running | 
|  | 436 |  | 
|  | 437 | ${output}  ${stderr}= | 
|  | 438 | ...  Execute Command   killall journalctl | 
|  | 439 | ...  return_stderr=True | 
|  | 440 | Should Be Empty     ${stderr} | 
|  | 441 |  | 
|  | 442 | ${journal_log}  ${stderr}= | 
|  | 443 | ...  Execute Command | 
|  | 444 | ...  cat ${file_path}-${LOG_TIME} | 
|  | 445 | ...  return_stderr=True | 
|  | 446 | Should Be Empty     ${stderr} | 
|  | 447 |  | 
|  | 448 | Log    ${journal_log} | 
|  | 449 |  | 
|  | 450 | Execute Command    rm ${file_path}-${LOG_TIME} | 
|  | 451 |  | 
|  | 452 | [Return]    ${journal_log} | 
| Rahul Maheshwari | 757d80c | 2016-10-17 01:09:55 -0500 | [diff] [blame] | 453 |  | 
|  | 454 | Mac Address To Hex String | 
|  | 455 | [Documentation]   Converts MAC address into hex format. | 
|  | 456 | ...               Example | 
|  | 457 | ...               Given the following MAC: 00:01:6C:80:02:78 | 
|  | 458 | ...               This keyword will return: 0x00 0x01 0x6C 0x80 0x02 0x78 | 
|  | 459 | ...               Description of arguments: | 
| Michael Walsh | 01bd368 | 2017-01-10 11:21:05 -0600 | [diff] [blame] | 460 | ...               i_macaddress  MAC address in the following format | 
|  | 461 | ...               00:01:6C:80:02:78 | 
| Rahul Maheshwari | 757d80c | 2016-10-17 01:09:55 -0500 | [diff] [blame] | 462 | [Arguments]    ${i_macaddress} | 
|  | 463 |  | 
|  | 464 | ${mac_hex}=  Catenate  0x${i_macaddress.replace(':', ' 0x')} | 
| Gunnar Mills | c9ea936 | 2016-12-13 16:21:13 -0600 | [diff] [blame] | 465 | [Return]    ${mac_hex} | 
| Rahul Maheshwari | 757d80c | 2016-10-17 01:09:55 -0500 | [diff] [blame] | 466 |  | 
|  | 467 | IP Address To Hex String | 
|  | 468 | [Documentation]   Converts IP address into hex format. | 
|  | 469 | ...               Example: | 
|  | 470 | ...               Given the following IP: 10.3.164.100 | 
|  | 471 | ...               This keyword will return: 0xa 0x3 0xa4 0xa0 | 
|  | 472 | ...               Description of arguments: | 
| Michael Walsh | 01bd368 | 2017-01-10 11:21:05 -0600 | [diff] [blame] | 473 | ...               i_ipaddress  IP address in the following format | 
|  | 474 | ...               10.10.10.10 | 
| Rahul Maheshwari | 757d80c | 2016-10-17 01:09:55 -0500 | [diff] [blame] | 475 | [Arguments]    ${i_ipaddress} | 
|  | 476 |  | 
|  | 477 | @{ip}=  Split String  ${i_ipaddress}    . | 
|  | 478 | ${index}=  Set Variable  ${0} | 
|  | 479 |  | 
|  | 480 | :FOR    ${item}     IN      @{ip} | 
|  | 481 | \   ${hex}=  Convert To Hex    ${item}    prefix=0x    lowercase=yes | 
|  | 482 | \   Set List Value    ${ip}    ${index}    ${hex} | 
|  | 483 | \   ${index}=  Set Variable    ${index + 1} | 
|  | 484 | ${ip_hex}=  Catenate    @{ip} | 
| Gunnar Mills | c9ea936 | 2016-12-13 16:21:13 -0600 | [diff] [blame] | 485 | [Return]    ${ip_hex} | 
| Sivas SRR | ea85d1f | 2016-11-13 22:44:28 -0600 | [diff] [blame] | 486 |  | 
|  | 487 | BMC CPU Performance Check | 
|  | 488 | [Documentation]   Minimal 10% of proc should be free in this instance | 
|  | 489 |  | 
|  | 490 | ${bmc_cpu_usage_output}  ${stderr}=  Execute Command  ${bmc_cpu_usage_cmd} | 
|  | 491 | ...                   return_stderr=True | 
|  | 492 | Should be empty  ${stderr} | 
|  | 493 | ${bmc_cpu_percentage}=  Fetch From Left  ${bmc_cpu_usage_output}  % | 
|  | 494 | Should be true  ${bmc_cpu_percentage} < 90 | 
|  | 495 |  | 
|  | 496 | BMC Mem Performance Check | 
|  | 497 | [Documentation]   Minimal 10% of memory should be free in this instance | 
|  | 498 |  | 
|  | 499 | ${bmc_mem_free_output}  ${stderr}=   Execute Command  ${bmc_mem_free_cmd} | 
|  | 500 | ...                   return_stderr=True | 
|  | 501 | Should be empty  ${stderr} | 
|  | 502 |  | 
|  | 503 | ${bmc_mem_total_output}  ${stderr}=   Execute Command  ${bmc_mem_total_cmd} | 
|  | 504 | ...                   return_stderr=True | 
|  | 505 | Should be empty  ${stderr} | 
|  | 506 |  | 
|  | 507 | ${bmc_mem_percentage}=   Evaluate  ${bmc_mem_free_output}*100 | 
|  | 508 | ${bmc_mem_percentage}=  Evaluate | 
|  | 509 | ...   ${bmc_mem_percentage}/${bmc_mem_total_output} | 
|  | 510 | Should be true  ${bmc_mem_percentage} > 10 | 
|  | 511 |  | 
| Sivas SRR | aca5571 | 2016-12-21 04:32:35 -0600 | [diff] [blame] | 512 | BMC File System Usage Check | 
|  | 513 | [Documentation]   Check the file system space. None should be 100% full | 
|  | 514 | ...   except /dev/mtdblock5 | 
|  | 515 | ${bmc_fs_usage_output}  ${stderr}=   Execute Command | 
|  | 516 | ...   ${bmc_file_system_usage_cmd}  return_stderr=True | 
|  | 517 | Should Be Empty  ${stderr} | 
|  | 518 | Should Be True  ${bmc_fs_usage_output}==0 | 
|  | 519 |  | 
| Sivas SRR | ea85d1f | 2016-11-13 22:44:28 -0600 | [diff] [blame] | 520 | Check BMC CPU Performance | 
|  | 521 | [Documentation]   Minimal 10% of proc should be free in 3 sample | 
|  | 522 | :FOR  ${var}  IN Range  1  4 | 
|  | 523 | \     BMC CPU Performance check | 
|  | 524 |  | 
|  | 525 | Check BMC Mem Performance | 
|  | 526 | [Documentation]   Minimal 10% of memory should be free | 
|  | 527 |  | 
|  | 528 | :FOR  ${var}  IN Range  1  4 | 
|  | 529 | \     BMC Mem Performance check | 
|  | 530 |  | 
| Sivas SRR | aca5571 | 2016-12-21 04:32:35 -0600 | [diff] [blame] | 531 | Check BMC File System Performance | 
|  | 532 | [Documentation]  Check for file system usage for 4 times | 
|  | 533 |  | 
|  | 534 | :FOR  ${var}  IN Range  1  4 | 
|  | 535 | \     BMC File System Usage check | 
|  | 536 |  | 
| Rahul Maheshwari | 9a8d3b1 | 2016-12-05 04:06:16 -0600 | [diff] [blame] | 537 | Get Endpoint Paths | 
|  | 538 | [Documentation]   Returns all url paths ending with given endpoint | 
|  | 539 | ...               Example: | 
|  | 540 | ...               Given the following endpoint: cpu | 
| Michael Walsh | 01bd368 | 2017-01-10 11:21:05 -0600 | [diff] [blame] | 541 | ...               This keyword will return: list of all urls ending with | 
|  | 542 | ...               cpu - | 
| Rahul Maheshwari | 9a8d3b1 | 2016-12-05 04:06:16 -0600 | [diff] [blame] | 543 | ...               /org/openbmc/inventory/system/chassis/motherboard/cpu0, | 
|  | 544 | ...               /org/openbmc/inventory/system/chassis/motherboard/cpu1 | 
|  | 545 | ...               Description of arguments: | 
|  | 546 | ...               path       URL path for enumeration | 
|  | 547 | ...               endpoint   string for which url path ending | 
|  | 548 | [Arguments]   ${path}   ${endpoint} | 
|  | 549 |  | 
|  | 550 | ${resp}=   Read Properties   ${path}/enumerate   timeout=30 | 
|  | 551 | log Dictionary   ${resp} | 
|  | 552 |  | 
|  | 553 | ${list}=   Get Dictionary Keys   ${resp} | 
|  | 554 | ${resp}=   Get Matches   ${list}   regexp=^.*[0-9a-z_].${endpoint}[0-9]*$ | 
| Gunnar Mills | c9ea936 | 2016-12-13 16:21:13 -0600 | [diff] [blame] | 555 | [Return]   ${resp} | 
| Sridevi Ramesh | b96a0c3 | 2016-10-19 05:09:52 -0500 | [diff] [blame] | 556 |  | 
| Sridevi Ramesh | 1699d37 | 2016-12-06 00:20:22 -0600 | [diff] [blame] | 557 |  | 
| Sridevi Ramesh | b96a0c3 | 2016-10-19 05:09:52 -0500 | [diff] [blame] | 558 | Check Zombie Process | 
|  | 559 | [Documentation]    Check if any defunct process exist or not on BMC | 
| Michael Walsh | 01bd368 | 2017-01-10 11:21:05 -0600 | [diff] [blame] | 560 | ${count}  ${stderr}  ${rc}=  Execute Command  ps -o stat | grep Z | wc -l | 
| Sridevi Ramesh | b96a0c3 | 2016-10-19 05:09:52 -0500 | [diff] [blame] | 561 | ...    return_stderr=True  return_rc=True | 
|  | 562 | Should Be True    ${count}==0 | 
|  | 563 | Should Be Empty    ${stderr} | 
| George Keishing | 5327d01 | 2016-12-08 08:43:29 -0600 | [diff] [blame] | 564 |  | 
|  | 565 | Prune Journal Log | 
|  | 566 | [Documentation]   Prune archived journal logs. | 
|  | 567 | [Arguments]   ${vacuum_size}=1M | 
|  | 568 |  | 
|  | 569 | # This keyword can be used to prevent the journal | 
|  | 570 | # log from filling up the /run filesystem. | 
|  | 571 | # This command will retain only the latest logs | 
|  | 572 | # of the user specified size. | 
|  | 573 |  | 
|  | 574 | Open Connection And Log In | 
|  | 575 | ${output}  ${stderr}  ${rc}= | 
|  | 576 | ...  Execute Command | 
|  | 577 | ...  journalctl --vacuum-size=${vacuum_size} | 
|  | 578 | ...  return_stderr=True  return_rc=True | 
|  | 579 |  | 
|  | 580 | Should Be Equal  ${rc}  ${0}  msg=${stderr} | 
|  | 581 | Should Contain   ${stderr}  Vacuuming done | 
| Sridevi Ramesh | 1699d37 | 2016-12-06 00:20:22 -0600 | [diff] [blame] | 582 |  | 
|  | 583 | Set BMC Power Policy | 
|  | 584 | [Documentation]   Set the given BMC power policy. | 
|  | 585 | [arguments]   ${policy} | 
|  | 586 |  | 
|  | 587 | ${valueDict}=     create dictionary  data=${policy} | 
|  | 588 | Write Attribute    ${HOST_SETTING}    power_policy   data=${valueDict} | 
|  | 589 | ${currentPolicy}=  Read Attribute     ${HOST_SETTING}   power_policy | 
|  | 590 | Should Be Equal    ${currentPolicy}   ${policy} | 
| George Keishing | cce9df2 | 2017-01-24 06:19:33 -0600 | [diff] [blame] | 591 |  | 
| George Keishing | 4d6f3d6 | 2017-02-06 09:50:41 -0600 | [diff] [blame] | 592 | Get System Power Policy | 
|  | 593 | [Documentation]  Get the BMC power policy. | 
|  | 594 | ${currentPolicy}=  Read Attribute  ${HOST_SETTING}  power_policy | 
|  | 595 | [Return]  ${currentPolicy} | 
| George Keishing | cce9df2 | 2017-01-24 06:19:33 -0600 | [diff] [blame] | 596 |  | 
|  | 597 | Set BMC Reset Reference Time | 
|  | 598 | [Documentation]  Set current boot time as a reference and increment | 
|  | 599 | ...               boot count. | 
|  | 600 |  | 
|  | 601 | ${cur_btime}=  Get BMC Boot Time | 
|  | 602 | Run Keyword If  ${cur_btime} > ${BOOT_TIME} | 
|  | 603 | ...  Run Keywords | 
|  | 604 | ...  Set Global Variable  ${BOOT_TIME}  ${cur_btime} | 
|  | 605 | ...  AND | 
|  | 606 | ...  Set Global Variable  ${BOOT_COUNT}  ${BOOT_COUNT + 1} | 
|  | 607 |  | 
|  | 608 |  | 
|  | 609 | Get BMC Boot Time | 
|  | 610 | [Documentation]  Get boot time from /proc/stat. | 
|  | 611 |  | 
|  | 612 | Open Connection And Log In | 
|  | 613 | ${output}  ${stderr}= | 
|  | 614 | ...  Execute Command  egrep '^btime ' /proc/stat | cut -f 2 -d ' ' | 
|  | 615 | ...  return_stderr=True | 
|  | 616 | Should Be Empty  ${stderr} | 
|  | 617 | ${btime}=  Convert To Integer  ${output} | 
|  | 618 | [Return]  ${btime} |