blob: ae9582b889931e51aa29ed6b90ba1c6aa75904b6 [file] [log] [blame]
*** Settings ***
Documentation Verify openbmctool.py functionality.
# This module tests the functionality of openbmctool.py.
# The following tests are performed:
#
# 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
# remote logging
# local_users queryenabled
#
# 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.
# LOGGING_HOST The hostname or IP address of the remote
# logging server. The default value is
# '10.10.10.10'.
# LOGGING_PORT The port number for remote logging on the
# LOGGING_HOST. The default value is '514'.
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
Library ../../lib/gen_robot_valid.py
Resource ../../syslib/utils_os.robot
Resource ../../lib/resource.robot
Suite Setup Suite Setup Execution
Test Setup Printn
*** Variables ***
${min_number_items} ${30}
${min_number_sensors} ${15}
${LOGGING_HOST} 10.10.10.10
${LOGGING_PORT} 514
*** 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
${health_results}= Get Health Check verify=${1}
Rprint Vars health_results
Verify Openbmctool Service Data Commands
[Documentation] Verify collect service data command works.
[Tags] Verify_Openbmctool_Service_Data_Commands
${service_paths}= Collect Service Data verify=${1}
Rprint Vars service_paths
Verify Openbmctool Remote Logging Operations
[Documentation] Verify logging commands work.
[Tags] Verify_Openbmctool_Remote_Logging_Operations
# Verify Logging View
${remote_logging_view}= Get Remote Logging View verify=${True}
# Save previous remote logging settings, if any.
${remote_config}= Get Remote Logging Settings
# Enable remote logging and verify.
Verify Logging Parameters ${LOGGING_HOST} ${LOGGING_PORT}
# Disable remote logging and verify. Disable will clear any
# previous settings.
Verify Logging Disable ${LOGGING_HOST}
# Set original parameters back, if any.
Run Keyword If ${remote_config}
... Verify Logging Parameters
... ${remote_config['Address']} ${remote_config['Port']}
Verify Openbmctool Local Users Queryenabled
[Documentation] Verify "local_users queryenabled" function.
[Tags] Verify_Openbmctool_Local_Users_Queryenabled
# Example output from "queryenabled":
# User: root Enabled: 1
# User: freddy Enabled: 1
# User: ldap4 Enabled: {'description': "The ..."
${rc} ${num_users}= Openbmctool Execute Command
... local_users queryenabled | grep -c 'User.*Enabled'
Rprint Vars num_users
Check Greater Than Minimum ${num_users} ${0} local users
*** 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 specifying 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 Logging Parameters
[Documentation] Verify remote_logging_config.
[Arguments] ${log_host} ${log_port}
# Description of argument(s):
# log_host The host name or IP address of remote logging server.
# log_port The port number for remote logging on log_host.
${rc} ${result}= Openbmctool Execute Command JSON
... logging remote_logging_config -a ${log_host} -p ${log_port}
... print_output=${False} ignore_err=${False}
${remote_logging_view}= Get Remote Logging View verify=${True}
Valid Value remote_logging_view['Address'] valid_values=['${log_host}']
Valid Value remote_logging_view['Port'] valid_values=[int(${log_port})]
Verify Logging Disable
[Documentation] Verify remote_logging disable
[Arguments] ${log_host}
# Description of argument(s):
# log_host The host name or IP address of remote logging server.
${rc} ${result}= Openbmctool Execute Command JSON
... logging remote_logging disable
${remote_logging_view}= Get Remote Logging View verify=${True}
Valid Value remote_logging_view['Address'] valid_values=['']
Get Remote Logging Settings
[Documentation] Return the remote config settings as a dictionary
... if active. Otherwise, return ${False}.
${remote_config}= Read Properties ${BMC_LOGGING_URI}config/remote
Return From Keyword If
... '${remote_config["Address"]}' == '' or '${remote_config["Port"]}' == '0'
... ${False}
[Return] ${remote_config}
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
Printn
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]