1#initial attempt at an automation script: ltprun 2# 3/12/02 William Jay Huie (creation) 3# 3/28/02 William Jay Huie minor updates 4#this will be kicked off by ltp_master from the master control machine which 5#uploads this script and then telnets into each machine and kick this script off 6#perhaps by passing a uniq ID to name the LTP_OUTPUT_TAR file by, or 7#allowing the script to create a unique name itself (reccommended for now) 8#Check ltp_master for details 9#FIXME: One problem is that the tests need to be run as root and this script 10# doesn't as of yet su 11# 12#CHANGEME: 13LTP_HOST=ltp_host.somewhere.org 14#This is the user to get the ltp.tgz file from, not who we're running as, 15# that's ocntrolled by ltp_master 16LTP_USER=ltp 17LTP_PASS=ltp 18LTP_TARFILE=ltp.tgz 19LTP_RUNALL_OUT=runall.output 20LTP_LOGFILE=ltp-logfile 21LTP_RUN_OUTPUT=ltprun.out 22SAR_OUTFILE=sar.data 23 24#This script passes the -l ~/ltp/ltp-logfile option to runalltests.sh 25 26if [ -z $1 ]; then 27 SHORT_HOSTNAME=`hostname | perl -e 'while(<>){ m/(\w+)[.\\$]?/ && print $1;}'` 28 TIMESTAMP=`date +%s` 29 LTP_OUTPUT_TAR="$SHORT_HOSTNAME-$TIMESTAMP-ltpoutput.tgz" 30else 31 LTP_OUTPUT_TAR=$1 32fi 33 34download_ltp() 35{ 36 echo "Attempting to download the LTP testcases"; 37 cd ~ 38 rm -Rf ltp $LTP_TARFILE 39 ftp -n $LTP_HOST << END_GET 40 user $LTP_USER $LTP_PASS 41 bin 42 get $LTP_TARFILE 43 bye 44END_GET 45 46 if [ -s $LTP_TARFILE ]; then 47 echo " downloaded sucessfully"; 48 else 49 echo "FAILED download of LTP Testcases"; return 0; 50 fi 51 return 1; 52} 53 54untar_ltp() 55{ 56 echo "Untarring $LTP_TARFILE now"; 57 cd ~ 58 tar -zxf $LTP_TARFILE &> /dev/null 59 if [ $? != "0" ]; then 60 echo "Problems untarring the archive"; return 0; 61 else 62 echo " successfully untarred $LTP_TARFILE"; 63 fi 64 return 1; 65} 66 67build_ltp() 68{ 69 cd ~/ltp 70 echo "Building LTP Testsuite version: `cat VERSION`"; 71 make clean install &> /dev/null 72 if [ $? != "0" ]; then 73 echo "FAILED LTP Testsuite compilation"; return 0; 74 else 75 echo " LTP Testsuite compilation successful" 76 fi 77 return 1; 78} 79 80run_ltp() 81{ 82 cd ~/ltp 83 rm -f $LTP_RUNALL_OUT $LTP_LOGFILE $SAR_OUTFILE 84 echo "Trying to start sar" 85 sar -o $SAR_OUTFILE 60 0 & 86 echo "Running LTP testsuite" 87 ./runalltests.sh -l ~/ltp/$LTP_LOGFILE &> $LTP_RUNALL_OUT 88 echo "Done running tests" 89 killall -9 sadc 90 echo "Killing sar if it is running" 91 return 1; 92} 93 94#FIXME: 95#collect results has a hack to copy the &>ltprun file into the ~/ltp dir then 96#tar it up with everything else, but this seems to work so far. 97collect_results() 98{ 99 echo "Collecting LTP output" 100 cd ~/ltp 101 cp ~/$LTP_RUN_OUTPUT . 102 tar --ignore-failed-read -czf ~/$LTP_OUTPUT_TAR $LTP_RUNALL_OUT $LTP_LOGFILE $LTP_RUN_OUTPUT $SAR_OUTFILE 103 104 if [ -s ~/$LTP_OUTPUT_TAR ]; then 105 echo "LTP output tarfile created sucessfully"; 106 else 107 echo "FAILED tar of LTP results"; return 0; 108 fi 109 return 1; 110} 111 112upload_results() 113{ 114 echo "Uploading LTP output" 115 cd ~ 116 ftp -n $LTP_HOST << END_PUT 117 user $LTP_USER $LTP_PASS 118 bin 119 put $LTP_OUTPUT_TAR 120 bye 121END_PUT 122#FIXME! Right now don't have a way to verify the upload worked, but 123#we'd like to know so we can delete the OUTPUT_TAR file 124# rm -f $LTP_OUTPUT_TAR 125 rm -f $LTP_TARFILE 126} 127 128#Start the work! 129 130download_ltp 131if [ $? = 1 ]; then 132 untar_ltp 133 if [ $? = 1 ]; then 134 build_ltp 135 if [ $? = 1 ]; then 136 run_ltp 137 fi 138 fi 139fi 140 141#Want to upload results even if things didn't run 142collect_results 143upload_results 144 145echo "Done" 146