2 ################################################################################
4 ## Copyright (c) International Business Machines Corp., 2001 ##
6 ## This program is free software; you can redistribute it and#or modify ##
7 ## it under the terms of the GNU General Public License as published by ##
8 ## the Free Software Foundation; either version 2 of the License, or ##
9 ## (at your option) any later version. ##
11 ## This program is distributed in the hope that it will be useful, but ##
12 ## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ##
13 ## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ##
14 ## for more details. ##
16 ## You should have received a copy of the GNU General Public License ##
17 ## along with this program; if not, write to the Free Software ##
18 ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ##
20 ################################################################################
24 # Description: This program is a Graphical User Interface (GUI)
25 # Control Centre for LTP. The Control Centre provides
26 # functionality to Compile, Execute and View Results of
29 # Author: Manoj Iyer - manjo@mail.utexas.edu
31 # Thanks: Jim Choate - For suggesting the use of dialog command.
33 # History: March 26 2003 - Created.
35 # March 28 2003 - Removed gauges and put make commands in foreground.
36 # Robbie Williamson - robbiew@us.ibm.com
38 # March 31 2003 - Made scenario menu creation dynamic and code
39 # to pull the test descriptions from the scenario files.
40 # Robbie Williamson - robbiew@us.ibm.com
42 # April 17 2003 - Added menu selection to list contents of selected
44 # Robbie Williamson - robbiew@us.ibm.com
46 # April 23 2003 - Added PID to results filename.
47 # - Added code to allow users to redirect output and
48 # specify test execution duration.
49 # Robbie Williamson - robbiew@us.ibm.com
51 # April 30, 2003 - Recoded results display to allow selection
53 # - Created variable to hold results filename
54 # - Added time to results filename.
57 # Description: Remove all temporary files created by this program. Cleanup
58 # always called on program exit.
69 # Function: display_info_msg
71 # Description: Displays informational messages window. This window may
72 # may be used to display information like errors, instructions
73 # etc to the user. The window is dismissed when the user hits
76 # Input: $1 - Title the needs to be displayed on the window.
77 # eg: ERROR: Compiling LTP
80 # Output: Information message window.
83 dialog
--backtitle "Linux Test Project Control Centre" \
90 # Function: compile_ltp
92 # Description: Checks for commands that are pre-reqs for compiling and
93 # installing LTP. It displays a confirmation window inorder to
94 # confirm the choice made by the user.
96 # Calls: do_make_clean()
102 # Output: Confirmation window.
105 dialog
--backtitle "Linux Test Project Control Centre" \
106 --title "Compiling LTP testsuite"\
107 --yesno "This will compile all the test cases in\
108 LTP test suite and place the executables\
109 in testcases/bin directory. Do\
110 you wish to continue ??" 7 70 || RC
=$?
113 for cmd
in cc
make lex ;
115 which $cmd &>/tmp
/runltp.err.$$
;
118 display_info_msg
"Compiling LTP testsuite" \
119 "ERROR: command $cmd not found, $cmd is\
120 required to compile LTP test cases. Please\
121 install $cmd or export PATH correctly before\
122 running this program" ;
128 echo "ERROR in \'make clean\' - exiting."
133 echo "ERROR in \'make all\' - exiting."
138 echo "ERROR in \'make install\' - exiting."
150 # Function: disp_ltpres
152 # Description: The results generated after the ltp execution located under
153 # ltp-mmddyy/results/ directory in a text (ASCII) file called
154 # results.todaysdate. This function displays this file in a
155 # window. If the results file does not exit it displays an
156 # info message window notifing the user that LTP test cases
157 # need to be executed inorder to view results.
159 # Input: ltp-mmddyy/results/results.todaysdate.time
161 # Output: Window displaying results of testcases that were executed.
166 RESULTS_LIST
=$
(for i
in `ls -1 -A -I "CVS" results`;do echo -n "$i [more...] "; done)
167 if ! [ -z $RESULTS_LIST ] ;then
168 while [ $RC -ne "1" ]
171 dialog
--backtitle "Linux Test Project Control Centre" \
172 --title "LTP Test Results" \
173 --menu "Move using[UP] [DOWN], Select using [ENTER]" 15 70 8 \
175 2>/tmp
/runltp.results.$$ || RC
=$?
176 results_item
=$
(cat /tmp
/runltp.results.$$
)
177 if ! [ -z $results_item ];then
179 dialog
--backtitle "Linux Test Project Control Centre" \
180 --title "LTP Test Results" \
181 --textbox results
/$results_item 17 70
183 dialog
--backtitle "Linux Test Project Control Centre" \
184 --title "LTP Test Results." \
185 --yesno "Would you like to share these results with the LTP \
186 community by posting it to the LTP results mailing list?" \
190 mail ltp-results@lists.sourceforge.net
< \
191 .
/results
/$results_item ;
202 dialog
--backtitle "Linux Test Project Control Centre" \
203 --title "LTP Test Results" \
204 --msgbox "ERROR: No files to view in /results directory." 5 53
210 # Function: flags_prompt
212 # Description: Prompt for and record user options for run duration and
213 # test output direction
220 dialog
--backtitle "Linux Test Project Control Centre"\
221 --title "Output Direction" --clear\
222 --yesno "Would you like test output recorded to a file, instead of STDOUT?" 7 80
226 dialog
--backtitle "Linux Test Project Control Centre"\
227 --title "Output Direction" --clear\
228 --inputbox " Please enter the full path and \
229 name of the file where you wish \
230 to redirect output to" 17 80 \
231 2>/tmp
/runltp.outdir.$$
;
232 flags_outfile
=$
(cat /tmp
/runltp.outdir.$$ |
awk '{print $1}')
233 .
/ver_linux
> $flags_outfile 2>&1
234 RUNALL_FLAGS
=" -o $flags_outfile"
237 dialog
--backtitle "Linux Test Project Control Centre"\
238 --title "Test Duration" --clear\
239 --yesno "Would you like to specify test duration? \
240 Default is the length of one loop." 7 80
244 dialog
--backtitle "Linux Test Project Control Centre"\
245 --title "Test Duration - Interval Selection" --clear\
246 --menu "Move using[UP] [DOWN], Select using [ENTER]" 15 70 4 \
251 2>/tmp
/runltp.interval.$$
;
252 flags_interval
=$
(cat /tmp
/runltp.interval.$$ |
awk '{print $1}')
253 case $flags_interval in
254 s
) INTERVAL
="seconds" ;;
255 m
) INTERVAL
="minutes" ;;
256 h
) INTERVAL
="hours" ;;
257 d
) INTERVAL
="days" ;;
261 WINDOW_MSG
="Please enter the number of $INTERVAL to run"
262 dialog
--backtitle "Linux Test Project Control Centre"\
263 --title "Test Duration - Length Specification" --clear\
264 --inputbox "$WINDOW_MSG" 7 80 \
265 2>/tmp
/runltp.length.$$
;
266 flags_length
=$
(cat /tmp
/runltp.length.$$ |
awk '{print $1}')
267 flags_duration
="$flags_length$flags_interval"
268 RUNALL_FLAGS
=" $RUNALL_FLAGS -t $flags_duration"
272 # Function: exectest_screenout
274 # Description: Execute tests by calling runltp, display test status
279 # Output: messages printed by testcases.
282 RC
=0 # setting return code to 0, to loop in while
284 RESULTS_FILE
=$
(date +%Y-
%m-
%d.
%H.
%M.
%S
).$$
286 # execute runltp with user defined command file.
287 .
/runltp
-q -p $RUNALL_FLAGS -l results.
$RESULTS_FILE \
288 -f /tmp
/runltp.
test.list.$$
296 # Function: execute_ltp
298 # Description: This function provides a menu of testcases that can be
299 # selected for execution. If networking tests are selected,
300 # they require a remote machine and remote machines root
301 # users password. The user will be prompted to enter this
302 # information in a text box.
303 # The function checks to see if the ltp-mmddyy/testcases/bin
304 # directory was created, this directory is created when the
305 # testcases are compiled and installed, if it is not found
306 # an info message window will notify the user that LTP needs to
307 # be compiled before tests can be executed.
308 # This function creates the senatrio file based on the users
309 # choice of testcases and uses the runltp script to
310 # execute these tests.
311 # The messages printed by the testcases are displayed on this
314 # Input: Users selection of testcases; scenario file.
316 # Output: Test selection window, Message window,
317 # information message window
325 if ! [ -d .
/testcases
/bin
]
327 display_info_msg
"Executing LTP testcases" \
328 "The testcases must to be compiled inorder\
329 to execute them. Returning to main menu. \
330 Please select the Compile option."
334 LIST
=$
(for i
in `ls -1 -A -I "CVS" runtest`; do echo -n "$i "; j
=$
(head -n1 runtest
/$i | cut
-d: -f2|
sed s
/" "/_
/g
); echo -n "$j off "; done)
335 dialog
--backtitle "Linux Test Project Control Centre"\
336 --title "Execute LTP" --clear\
337 --checklist "Select [SPACEBAR] tests to run" 20 80 5 \
339 2>/tmp
/runltp.choice.$$ || RC
=$?
340 size
=`wc -m /tmp/runltp.choice.$$|awk '{print $1}'`
341 if [ $size -eq 0 ];then
342 tst_choice
=$
(echo "NULL")
344 tst_choice
=$
(cat /tmp
/runltp.choice.$$
)
346 if [[ $tst_choice == NULL
]];then
351 for i
in $tst_choice ;
353 cat .
/runtest
/$
(echo $i |
sed -e 's/"//g') \
354 >> /tmp
/runltp.
test.list.$$
;
355 if [[ $
(echo $i |
sed -e 's/"//g') == "tcp_cmds" || \
356 $
(echo $i |
sed -e 's/"//g') == "tcp_cmds_noexpect" || \
357 $
(echo $i |
sed -e 's/"//g') == "multicast" || \
358 $
(echo $i |
sed -e 's/"//g') == "ipv6" || \
359 $
(echo $i |
sed -e 's/"//g') == "ipv6_noexpect" || \
360 $
(echo $i |
sed -e 's/"//g') == "nfs" || \
361 $
(echo $i |
sed -e 's/"//g') == "multicast" ]] ;
367 if ! [ -z $run_net_test ] ;
369 dialog
--backtitle "Linux Test Project Control Centre"\
370 --title "Execute LTP test cases" \
372 --inputbox "You have chosen to execute testcases \
373 that require a Remote Machine. \
374 Please enter the fully qualified host \
375 name" 17 80 $
(hostname
--long) \
376 2>/tmp
/runltp.out.$$
;
377 host_name
=$
(cat /tmp
/runltp.out.$$ |
awk '{print $1}') ;
382 dialog
--backtitle "Linux Test Project Control Centre"\
383 --title "Execute LTP test cases" \
385 --inputbox " Please enter the root password \
386 of this remote machine" 17 80 \
387 2>/tmp
/runltp.out.$$
;
388 rhost_passwd
=$
(cat /tmp
/runltp.out.$$ |
awk '{print $1}') ;
390 PASSWD
=$rhost_passwd ;
394 if ! [ -d .
/testcases
/bin
] ;
396 display_info_msg
"Executing LTP testcases" \
397 "The testcases must to be compiled inorder\
398 to execute them. Returning to main menu. \
399 Please select the Compile option." ;
411 # echo "Cancel pressed" ;
414 # echo "ESC pressed" ;
420 # Function: about_ltpcc
422 # Description: This function displays a window containing a brief message
423 # describing this programs functionality, and credits the author.
427 # Output: Message window, description of LTP Control Center.
430 display_info_msg
"About LTP Control Centre" \
431 "The LTP Control Centre can be used to\
432 to compile, install and execute\
433 The Linux Test Project test suite. Written by\
434 Manoj Iyer <manjo@mail.utexas.edu>"
439 # Function: ltp_scenarios
441 # Description: This function displays a list of scenario files located
442 # in /runtest. Users can list the contents of each file.
444 # Input: Files from /runtest
446 # Output: 1) Menu selection containing each file as an option to list.
447 # 2) Contents of selected scenario.
452 SCENARIOS
=$
(for i
in `ls -1 -A -I "CVS" runtest`;do echo -n "$i [more...] "; done)
454 while [ $RC -ne "1" ]
457 dialog
--backtitle "Linux Test Project Control Centre" \
458 --title "LTP Scenario Files" \
459 --menu "Move using[UP] [DOWN], Select using [ENTER]" 15 70 8 \
461 2>/tmp
/runltp.scenario.$$ || RC
=$?
462 scenario_item
=$
(cat /tmp
/runltp.scenario.$$
)
463 if ! [ -z $scenario_item ];then
465 dialog
--backtitle "Linux Test Project Control Centre" \
466 --title "LTP Scenario Files" \
467 --textbox runtest
/$scenario_item 17 70
476 # Description: Displays the main menu to the LTP Control Centre. The menu
477 # provides options to Compile, Execute, and View test execution
480 # Calls: about_ltpcc()
487 # Output: Menu selection of actions to perform.
490 RC
=0 # return code from commands and local functions
497 # test for dialog program exist
498 if [ ! -x /usr
/bin
/dialog
]; then
499 echo "Sorry, ltpmenu GUI not available, can't find dialog. Exiting...";
503 # call cleanup function on program exit.
507 # wait in a loop until user hits [Cancel] button on the main menu.
512 dialog
--backtitle "Linux Test Project Control Centre" \
513 --title "Main Menu" \
514 --menu "Move using[UP] [DOWN], Select using [ENTER]" 15 70 5 \
515 About
"About LTP Control Centre" \
516 Compile
"Compile LTP testsuite" \
517 Details
"Details of scenario files" \
518 Execute
"Execute LTP testsuite" \
519 Results
"Display a summary of test results" \
520 2>/tmp
/runltp.mainmenu.$$ || RC
=$?
523 0) mmenu_item
=`cat /tmp/runltp.mainmenu.$$` ;
524 # echo "return code = $RC" ;
525 # echo "MENU ITEM = $mmenu_item" ;
527 About
) about_ltpcc
;;
528 Compile
) compile_ltp
;;
529 Details
) ltp_scenarios
;;
530 Execute
) execute_ltp
;;
531 Results
) disp_ltpres
;;
534 1) display_info_msg
"Good Bye!" \
535 "Thank you for using Linux Test Project test suite.\
536 Please visit our project website \
537 http://ltp.sourceforge.net \
538 for latest news on The Linux Test Project. "
541 255) display_info_msg
"Good Bye!" \
542 "Thank you for using Linux Test Project test suite.\
543 Please visit our project website\
544 http://ltp.sourceforge.net for latest news\
545 on The Linux Test Project. "