Resource variables and common HTX keywords

Resolves  openbmc/openbmc-test-automation#633

Change-Id: I1d79c74d34f4ac3ee9c81d4e270486df1cfa34f0
Signed-off-by: George Keishing <gkeishin@in.ibm.com>
diff --git a/syslib/resource.txt b/syslib/resource.txt
new file mode 100755
index 0000000..10b1ba3
--- /dev/null
+++ b/syslib/resource.txt
@@ -0,0 +1,16 @@
+
+*** Variables ***
+
+# Default duration and interval of HTX exerciser to run.
+${HTX_DURATION}      2 hours
+${HTX_INTERVAL}      15 min
+
+# Default hardbootme loop times HTX exerciser to run.
+${HTX_LOOP}          4
+
+# User-defined halt on error.
+${HTX_KEEP_RUNNING}  ${0}
+
+# Default MDT profile.
+${HTX_MDT_PROFILE}   mdt.bu
+
diff --git a/syslib/utils_os.robot b/syslib/utils_os.robot
index 206164c..ae27a3a 100755
--- a/syslib/utils_os.robot
+++ b/syslib/utils_os.robot
@@ -9,7 +9,7 @@
 Resource           ../lib/utils.robot
 Resource           ../lib/state_manager.robot
 Resource           ../lib/rest_client.robot
-
+Resource           resource.txt
 Library            OperatingSystem
 Library            DateTime
 
@@ -207,3 +207,62 @@
     ${nvidia_out}=  Execute Command On BMC  nvidia-smi
     Write Log Data To File
     ...  ${nvidia_out}  ${htx_log_dir_path}/${OS_HOST}_${cur_datetime}.nvidia
+
+
+Pre Test Case Execution
+    [Documentation]  Do the initial test setup.
+    # 1. Check if HTX tool exist.
+    # 2. Power on
+
+    Boot To OS
+    HTX Tool Exist
+
+    # Shutdown if HTX is running.
+    ${status}=  Run Keyword And Return Status  Is HTX Running
+    Run Keyword If  '${status}' == 'True'
+    ...  Shutdown HTX Exerciser
+
+
+Create Default MDT Profile
+    [Documentation]  Create default mdt.bu profile and run.
+
+    Rprint Timen  Create HTX mdt profile.
+
+    ${profile}=  Execute Command On OS  htxcmdline -createmdt
+    Rprintn  ${profile}
+    Should Contain  ${profile}  mdts are created successfully
+
+
+Run MDT Profile
+    [Documentation]  Load user pre-defined MDT profile.
+
+    Rprint Timen  Start HTX mdt profile execution.
+    ${htx_run}=  Execute Command On OS
+    ...  htxcmdline -run -mdt ${HTX_MDT_PROFILE}
+    Rprintn  ${htx_run}
+    Should Contain  ${htx_run}  Activated
+
+
+Check HTX Run Status
+    [Documentation]  Get HTX exerciser status and check for error.
+
+    Rprint Timen  Check HTX mdt Status and error.
+    ${status}=  Execute Command On OS
+    ...  htxcmdline -status -mdt ${HTX_MDT_PROFILE}
+    Rprintn  ${status}
+
+    ${errlog}=  Execute Command On OS  htxcmdline -geterrlog
+    Rprintn  ${errlog}
+
+    Should Contain  ${errlog}  file </tmp/htxerr> is empty
+
+
+Shutdown HTX Exerciser
+    [Documentation]  Shut down HTX exerciser run.
+
+    Rprint Timen  Shutdown HTX Run
+    ${shutdown}=  Execute Command On OS
+    ...  htxcmdline -shutdown -mdt ${HTX_MDT_PROFILE}
+    Rprintn  ${shutdown}
+    Should Contain  ${shutdown}  shutdown successfully
+
diff --git a/systest/htx_hardbootme_test.robot b/systest/htx_hardbootme_test.robot
index 38c60a1..db9d25c 100644
--- a/systest/htx_hardbootme_test.robot
+++ b/systest/htx_hardbootme_test.robot
@@ -2,7 +2,6 @@
 Documentation    Stress the system using HTX exerciser.
 
 Resource         ../syslib/utils_os.robot
-Library          ../lib/gen_robot_print.py
 
 Test Setup      Pre Test Case Execution
 Test Teardown   Post Test Case Execution
@@ -11,21 +10,6 @@
 
 ${stack_mode}        skip
 
-# Default duration and interval of HTX exerciser to run.
-${HTX_DURATION}      2 hours
-${HTX_INTERVAL}      15 min
-
-# Default hardbootme loop times HTX exerciser to run.
-${HTX_LOOP}          4
-
-# User-defined halt on error.
-${HTX_KEEP_RUNNING}  ${0}
-
-# User-defined MDT profile.
-# There are a few stanzas in the HTX test exerciser that need to be removed
-# temporarily and manually built and executed.
-${HTX_MDT_PROFILE}  mdt.bu
-
 *** Test Cases ***
 
 Hard Bootme Test
@@ -77,69 +61,6 @@
     ...  AND  Sleep  ${HTX_INTERVAL}
 
 
