diff --git a/tests_openbmctool/test_openbmctool.robot b/tests_openbmctool/test_openbmctool.robot
old mode 100644
new mode 100755
index 6d88499..da8ad89
--- a/tests_openbmctool/test_openbmctool.robot
+++ b/tests_openbmctool/test_openbmctool.robot
@@ -1,24 +1,249 @@
 *** Settings ***
-Documentation     Verify openbmctool.py functionality.
+Documentation    Verify openbmctool.py functionality.
 
-Library           ../lib/gen_print.py
-Library           ../lib/gen_robot_print.py
-Library           ../lib/openbmctool_utils.py
-Resource          ../lib/resource.txt
+# 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_num_sensors}  ${30}
+${min_number_items}     ${30}
+${min_number_sensors}   ${15}
+
 
 *** Test Cases ***
 
-Verify FRU Status
-    [Documentation]  Verify that the fru status command works.
-    [Tags]  Verify_FRU_Status
+Verify Openbmctool FRU Commands
+    [Documentation]  Verify FRU commands work.
+    [Tags]  Verify_Openbmctool_FRU_Commands
 
-    Rprintn
-    ${rc}  ${output}=  Openbmctool Execute Command  fru status | egrep -v '^$|^Component' | wc -l
-    ${num_sensors}=  Convert to Integer  ${output}
+    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
-    Should Be True  ${num_sensors} >= ${min_num_sensors}
-    ...  msg=There should be at least ${min_num_sensors} 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]
