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*** Test Cases ***
25
26Hard Bootme Test
27    [Documentation]  Stress the system using HTX exerciser.
28    [Tags]  Hard_Bootme_Test
29
30    Rprintn
31    Rpvars  HTX_DURATION  HTX_INTERVAL
32
33    Repeat Keyword  ${HTX_LOOP} times  Start HTX Exerciser
34
35
36*** Keywords ***
37
38Start HTX Exerciser
39    [Documentation]  Start HTX exerciser.
40    # Test Flow:
41    #              - Power on
42    #              - Establish SSH connection session
43    #              - Create HTX mdt profile
44    #              - Run HTX exerciser
45    #              - Check HTX status for errors
46    #              - Power off
47
48    Boot To OS
49
50    # Post Power off and on, the OS SSH session needs to be established.
51    Login To OS
52
53    Rprint Timen  Create HTX mdt profile.
54    ${profile}=  Execute Command On OS  htxcmdline -createmdt
55    Rprint Timen  ${profile}
56    Should Contain  ${profile}  mdts are created successfully
57
58    Rprint Timen  Start HTX mdt profile execution.
59    ${htx_run}=  Execute Command On OS  htxcmdline -run -mdt mdt.bu
60    Rprint Timen  ${htx_run}
61    Should Contain  ${htx_run}  Activated
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
71Loop HTX Health Check
72    [Documentation]  Run until HTX exerciser fails.
73
74    Repeat Keyword  ${HTX_DURATION}
75    ...  Run Keywords  Check HTX Run Status
76    ...  AND  Sleep  ${HTX_INTERVAL}
77
78
79Check HTX Run Status
80    [Documentation]  Get HTX exerciser status and check for error.
81
82    Rprint Timen  Check HTX mdt Status and error.
83    ${status}=  Execute Command On OS  htxcmdline -status -mdt mdt.bu
84    Log  ${status}
85    Rprint Timen  ${status}
86
87    ${errlog}=  Execute Command On OS  htxcmdline -geterrlog
88    Log  ${errlog}
89    Rprint Timen  ${errlog}
90
91    Should Contain  ${errlog}  file </tmp/htxerr> is empty
92
93
94Shutdown HTX Exerciser
95    [Documentation]  Shut down HTX exerciser run.
96
97    Rprint Timen  Shutdown HTX Run
98    ${shutdown}=  Execute Command On OS  htxcmdline -shutdown -mdt mdt.bu
99    Rprint Timen  ${shutdown}
100    Should Contain  ${shutdown}  shutdown successfully
101
102
103Pre Test Case Execution
104    [Documentation]  Do the initial test setup.
105    # 1. Check if HTX tool exist.
106    # 2. Power on
107
108    Boot To OS
109    HTX Tool Exist
110
111
112Post Test Case Execution
113    [Documentation]  Do the post test teardown.
114    # 1. Shut down HTX exerciser if test Failed.
115    # 2. Capture FFDC on test failure.
116    # 3. Close all open SSH connections.
117
118    # Keep HTX running if user set HTX_KEEP_RUNNING to 1.
119    Run Keyword If  '${TEST_STATUS}' == 'FAIL' and ${HTX_KEEP_RUNNING} == ${0}
120    ...  Shutdown HTX Exerciser
121
122    FFDC On Test Case Fail
123    Close All Connections
124
125