Tests that affect the repo in stateful ways are easier to write if we can run setup steps outside of the measured portion of perf iteration. This change adds a "--setup 'setup-script'" parameter to test_perf. To make invocations easier to understand, I also moved the prerequisites to a new --prereq parameter. The setup facility will be used in the upcoming perf tests for batch mode, but it already helps in some existing tests, like t5302 and t7820. Signed-off-by: Neeraj Singh <neerajsi@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
		
			
				
	
	
		
			51 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/sh
 | 
						|
 | 
						|
test_description="Tests index-pack performance"
 | 
						|
 | 
						|
. ./perf-lib.sh
 | 
						|
 | 
						|
test_perf_large_repo
 | 
						|
 | 
						|
test_expect_success 'repack' '
 | 
						|
	git repack -ad &&
 | 
						|
	PACK=$(ls .git/objects/pack/*.pack | head -n1) &&
 | 
						|
	test -f "$PACK" &&
 | 
						|
	export PACK
 | 
						|
'
 | 
						|
 | 
						|
# Rather than counting up and doubling each time, count down from the endpoint,
 | 
						|
# halving each time. That ensures that our final test uses as many threads as
 | 
						|
# CPUs, even if it isn't a power of 2.
 | 
						|
test_expect_success 'set up thread-counting tests' '
 | 
						|
	t=$(test-tool online-cpus) &&
 | 
						|
	threads= &&
 | 
						|
	while test $t -gt 0
 | 
						|
	do
 | 
						|
		threads="$t $threads" &&
 | 
						|
		t=$((t / 2)) || return 1
 | 
						|
	done
 | 
						|
'
 | 
						|
 | 
						|
test_perf 'index-pack 0 threads' --prereq PERF_EXTRA \
 | 
						|
	--setup 'rm -rf repo.git && git init --bare repo.git' '
 | 
						|
	GIT_DIR=repo.git git index-pack --threads=1 --stdin < $PACK
 | 
						|
'
 | 
						|
 | 
						|
for t in $threads
 | 
						|
do
 | 
						|
	THREADS=$t
 | 
						|
	export THREADS
 | 
						|
	test_perf "index-pack $t threads" --prereq PERF_EXTRA \
 | 
						|
		--setup 'rm -rf repo.git && git init --bare repo.git' '
 | 
						|
		GIT_DIR=repo.git GIT_FORCE_THREADS=1 \
 | 
						|
		git index-pack --threads=$THREADS --stdin <$PACK
 | 
						|
	'
 | 
						|
done
 | 
						|
 | 
						|
test_perf 'index-pack default number of threads' \
 | 
						|
	--setup 'rm -rf repo.git && git init --bare repo.git' '
 | 
						|
	GIT_DIR=repo.git git index-pack --stdin < $PACK
 | 
						|
'
 | 
						|
 | 
						|
test_done
 |