#!/bin/sh
#
# This test measures the performance of various read-tree
# and checkout operations.  It is primarily interested in
# the algorithmic costs of index operations and recursive
# tree traversal -- and NOT disk I/O on thousands of files.

test_description="Tests performance of read-tree"

. ./perf-lib.sh

test_perf_default_repo

# If the test repo was generated by ./repos/many-files.sh
# then we know something about the data shape and branches,
# so we can isolate testing to the ballast-related commits
# and setup sparse-checkout so we don't have to populate
# the ballast files and directories.
#
# Otherwise, we make some general assumptions about the
# repo and consider the entire history of the current
# branch to be the ballast.

test_expect_success "setup repo" '
	if git rev-parse --verify refs/heads/p0006-ballast^{commit}
	then
		echo Assuming synthetic repo from many-files.sh &&
		git branch br_base            master &&
		git branch br_ballast         p0006-ballast^ &&
		git branch br_ballast_alias   p0006-ballast^ &&
		git branch br_ballast_plus_1  p0006-ballast &&
		git config --local core.sparsecheckout 1 &&
		cat >.git/info/sparse-checkout <<-EOF
		/*
		!ballast/*
		EOF
	else
		echo Assuming non-synthetic repo... &&
		git branch br_base            $(git rev-list HEAD | tail -n 1) &&
		git branch br_ballast         HEAD^ || error "no ancestor commit from current head" &&
		git branch br_ballast_alias   HEAD^ &&
		git branch br_ballast_plus_1  HEAD
	fi &&
	git checkout -q br_ballast &&
	nr_files=$(git ls-files | wc -l)
'

test_perf "read-tree br_base br_ballast ($nr_files)" '
	git read-tree -n -m br_base br_ballast
'

test_perf "read-tree br_ballast_plus_1 ($nr_files)" '
	# Run read-tree 100 times for clearer performance results & comparisons
	for i in  $(test_seq 100)
	do
		git read-tree -n -m br_ballast_plus_1 || return 1
	done
'

test_perf "switch between br_base br_ballast ($nr_files)" '
	git checkout -q br_base &&
	git checkout -q br_ballast
'

test_perf "switch between br_ballast br_ballast_plus_1 ($nr_files)" '
	git checkout -q br_ballast_plus_1 &&
	git checkout -q br_ballast
'

test_perf "switch between aliases ($nr_files)" '
	git checkout -q br_ballast_alias &&
	git checkout -q br_ballast
'

test_done
