Subject: Re: [PATCH] perf-lib: remove old result files before running tests

From: Thomas Gummerer <[email-masked]>
Date: Wed, 20 Nov 2019 08:00:03 +0000

On 11/20, Junio C Hamano wrote:
> Thomas Gummerer <[email-masked]> writes:
> 
> > @@ -178,10 +178,11 @@ test_wrapper_ () {
> >  	export test_prereq
> >  	if ! test_skip "$@"
> >  	then
> 
> > -		base=$(basename "$0" .sh)
> 
> So we used to use $base to hold the number and the filename here
> 
> > -		echo "$test_count" >>"$perf_results_dir"/$base.subtests
> > -		echo "$1" >"$perf_results_dir"/$base.$test_count.descr
> >  		base="$perf_results_dir"/"$PERF_RESULTS_PREFIX$(basename "$0" .sh)"."$test_count"
> 
> and then redefined it to be the results-prefix specific one.
> 
> 
> > +		rm -f "$base".*
> 
> you now remove those results-prefix specific one for the $test_count
> (I guess that is as specific you can go) before writing the count
> and the description.  
> 
> So this "rm -f" is a no-op when perf-results-prefix is not empty?

No, not quite.  It is a no-op the first time a particular test runs
for a specific prefix.  The prefix is usually set by the 't/perf/run'
script, and indicates the revision that is tested.

So if we were running for example

    ./run deadbeef... p0001-rev-list.sh

we'd have a file 'test-results/build_deadbeef....p0001-rev-list.1.times' 
in the t/perf directory.

Now we add a 'test_size' test before the first 'test_perf' test, and
run the tests again.  After this run we'd still have that original
file from the test results from the previous run, as well as a
'test-results/build_deadbeef....p0001-rev-list.1.size'.

This duplicate file at the matching "$base" is what we want to avoid.
The "rm -f" above would remove
'test-results/build_deadbeef....p0001-rev-list.1.times' so we now only
have the '.size' file left, and 'aggregate.perl' gives us the right
result.

> > +		no_prefix_base="$perf_results_dir"/$(basename "$0" .sh)
> > +		echo "$test_count" >>$no_prefix_base.subtests
> > +		echo "$1" >$no_prefix_base.$test_count.descr
> >  		"$test_wrapper_func_" "$@"
> >  	fi