ppovb5fc7/gazebo/tools/gz_build_test.bash

86 lines
2.3 KiB
Bash
Raw Normal View History

2019-03-04 17:11:56 +08:00
#!/bin/bash
# Get the list of branches to check. Use default if no branch specified.
if [ "$#" -ne "0" ]
then
branches="$@"
else
branches="default"
fi
# Create a logfile based on the current time
timestamp=`eval date +%d_%m_%Y_%R:%S`
logfile="/tmp/gazebo_test-$timestamp.txt"
logfileVerbose="/tmp/gazebo_test-$timestamp-verbose.txt"
logfileRaw=/tmp/gazebo_build/raw.log
# Create working directory
cd
rm -rf /tmp/gazebo_build
mkdir /tmp/gazebo_build
# Clone
hg clone https://bitbucket.org/osrf/gazebo /tmp/gazebo_build/source
start_time=`eval date +%s`
PATH=/tmp/gazebo_build/install/bin:$PATH
LD_LIBRARY_PATH=/tmp/gazebo_build/install/lib:$LD_LIBRARY_PATH
# Process each branch from the command line
for branch in $branches
do
# Get the correct branch
cd /tmp/gazebo_build/source
hg up $branch
# Build
rm -rf build
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/tmp/gazebo_build/install ../
make -j4 install
. /tmp/gazebo_build/install/share/gazebo/setup.sh
echo "Branch: $branch" >> $logfile
echo "==================================================" >> $logfile
echo "Test Results" >> $logfile
# Run make test many times, only capture failures
for i in {1..10}
do
cd /tmp/gazebo_build/source/build
# make test with verbose output
make test ARGS="-VV" &> $logfileRaw
grep '^ *[0-9]*/[0-9]* .*\*\*\*' $logfileRaw >> $logfile
# for each failed test
for f in `grep '^ *[0-9]*/[0-9]* .*\*\*\*' $logfileRaw | \
sed -e 's@^ *\([0-9]*\)/.*@\1@'`
do
# output some brief info
echo Try $i of 10, failed test $f >> $logfileVerbose
# then send the raw output of both the test and its companion test_ran
# to the logfile for perusal
grep '^ *'`echo "(($f-1)/2)*2+1" | bc`':' $logfileRaw >> $logfileVerbose
grep '^ *'`echo "(($f-1)/2)*2+2" | bc`':' $logfileRaw >> $logfileVerbose
done
done
echo "Code Check Results" >> $logfile
# Run code checker
cd /tmp/gazebo_build/source
sh tools/code_check.sh >> $logfile
done
end_time=`eval date +%s`
duration=`expr $end_time - $start_time`
hour=`expr $duration / 3600`
min=`expr $(( $duration - $hour * 3600 )) / 60`
sec=`expr $duration - $hour \* 3600 - $min \* 60`
echo "Duration: $hour hr $min min $sec sec" >> $logfile
# Cleanup
cd
rm -rf /tmp/gazebo_build