diff options
author | David Bremner <bremner@debian.org> | 2012-11-17 12:28:15 -0400 |
---|---|---|
committer | David Bremner <bremner@debian.org> | 2012-11-26 08:39:21 -0400 |
commit | 7beeb8c88a014ecbc53d8241f10683b3c4c16228 (patch) | |
tree | ccd4592417e741447cf97904bab1fd8888f78948 /performance-test/perf-test-lib.sh | |
parent | 20b7e0ff2f12e612dee00efc6ff1634aae8172a4 (diff) |
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
Diffstat (limited to 'performance-test/perf-test-lib.sh')
-rw-r--r-- | performance-test/perf-test-lib.sh | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/performance-test/perf-test-lib.sh b/performance-test/perf-test-lib.sh new file mode 100644 index 00000000..80ec1eb0 --- /dev/null +++ b/performance-test/perf-test-lib.sh @@ -0,0 +1,67 @@ +. ./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 |