1*** Settings ***
2Documentation    Stress the system using HTX exerciser.
3
4Resource         ../syslib/utils_os.robot
5Library          ../lib/gen_robot_print.py
6
7Test Setup      Pre Test Case Execution
8Test Teardown   Post Test Case Execution
9
10*** Variables ****
11
12${stack_mode}        skip
13
14# Default duration and interval of HTX exerciser to run.
15${HTX_DURATION}      2 hours
16${HTX_INTERVAL}      15 min
17
18# Default hardbootme loop times HTX exerciser to run.
19${HTX_LOOP}          4
20
21# User-defined halt on error.
22${HTX_KEEP_RUNNING}  ${0}
23
24# User-defined MDT profile.
25# There are a few stanzas in the HTX test exerciser that need to be removed
26# temporarily and manually built and executed.
27${HTX_MDT_PROFILE}  mdt.bu
28
29*** Test Cases ***
30
31Hard Bootme Test
32    [Documentation]  Stress the system using HTX exerciser.
33    [Tags]  Hard_Bootme_Test
34
35    Rprintn
36    Rpvars  HTX_DURATION  HTX_INTERVAL
37
38    Repeat Keyword  ${HTX_LOOP} times  Start HTX Exerciser
39
40
41*** Keywords ***
42
43Start HTX Exerciser
44    [Documentation]  Start HTX exerciser.
45    # Test Flow:
46    #              - Power on
47    #              - Establish SSH connection session
48    #              - Create HTX mdt profile
49    #              - Run HTX exerciser
50    #              - Check HTX status for errors
51    #              - Power off
52
53    Boot To OS
54
55    # Post Power off and on, the OS SSH session needs to be established.
56    Login To OS
57
58    Run Keyword If  '${HTX_MDT_PROFILE}' == 'mdt.bu'
59    ...  Create Default MDT Profile
60
61    Run MDT Profile
62
63    Loop HTX Health Check
64
65    Shutdown HTX Exerciser
66
67    Power Off Host
68
69    Rprint Timen  HTX Test ran for: ${HTX_DURATION}
70
71
72Loop HTX Health Check
73    [Documentation]  Run until HTX exerciser fails.
74
75    Repeat Keyword  ${HTX_DURATION}
76    ...  Run Keywords  Check HTX Run Status
77    ...  AND  Sleep  ${HTX_INTERVAL}
78
79
80Check HTX Run Status
81    [Documentation]  Get HTX exerciser status and check for error.
82
83    Rprint Timen  Check HTX mdt Status and error.
84    ${status}=  Execute Command On OS
85    ...  htxcmdline -status -mdt ${HTX_MDT_PROFILE}
86    Log  ${status}
87    Rprint Timen  ${status}
88
89    ${errlog}=  Execute Command On OS  htxcmdline -geterrlog
90    Log  ${errlog}
91    Rprint Timen  ${errlog}
92
93    Should Contain  ${errlog}  file </tmp/htxerr> is empty
94
95
96Create Default MDT Profile
97    [Documentation]  Create default mdt.bu profile and run.
98
99    Rprint Timen  Create HTX mdt profile.
100
101    ${profile}=  Execute Command On OS  htxcmdline -createmdt
102    Rprint Timen  ${profile}
103    Should Contain  ${profile}  mdts are created successfully
104
105
106Run MDT Profile
107    [Documentation]  Load user pre-defined MDT profile.
108
109    Rprint Timen  Start HTX mdt profile execution.
110    ${htx_run}=  Execute Command On OS
111    ...  htxcmdline -run -mdt ${HTX_MDT_PROFILE}
112    Rprint Timen  ${htx_run}
113    Should Contain  ${htx_run}  Activated
114
115
116Shutdown HTX Exerciser
117    [Documentation]  Shut down HTX exerciser run.
118
119    Rprint Timen  Shutdown HTX Run
120    ${shutdown}=  Execute Command On OS
121    ...  htxcmdline -shutdown -mdt ${HTX_MDT_PROFILE}
122    Rprint Timen  ${shutdown}
123    Should Contain  ${shutdown}  shutdown successfully
124
125
126Pre Test Case Execution
127    [Documentation]  Do the initial test setup.
128    # 1. Check if HTX tool exist.
129    # 2. Power on
130
131    Boot To OS
132    HTX Tool Exist
133
134    # Shutdown if HTX is running.
135    ${status}=  Run Keyword And Return Status  Is HTX Running
136    Run Keyword If  '${status}' == 'True'
137    ...  Shutdown HTX Exerciser
138
139
140Post Test Case Execution
141    [Documentation]  Do the post test teardown.
142    # 1. Shut down HTX exerciser if test Failed.
143    # 2. Capture FFDC on test failure.
144    # 3. Close all open SSH connections.
145
146    # Keep HTX running if user set HTX_KEEP_RUNNING to 1.
147    Run Keyword If  '${TEST_STATUS}' == 'FAIL' and ${HTX_KEEP_RUNNING} == ${0}
148    ...  Shutdown HTX Exerciser
149
150    FFDC On Test Case Fail
151    Close All Connections
152