DCD/ci/summary_comment.sh

61 lines
1.7 KiB
Bash
Executable File

#!/usr/bin/env bash
set -u
# Output from this script is piped to a file by CI, being run from before a
# change has been made and after a change has been made. Then both outputs are
# compared using summary_comment_diff.sh
# cd to git folder, just in case this is manually run:
ROOT_DIR="$( cd "$(dirname "${BASH_SOURCE[0]}")/../" && pwd )"
cd ${ROOT_DIR}
dub --version
ldc2 --version
# fetch missing packages before timing
dub upgrade --missing-only
rm -rf .dub bin
start=`date +%s`
dub build --build=release --config=client --compiler=ldc2 --force 2>&1 || echo "DCD BUILD FAILED"
dub build --build=release --config=server --compiler=ldc2 --force 2>&1 || echo "DCD BUILD FAILED"
end=`date +%s`
build_time=$( echo "$end - $start" | bc -l )
strip bin/dcd-server
strip bin/dcd-client
echo "STAT:statistics (-before, +after)"
echo "STAT:client size=$(wc -c bin/dcd-client)"
echo "STAT:server size=$(wc -c bin/dcd-server)"
echo "STAT:rough build time=${build_time}s"
echo "STAT:"
cd tests
./run_tests.sh --time-server --extra
echo "STAT:DCD run_tests.sh $(grep -F 'Elapsed (wall clock) time' stderr.txt)"
echo "STAT:DCD run_tests.sh $(grep -F 'Maximum resident set size (kbytes)' stderr.txt)"
echo "STAT:"
grep -E 'Request processed in .*' stderr.txt | rdmd ../ci/request_time_stats.d
echo "STAT:"
# now rebuild server with -profile=gc
cd ..
rm -rf .dub bin/dcd-server
dub build --build=profile-gc --config=server --compiler=dmd 2>&1 || echo "DCD BUILD FAILED"
cd tests
./run_tests.sh --extra
echo "STAT:top 5 GC sources in server:"
if [ ! -f "profilegc.log" ]; then
echo 'Missing profilegc.log file!'
echo 'Tail for stderr.txt:'
tail -n50 stderr.txt
fi
head -n6 profilegc.log | sed 's/^/STAT:/g'