-Check HTX Run Status
-    [Documentation]  Get HTX exerciser status and check for error.
-
-    Rprint Timen  Collect HTX status and error log files.
-    Run Key U  Collect HTX Log Files
-
-    Rprint Timen  Check HTX mdt Status and error.
-    ${status}=  Execute Command On OS
-    ...  htxcmdline -status -mdt ${HTX_MDT_PROFILE}
-    Log  ${status}
-    Rprint Timen  ${status}
-
-    ${errlog}=  Execute Command On OS  htxcmdline -geterrlog
-    Log  ${errlog}
-    Rprint Timen  ${errlog}
-
-    Should Contain  ${errlog}  file </tmp/htxerr> is empty
-
-
-Create Default MDT Profile
-    [Documentation]  Create default mdt.bu profile and run.
-
-    Rprint Timen  Create HTX mdt profile.
-
-    ${profile}=  Execute Command On OS  htxcmdline -createmdt
-    Rprint Timen  ${profile}
-    Should Contain  ${profile}  mdts are created successfully
-
-
-Run MDT Profile
-    [Documentation]  Load user pre-defined MDT profile.
-
-    Rprint Timen  Start HTX mdt profile execution.
-    ${htx_run}=  Execute Command On OS
-    ...  htxcmdline -run -mdt ${HTX_MDT_PROFILE}
-    Rprint Timen  ${htx_run}
-    Should Contain  ${htx_run}  Activated
-
-
-Shutdown HTX Exerciser
-    [Documentation]  Shut down HTX exerciser run.
-
-    Rprint Timen  Shutdown HTX Run
-    ${shutdown}=  Execute Command On OS
-    ...  htxcmdline -shutdown -mdt ${HTX_MDT_PROFILE}
-    Rprint Timen  ${shutdown}
-    Should Contain  ${shutdown}  shutdown successfully
-
-
-Pre Test Case Execution
-    [Documentation]  Do the initial test setup.
-    # 1. Check if HTX tool exist.
-    # 2. Power on
-
-    Boot To OS
-    Tool Exist  htxcmdline
-
-    # Shutdown if HTX is running.
-    ${status}=  Run Keyword And Return Status  Is HTX Running
-    Run Keyword If  '${status}' == 'True'
-    ...  Shutdown HTX Exerciser
-
-
 Post Test Case Execution
     [Documentation]  Do the post test teardown.
     # 1. Shut down HTX exerciser if test Failed.
diff --git a/systest/network_stability_test.robot b/systest/network_stability_test.robot
index d2edbfd..cfc0119 100644
--- a/systest/network_stability_test.robot
+++ b/systest/network_stability_test.robot
@@ -12,13 +12,6 @@
 
 ${stack_mode}        skip
 
-# Default duration and interval of HTX exerciser to run.
-${HTX_DURATION}     2 hours
-${HTX_INTERVAL}     15 min
-
-# Default iteration HTX exerciser to run.
-${HTX_LOOP}         4
-
 *** Test Cases ***
 
 Network Stability Test
@@ -47,15 +40,10 @@
     # Post Power off and on, the OS SSH session needs to be established.
     Login To OS
 
-    Rprint Timen  Create HTX mdt profile.
-    ${profile}=  Execute Command On OS  htxcmdline -createmdt
-    Rprint Timen  ${profile}
-    Should Contain  ${profile}  mdts are created successfully
+    Run Keyword If  '${HTX_MDT_PROFILE}' == 'mdt.bu'
+    ...  Create Default MDT Profile
 
-    Rprint Timen  Start HTX mdt profile execution.
-    ${htx_run}=  Execute Command On OS  htxcmdline -run -mdt mdt.bu
-    Rprint Timen  ${htx_run}
-    Should Contain  ${htx_run}  Activated
+    Run MDT Profile
 
     # HTX is running, inject network traffic and check every HTX_INTERVAL
     ${status}=  Run Until Keyword Fails  ${HTX_DURATION}  ${HTX_INTERVAL}
@@ -85,48 +73,15 @@
     REST Upload File To BMC
 
 
-Check HTX Run Status
-    [Documentation]  Get HTX exerciser status and check for error.
-
-    Rprint Timen  Check HTX mdt Status and error.
-    ${status}=  Execute Command On OS  htxcmdline -status -mdt mdt.bu
-    Log  ${status}
-    Rprint Timen  ${status}
-
-    ${errlog}=  Execute Command On OS  htxcmdline -geterrlog
-    Log  ${errlog}
-    Rprint Timen  ${errlog}
-
-    Should Contain  ${errlog}  file </tmp/htxerr> is empty
-
-
-Shutdown HTX Exerciser
-    [Documentation]  Shut down HTX exerciser run.
-
-    Rprint Timen  Shutdown HTX Run.
-    ${shutdown}=  Execute Command On OS  htxcmdline -shutdown -mdt mdt.bu
-    Rprint Timen  ${shutdown}
-    Should Contain  ${shutdown}  shutdown successfully
-
-
-Pre Test Case Execution
-    [Documentation]  Do the initial test setup.
-    # 1. Check if HTX tool exist.
-    # 2. Power on
-
-    Boot To OS
-    Tool Exist  htxcmdline
-
-
 Post Test Case Execution
     [Documentation]  Do the post test teardown.
     # 1. Shut down HTX exerciser if test Failed.
     # 2. Capture FFDC on test failure.
     # 3. Close all open SSH connections.
 
-    Run Keyword If  '${TEST_STATUS}' == 'FAIL'
+    # Keep HTX running if user set HTX_KEEP_RUNNING to 1.
+    Run Keyword If  '${TEST_STATUS}' == 'FAIL' and ${HTX_KEEP_RUNNING} == ${0}
     ...  Shutdown HTX Exerciser
 
     FFDC On Test Case Fail
     Close All Connections
-