mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-22 02:48:08 +01:00
perf-test: add option to run perf
Although the generation of perf data is not as slow as valgrind, it seems simplest to re-use the machinery already there to save the logs in a timestamped subdirectory.
This commit is contained in:
parent
9e2e723881
commit
6a20478abb
2 changed files with 45 additions and 5 deletions
|
@ -16,6 +16,7 @@ In addition to having notmuch, you need:
|
|||
- xz. Some speedup can be gotten by installing "pixz", but this is
|
||||
probably only worthwhile if you are debugging the tests.
|
||||
- valgrind (for the memory tests)
|
||||
- perf (optional, for more fine-grained timing)
|
||||
|
||||
Getting set up to run tests:
|
||||
----------------------------
|
||||
|
@ -57,10 +58,23 @@ supports the following arguments
|
|||
--small / --medium / --large Choose corpus size.
|
||||
--debug Enable debugging. In particular don't delete
|
||||
temporary directories.
|
||||
--perf Run perf record in place of /usr/bin/time. Perf output can be
|
||||
found in a log directory.
|
||||
--call-graph {fp,lbr,dwarf} Call graph option for perf record. Default is 'lbr'.
|
||||
|
||||
When using the make targets, you can pass arguments to all test
|
||||
scripts by defining the make variable OPTIONS.
|
||||
|
||||
Log Directory
|
||||
-------------
|
||||
|
||||
The memory tests, and the time tests when option '--perf' is given
|
||||
save their output in a directory named as follows
|
||||
|
||||
log.$test_name-$corpus_size-$timestamp
|
||||
|
||||
These directories are removed by "make clean".
|
||||
|
||||
Writing tests
|
||||
-------------
|
||||
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
. $(dirname "$0")/version.sh || exit 1
|
||||
|
||||
debug=""
|
||||
corpus_size=large
|
||||
perf_callgraph=lbr
|
||||
use_perf=0
|
||||
|
||||
while test "$#" -ne 0
|
||||
do
|
||||
|
@ -9,6 +12,15 @@ do
|
|||
debug=t;
|
||||
shift
|
||||
;;
|
||||
-p|--perf)
|
||||
use_perf=1;
|
||||
shift
|
||||
;;
|
||||
-c|--call-graph)
|
||||
shift
|
||||
perf_callgraph=$1
|
||||
shift
|
||||
;;
|
||||
-s|--small)
|
||||
corpus_size=small;
|
||||
shift
|
||||
|
@ -127,10 +139,20 @@ notmuch_new_with_cache ()
|
|||
fi
|
||||
}
|
||||
|
||||
make_log_dir () {
|
||||
local timestamp=$(date +%Y%m%dT%H%M%S)
|
||||
log_dir=${TEST_DIRECTORY}/log.$(basename $0)-$corpus_size-${timestamp}
|
||||
mkdir -p "${log_dir}"
|
||||
}
|
||||
|
||||
time_start ()
|
||||
{
|
||||
add_email_corpus
|
||||
|
||||
if [[ "$use_perf" = 1 ]]; then
|
||||
make_log_dir
|
||||
fi
|
||||
|
||||
print_header
|
||||
|
||||
notmuch_new_with_cache time_run
|
||||
|
@ -140,9 +162,7 @@ memory_start ()
|
|||
{
|
||||
add_email_corpus
|
||||
|
||||
local timestamp=$(date +%Y%m%dT%H%M%S)
|
||||
log_dir="${TEST_DIRECTORY}/log.$(basename $0)-$corpus_size-${timestamp}"
|
||||
mkdir -p ${log_dir}
|
||||
make_log_dir
|
||||
|
||||
notmuch_new_with_cache memory_run
|
||||
}
|
||||
|
@ -193,7 +213,13 @@ time_run ()
|
|||
printf " %-22s" "$1"
|
||||
test_count=$(($test_count+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/%O' $2" ; then
|
||||
if [[ "$use_perf" = 1 ]]; then
|
||||
command_str="perf record --call-graph=${perf_callgraph} -o ${log_dir}/${test_count}.perf $2"
|
||||
else
|
||||
command_str="/usr/bin/time -f '%e\t%U\t%S\t%M\t%I/%O' $2"
|
||||
fi
|
||||
|
||||
if ! eval >&3 "$command_str" ; then
|
||||
test_failure=$(($test_failure + 1))
|
||||
return 1
|
||||
fi
|
||||
|
|
Loading…
Reference in a new issue