notmuch/performance-test/perf-test-lib.sh
David Bremner 7beeb8c88a test: initial performance testing infrastructure
This is not near as fancy as as the unit tests, on the theory that
the code should typically be crashing when performance tuning.
Nonetheless, there is plenty of room for improvement.  Several more of
the pieces of the test infrastructure (e.g. the option parsing) could
be factored out into test/test-lib-common.sh
2012-11-26 08:39:21 -04:00

67 lines
1.2 KiB
Bash

. ./version.sh
. ../test/test-lib-common.sh
set -e
if ! test -x ../notmuch
then
echo >&2 'You do not seem to have built notmuch yet.'
exit 1
fi
add_email_corpus ()
{
rm -rf ${MAIL_DIR}
case "$1" in
--small)
arg="mail/enron/bailey-s"
;;
--medium)
arg="mail/notmuch-archive"
;;
*)
arg=mail
esac
if command -v pixz > /dev/null; then
XZ=pixz
else
XZ=xz
fi
printf "Unpacking corpus\n"
tar --checkpoint=.5000 --extract --strip-components=1 \
--directory ${TMP_DIRECTORY} \
--use-compress-program ${XZ} \
--file ../download/notmuch-email-corpus-${PERFTEST_VERSION}.tar.xz \
notmuch-email-corpus/"$arg"
printf "\n"
}
print_header () {
printf "[v%4s] Wall(s)\tUsr(s)\tSys(s)\tRes(K)\tIn\tOut\n" \
${PERFTEST_VERSION}
}
time_run () {
printf "%-22s" "$1"
if test "$verbose" != "t"; then exec 4>test.output 3>&4; fi
if ! eval >&3 "/usr/bin/time -f '%e\t%U\t%S\t%M\t%I\t%O' $2" ; then
test_failure=$(($test_failure + 1))
fi
}
time_done () {
if [ "$test_failure" = "0" ]; then
rm -rf "$remove_tmp"
exit 0
else
exit 1
fi
}
cd -P "$test" || error "Cannot setup test environment"
test_failure=0