[HTX] hardbootme timer countdown in the console
Add estimated time remaining to systest/htx_hardbootme_test.
Resolves openbmc/openbmc-test-automation#581
Change-Id: Ib7894bd21593dd432c4eaa5ebb42bfaa0a16e5c3
Signed-off-by: Steven Sombar <ssombar@us.ibm.com>
diff --git a/syslib/utils_os.robot b/syslib/utils_os.robot
index e358e9f..b7258a8 100755
--- a/syslib/utils_os.robot
+++ b/syslib/utils_os.robot
@@ -228,6 +228,7 @@
Boot To OS
Tool Exist htxcmdline
+ Tool Exist lshw
# Shutdown if HTX is running.
${status}= Run Keyword And Return Status Is HTX Running
diff --git a/systest/htx_hardbootme_test.robot b/systest/htx_hardbootme_test.robot
index 343ffef..8dd89a1 100755
--- a/systest/htx_hardbootme_test.robot
+++ b/systest/htx_hardbootme_test.robot
@@ -7,23 +7,23 @@
# OS_HOST The OS host name or IP Address.
# OS_USERNAME The OS login userid (usually root).
# OS_PASSWORD The password for the OS login.
-# HTX_DURATION Duration of HTX run, for example, 8 hours, or
-# 30 minutes.
+# HTX_DURATION Duration of HTX run, for example, 2h, or 30m.
# HTX_LOOP The number of times to loop HTX.
# HTX_INTERVAL The time delay between consecutive checks of HTX
-# status, for example, 30s.
+# status, for example, 15m.
# In summary: Run HTX for $HTX_DURATION, looping
-# $HTX_LOOP times checking every $HTX_INTERVAL.
+# $HTX_LOOP times checking for errors every $HTX_INTERVAL.
+# Then allow extra time for OS Boot, HTX startup, shutdown.
# HTX_KEEP_RUNNING If set to 1, this indicates that the HTX is to
-# continue running after an error.
+# continue running after an error was found.
# CHECK_INVENTORY If set to 0 or False, OS inventory checking before
# and after each HTX run will be disabled. This
-# parameter is optional.
+# parameter is optional. The default value is True.
# PREV_INV_FILE_PATH The file path and name of an initial previous
# inventory snapshot file in JSON format. Inventory
# snapshots taken before and after each HTX run will
# be compared to this file.
-# This parameter is optional. If not specified, an
+# This parameter is optional. If not specified an
# initial inventory snapshot will be taken before
# HTX startup.
# INV_IGNORE_LIST A comma-delimited list of strings that
@@ -50,10 +50,9 @@
${json_initial_file_path} ${EXECDIR}/os_inventory_initial.json
${json_final_file_path} ${EXECDIR}/os_inventory_final.json
${json_diff_file_path} ${EXECDIR}/os_inventory_diff.json
-${last_inventory_file_path} ${EMPTY}
${CHECK_INVENTORY} True
${INV_IGNORE_LIST} size
-${PREV_INV_FILE_PATH} ${EMPTY}
+${PREV_INV_FILE_PATH} NONE
*** Test Cases ***
@@ -62,22 +61,32 @@
[Documentation] Stress the system using HTX exerciser.
[Tags] Hard_Bootme_Test
- # Set last inventory file to PREV_INV_FILE_PATH otherwise set it
- # to ${EMPTY}.
- ${last_inventory_file_path}= Get Variable Value ${PREV_INV_FILE_PATH}
- ... ${EMPTY}
-
Rprintn
- Rpvars HTX_DURATION HTX_INTERVAL CHECK_INVENTORY INV_IGNORE_LIST
- ... PREV_INV_FILE_PATH
+ Rpvars HTX_DURATION HTX_LOOP HTX_INTERVAL CHECK_INVENTORY
+ ... INV_IGNORE_LIST PREV_INV_FILE_PATH
- Run Keyword If '${last_inventory_file_path}' != '${EMPTY}'
- ... OperatingSystem.File Should Exist ${last_inventory_file_path}
+ Run Keyword If '${PREV_INV_FILE_PATH}' != 'NONE'
+ ... OperatingSystem.File Should Exist ${PREV_INV_FILE_PATH}
- Set Suite Variable ${last_inventory_file_path} children=true
+ Set Suite Variable ${PREV_INV_FILE_PATH} children=true
Set Suite Variable ${INV_IGNORE_LIST} children=true
+
+ # Set up the iteration (loop) counter.
Set Suite Variable ${iteration} ${0} children=true
+ # Estimate the time required for a single iteration loop.
+ # HTX_DURATION + 10 minutes for OS boot, HTX startup, shutdown.
+ ${loop_body_seconds}= Add Time To Time ${HTX_DURATION} 10m
+ Set Suite Variable ${loop_body_seconds} children=true
+ # And save it in printable (compact) format.
+ ${estimated_loop_time}= Convert Time
+ ... ${loop_body_seconds} result_format=compact
+ Set Suite Variable ${estimated_loop_time} children=true
+
+ # Estimated time remaining = loop_body_seconds * HTX_LOOP + 5m
+ ${est_seconds_left}= Evaluate ${loop_body_seconds}*${HTX_LOOP}+(5*60)
+ Set Suite Variable ${est_seconds_left} children=true
+
Repeat Keyword ${HTX_LOOP} times Run HTX Exerciser
@@ -100,7 +109,10 @@
Set Suite Variable ${iteration} ${iteration + 1}
${loop_count}= Catenate Starting iteration: ${iteration}
- Rpvars loop_count
+ ${estimated_time_remaining}= Convert Time
+ ... ${est_seconds_left} result_format=compact
+ Rprintn
+ Rpvars loop_count estimated_loop_time estimated_time_remaining
Boot To OS
@@ -109,7 +121,7 @@
Run Keyword If '${CHECK_INVENTORY}' == 'True'
... Do Inventory And Compare ${json_initial_file_path}
- ... ${last_inventory_file_path}
+ ... ${PREV_INV_FILE_PATH}
Run Keyword If '${HTX_MDT_PROFILE}' == 'mdt.bu'
... Create Default MDT Profile
@@ -122,7 +134,7 @@
Run Keyword If '${CHECK_INVENTORY}' == 'True'
... Do Inventory And Compare ${json_final_file_path}
- ... ${last_inventory_file_path}
+ ... ${PREV_INV_FILE_PATH}
Power Off Host
@@ -133,22 +145,28 @@
Rprint Timen HTX Test ran for: ${HTX_DURATION}
${loop_count}= Catenate Ending iteration: ${iteration}
- Rpvars loop_count
+
+ ${est_seconds_left}= Evaluate ${est_seconds_left}-${loop_body_seconds}
+ Set Suite Variable ${est_seconds_left} children=true
+ ${estimated_time_remaining}= Convert Time
+ ... ${est_seconds_left} result_format=compact
+
+ Rpvars loop_count estimated_time_remaining
Do Inventory And Compare
[Documentation] Do inventory and compare.
- [Arguments] ${inventory_file_path} ${last_inventory_file_path}
+ [Arguments] ${inventory_file_path} ${PREV_INV_FILE_PATH}
# Description of argument(s):
- # inventory_file_path The file to receive the inventory snapshot.
- # last_inventory_file_path The previous inventory to compare with.
+ # inventory_file_path The file to receive the inventory snapshot.
+ # PREV_INV_FILE_PATH The previous inventory to compare with.
Create JSON Inventory File ${inventory_file_path}
- Run Keyword If '${last_inventory_file_path}' != '${EMPTY}'
+ Run Keyword If '${PREV_INV_FILE_PATH}' != 'NONE'
... Compare Json Inventory Files ${inventory_file_path}
- ... ${last_inventory_file_path}
- ${last_inventory_file_path}= Set Variable ${inventory_file_path}
- Set Suite Variable ${last_inventory_file_path} children=true
+ ... ${PREV_INV_FILE_PATH}
+ ${PREV_INV_FILE_PATH}= Set Variable ${inventory_file_path}
+ Set Suite Variable ${PREV_INV_FILE_PATH} children=true
Compare Json Inventory Files