blob: 0c83eee0f6b2283c62d260d06f5e9c8ee07bc392 [file] [log] [blame]
#!/bin/bash
# **********************************************************
# Copyright (c) 2008 VMware, Inc. All rights reserved.
# **********************************************************
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
#
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# * Neither the name of VMware, Inc. nor the names of its contributors may be
# used to endorse or promote products derived from this software without
# specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL VMWARE, INC. OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
# DAMAGE.
export OS_VER="$1"
export RUNREGRESSION_OS_VER="RUNREGRESSION_$1"
export HOSTNAME=`hostname`
# Let's mark the start time with a file and then check the file's
# existence before starting a new run. If something's gone wrong and
# the file is still around from the previous run, send mail and don't
# start a new regression.
cd $DYNAMORIO_NIGHTLY
start_dir=`pwd`
if [ -e ./test_started ]; then
echo "To:dynamorio-devnull@vmware.com" > mail_results
echo "Subject: Linux $OS_VER ($HOSTNAME) $NIGHTLY_TAG regression ERROR: previous run not finished!" >> mail_results
echo "" >> mail_results
read prev_start < ./test_started
echo "Previous run started on $prev_start did not finish" >> mail_results
echo "(or was aborted and 'test_started' was not removed)." >> mail_results
echo "Cancelling current job." >> mail_results
ssh $NIGHTLY_MAIL "rm -f mail_results.$OS_VER.$HOSTNAME"
scp mail_results $NIGHTLY_MAIL:mail_results.$OS_VER.$HOSTNAME
ssh $NIGHTLY_MAIL "/usr/sbin/sendmail -t -fdynamorio-devnull@vmware.com < mail_results.$OS_VER.$HOSTNAME"
rm -f mail_results.last
mv -f mail_results mail_results.last
exit
else
date > ./test_started
fi
export NIGHTLY_START_TIME=`date`
echo $DYNAMORIO_LOGDIR
cd $DYNAMORIO_HOME
p4 sync
#in case of network trouble, make sure we get an updated src module
#rm -rf src
#FIXME how to do this
cd $DYNAMORIO_TOOLS
make clean
cd $DYNAMORIO_LOGDIR_BASE
rm -rf logs
mkdir logs
cd $DYNAMORIO_SUITE/tests
make clean
cd $DYNAMORIO_SUITE
rm -rf regression-*.0*
echo "running regression"
./runregression -long 2>&1 | tee regression.log
echo "sending summary"
#get output directory name
ls -td regression-*.0* > tmp
read dir_name < tmp
rm -f tmp
#get failure count
grep -c " \*\*\* .* failed:" regression.log > tmp
read fail_count < tmp
rm -f tmp
#start preparing results mail
echo "To:dynamorio-devnull@vmware.com" > mail_results
echo "Subject: Linux $OS_VER ($HOSTNAME) $NIGHTLY_TAG regression results : started $NIGHTLY_START_TIME : $fail_count failing runs" >> mail_results
echo "" >> mail_results
echo "this automatically generated email contains the following sections: " >> mail_results
echo " 1) summary of win32 $OS_VER ($HOSTNAME) $NIGHTLY_TAG regression results" >> mail_results
echo " 2) details of win32 $OS_VER ($HOSTNAME) $NIGHTLY_TAG regression (unit test) results" >> mail_results
echo "" >> mail_results
echo "====================================================" >> mail_results
#get runregression summary
dstamp=`date | awk '{print $6 "-" $2$3}'`
details=w32-reg-$dstamp-$OS_VER.$HOSTNAME
../nightly/utreport.pl regression.log $dir_name $details > w32-reg-results 2>&1
echo "regression suite results:" >> mail_results
echo "" >> mail_results
lines=`wc -l w32-reg-results | awk '{print $1}'`;
if [ $lines -lt 50 ]; then
echo "RESULTS LOOK INCOMPLETE! CHECK DISK USAGE:" >> mail_results;
df -h -l >> mail_results;
echo "" >> mail_results;
grep 'No space' regression.log | tail >> mail_results;
echo "" >> mail_results;
fi
cat w32-reg-results >> mail_results
# mail mail_results
ssh $NIGHTLY_MAIL "rm -f mail_results.$OS_VER.$HOSTNAME"
scp mail_results $NIGHTLY_MAIL:mail_results.$OS_VER.$HOSTNAME
#FIXME - where to store this?
#scp $details $NIGHTLY_MAIL:/mnt/determina/bugs/nightly/
ssh $NIGHTLY_MAIL "/usr/sbin/sendmail -t -fdynamorio-devnull@vmware.com < mail_results.$OS_VER.$HOSTNAME"
#cleanup
tar_name="${dir_name%.*}"
tar_ext=".tgz"
# FIXME - disabling till case 5168 and 5000 are fixed, till then will only keep
# the last night's results
#tar -cf $tar_name$tar_ext regression.log $dir_name w32-reg-results mail_results --gzip
rm -rf regression-dir-last
rm -f regression.log.last
rm -f mail_results.last
rm -f w32-reg-results.last
mv -f regression.log regression.log.last
mv -f $dir_name regression-dir-last
mv -f mail_results mail_results.last
mv -f w32-reg-results w32-reg-results.last
rm -f $start_dir/test_started
exit