blob: da8ad89eecc6bd5c4114a06ab497a66bf2eef1f1 [file] [log] [blame]
*** Settings ***
Documentation Verify openbmctool.py functionality.
# This module tests the functionality of openbmctool.py.
# The following tests are perfomed:
#
# FRU status
# FRU print
# FRU list
# FRU list of a single FRU
# sensors print
# sensors list
# sensors list of a single sensor
# health check
# service data
#
# It is the responsibility of the user to include openbmctool.py's
# directory PATH in $PATH.
#
# Test Parameters:
# OPENBMC_HOST The BMC host name or IP address.
# OPENBMC_USERNAME The username to login to the BMC.
# OPENBMC_PASSWORD Password for OPENBMC_USERNAME.
# TODO:
# chassis tests
# sel tests
# dump
# bmc (same as mc)
# gardclear
# firmware commands
Library String
Library OperatingSystem
Library ../lib/gen_print.py
Library ../lib/gen_robot_print.py
Library ../lib/openbmctool_utils.py
Library ../lib/gen_misc.py
Resource ../syslib/utils_os.robot
Resource ../lib/resource.txt
Suite Setup Suite Setup Execution
*** Variables ***
${min_number_items} ${30}
${min_number_sensors} ${15}
*** Test Cases ***
Verify Openbmctool FRU Commands
[Documentation] Verify FRU commands work.
[Tags] Verify_Openbmctool_FRU_Commands
Verify FRU Status
Verify FRU Print
Verify FRU List
# Verify FRU List With Single FRU
# Known issue - openbmctool.py FRU list with single FRU is not working yet.
# See https://github.com/openbmc/openbmc-tools/issues/32.
Verify Openbmctool Sensors Commands
[Documentation] Verify sensors commands work.
[Tags] Verify_Openbmctool_Sensors_Commands
Verify Sensors Print
Verify Sensors List
# Verify Sensors List With Single Sensor
# Known issue - openbmctool.py sensors list with single sensor is
# not working yet. See https://github.com/openbmc/openbmc-tools/issues/33.
Verify Openbmctool Health Check Commands
[Documentation] Verify health check command works.
[Tags] Verify_Openbmctool_Health_Check_Commands
Verify Health Check
Verify Openbmctool Service Data Commands
[Documentation] Verify collect service data command works.
[Tags] Verify_Openbmctool_Service Data Commands
Verify Collect Service Data
*** Keywords ***
Verify FRU Status
[Documentation] Verify that the 'fru status' command works.
${fru_status}= Get Fru Status
${num_frus}= Get Length ${fru_status}
Rprint Vars num_frus
Check Greater Than Minimum ${num_frus} ${min_number_items} frus
Verify FRU Print
[Documentation] Verify that the 'fru print' command works.
${rc} ${num_frus}= Openbmctool Execute Command
... fru print | wc -l
Rprint Vars num_frus
Check Greater Than Minimum ${num_frus} ${min_number_items} frus
Verify FRU List
[Documentation] Verify that the 'fru list' command works.
# Note: The output from 'fru list' is the same as 'fru print'.
${rc} ${num_frus}= Openbmctool Execute Command
... fru list | wc -l
Rprint Vars num_frus
Check Greater Than Minimum ${num_frus} ${min_number_items} frus
Verify FRU List With Single FRU
[Documentation] Verify that 'fru list' with parameter works.
# Get the name of one FRU, in this case the first one listed.
${fru_status}= Get Fru Status
${fruname}= Set Variable ${fru_status[0]['component']}
Rprint Vars fruname
Should Not Be Empty ${fruname} msg=Could not find a FRU.
# Get a fru list specifiying just the FRU.
${rc} ${output}= Openbmctool Execute Command
... fru list ${fruname} | wc -l
${fru_detail}= Convert to Integer ${output}
Rprint Vars fru_detail
Should Be True ${fru_detail} <= ${min_number_items}
... msg=Too many lines reported for fru status ${fruname}
Should Be True ${fru_detail} > ${4}
... msg=Too few lines reported for fru status ${fruname}
Verify Sensors Print
[Documentation] Verify that sensors print works.
${sensor_status}= Get Sensors Print
${num_sensors}= Get Length ${sensor_status}
Rprint Vars num_sensors
Check Greater Than Minimum ${num_sensors} ${min_number_sensors} sensors
Verify Sensors List
[Documentation] Verify that sensors list works.
# Note: The output from 'sensors list' is the same as 'sensors print'.
${sensor_status}= Get Sensors List
${num_sensors}= Get Length ${sensor_status}
Rprint Vars num_sensors
Check Greater Than Minimum ${num_sensors} ${min_number_sensors} sensors
Verify Sensors List With Single Sensor
[Documentation] Verify that sensors list with parameter works.
${sensor}= Set Variable ambient
${rc} ${num_sensors}= Openbmctool Execute Command
... sensors list ${sensor} | wc -l
Rprint Vars sensor num_sensors
${num_sensors}= Convert to Integer ${num_sensors}
Should Be True ${num_sensors} < ${10}
... msg=Too many lines reported for list sensor ${sensor}
Verify Health Check
[Documentation] Verify health_check operation.
${rc} ${health}= Openbmctool Execute Command health_check
Rprint Vars health
# Sample output:
# Hardware Status: OK
# Performance: OK
# Instead of OK could also say Degraded or Critical.
Should Contain ${health} Hardware Status:
... msg=No hardware status reported by health_check.
Should Contain ${health} Performance:
... msg=No performance reported by health_check.
Verify Collect Service Data
[Documentation] Verify collect_service_data operation.
${rc} ${service_data}= Openbmctool Execute Command collect_service_data
Rprint Vars service_data
# Sample output:
# Inventory collected and stored in /tmp/127.0.0.1/inventory.txt
# Sensor readings collected and stored in /tmp/127.0.0.1/sensorReadings.txt
# System LED status collected and stored in /tmp/127.0.0.1/ledStatus.txt
# sel short list collected and stored in /tmp/127.0.0.1/SELshortlist.txt
# fully parsed sels collected and stored in /tmp/127.0.0.1/parsedSELs.txt
# Attempting to get a full BMC enumeration
# RAW BMC data collected and saved into /tmp/127.0.0.1/bmcFullRaw.txt
# Collecting bmc dump files
# data collection complete
Should Contain ${service_data} inventory.txt
... msg=No inventory.txt collected by collect_service_data.
Should Contain ${service_data} sensorReadings.txt
... msg=No sensorReadings.txt reported by health_check.
Should Contain ${service_data} ledStatus.txt
... msg=No ledStatus.txt reported by health_check.
Should Contain ${service_data} SELshortlist.txt
... msg=No SELshortlist.txt reported by health_check.
Should Contain ${service_data} parsedSELs.txt
... msg=No parsedSELs.txt reported by health_check.
Should Contain ${service_data} bmcFullRaw.txt
... msg=No bmcFullRaw.txt reported by health_check.
Should Contain ${service_data} data collection complete
... msg='data collection complete' not reported by health_check.
Check Greater Than Minimum
[Documentation] Value should be greater than minimum, otherwise fail.
[Arguments] ${value_to_test} ${minimum_value} ${label}
# Description of argument(s):
# value_to_test Value to compare to the minimum.
# minimum_value The minimum acceptable value.
# label Name to print if failure.
${value_to_test}= Convert to Integer ${value_to_test}
Should Be True ${value_to_test} > ${minimum_value}
... msg=There should be at least ${minimum_value} ${label}.
Suite Setup Execution
[Documentation] Verify connectivity to run openbmctool commands.
# Verify connectivity to the BMC host.
${bmc_version}= Run Keyword And Ignore Error Get BMC Version
Run Keyword If '${bmc_version[0]}' == 'FAIL' Fail
... msg=Could not connect to BMC ${OPENBMC_HOST} to get firmware version.
# Verify can find the openbmctool.
${openbmctool_file_path}= which openbmctool.py
Rprintn
Rprint Vars openbmctool_file_path
# Get the version number from openbmctool.
${openbmctool_version}= Get Openbmctool Version
Rprint Vars openbmctool_version OPENBMC_HOST bmc_version[1]