| #initial attempt at an automation script: ltprun |
| # 3/12/02 William Jay Huie (creation) |
| # 3/28/02 William Jay Huie minor updates |
| #this will be kicked off by ltp_master from the master control machine which |
| #uploads this script and then telnets into each machine and kick this script off |
| #perhaps by passing a uniq ID to name the LTP_OUTPUT_TAR file by, or |
| #allowing the script to create a unique name itself (reccommended for now) |
| #Check ltp_master for details |
| #FIXME: One problem is that the tests need to be run as root and this script |
| # doesn't as of yet su |
| # |
| #CHANGEME: |
| LTP_HOST=ltp_host.somewhere.org |
| #This is the user to get the ltp.tgz file from, not who we're running as, |
| # that's ocntrolled by ltp_master |
| LTP_USER=ltp |
| LTP_PASS=ltp |
| LTP_TARFILE=ltp.tgz |
| LTP_RUNALL_OUT=runall.output |
| LTP_LOGFILE=ltp-logfile |
| LTP_RUN_OUTPUT=ltprun.out |
| SAR_OUTFILE=sar.data |
| |
| #This script relies upon the -l ~/ltp/ltp-logfile pan option in runalltests.sh |
| #We want to also include in the output tarfile a system_info file |
| # need to determine what goes in that, maybe just modify ver_linux |
| # to report this info |
| |
| if [ -z $1 ]; then |
| SHORT_HOSTNAME=`hostname | perl -e 'while(<>){ m/(\w+)[.\\$]?/ && print $1;}'` |
| TIMESTAMP=`date +%s` |
| LTP_OUTPUT_TAR="$SHORT_HOSTNAME-$TIMESTAMP-ltpoutput.tgz" |
| else |
| LTP_OUTPUT_TAR=$1 |
| fi |
| |
| download_ltp() |
| { |
| echo "Attempting to download the LTP testcases"; |
| cd ~ |
| rm -Rf ltp $LTP_TARFILE |
| ftp -n $LTP_HOST << END_GET |
| user $LTP_USER $LTP_PASS |
| bin |
| pass |
| get $LTP_TARFILE |
| bye |
| END_GET |
| |
| if [ -s $LTP_TARFILE ]; then |
| echo " downloaded sucessfully"; |
| else |
| echo "FAILED download of LTP Testcases"; return 0; |
| fi |
| return 1; |
| } |
| |
| untar_ltp() |
| { |
| echo "Untarring $LTP_TARFILE now"; |
| cd ~ |
| tar -zxf $LTP_TARFILE &> /dev/null |
| if [ $? != "0" ]; then |
| echo "Problems untarring the archive"; return 0; |
| else |
| echo " successfully untarred $LTP_TARFILE"; |
| fi |
| return 1; |
| } |
| |
| build_ltp() |
| { |
| cd ~/ltp |
| echo "Building LTP Testsuite version: `head -n1 ChangeLog`"; |
| make clean install &> /dev/null |
| if [ $? != "0" ]; then |
| echo "FAILED LTP Testsuite compilation"; return 0; |
| else |
| echo " LTP Testsuite compilation successful" |
| fi |
| return 1; |
| } |
| |
| run_ltp() |
| { |
| cd ~/ltp |
| rm -f $LTP_RUNALL_OUT $LTP_LOGFILE $SAR_OUTFILE |
| echo "Trying to start sar" |
| sar -o $SAR_OUTFILE 60 0 & |
| echo "Running LTP testsuite" |
| ./runalltests.sh &> $LTP_RUNALL_OUT |
| echo "Done running tests" |
| killall -9 sadc |
| echo "Killing sar if it is running" |
| return 1; |
| } |
| |
| #FIXME: |
| #collect results has a hack to copy the &>ltprun file into the ~/ltp dir then |
| #tar it up with everything else, but this seems to work so far. |
| collect_results() |
| { |
| echo "Collecting LTP output" |
| cd ~/ltp |
| cp ~/$LTP_RUN_OUTPUT . |
| tar -czf ~/$LTP_OUTPUT_TAR $LTP_RUNALL_OUT $LTP_LOGFILE $LTP_RUN_OUTPUT $SAR_OUTFILE |
| |
| if [ -s ~/$LTP_OUTPUT_TAR ]; then |
| echo "LTP output tarfile created sucessfully"; |
| else |
| echo "FAILED tar of LTP results"; return 0; |
| fi |
| return 1; |
| } |
| |
| upload_results() |
| { |
| echo "Uploading LTP output" |
| cd ~ |
| ftp -n $LTP_HOST << END_PUT |
| user $LTP_USER $LTP_PASS |
| bin |
| put $LTP_OUTPUT_TAR |
| bye |
| END_PUT |
| #FIXME! Right now don't have a way to verify the upload worked, but |
| #we'd like to know so we can delete the OUTPUT_TAR file |
| # rm -f $LTP_OUTPUT_TAR |
| rm -f $LTP_TARFILE |
| } |
| |
| #Start the work! |
| |
| download_ltp |
| if [ $? = 1 ]; then |
| untar_ltp |
| if [ $? = 1 ]; then |
| build_ltp |
| if [ $? = 1 ]; then |
| run_ltp |
| fi |
| fi |
| fi |
| |
| #Want to upload results even if things didn't run |
| collect_results |
| upload_results |
| |
| echo "Done" |