t/perf: measure --force-with-lease in p5516

Extend p5516 with rows that push the same delete refspecs plus one
explicit --force-with-lease=<refname>:<expect> per refspec.

The new rows are used to demonstrate a speedup in a subsequent commit.

Numbers as of this commit
(`./p5516-push-delete-refspec.sh -r create,lease`):

  Test                        this tree
  -------------------------------------------
  5516.16: empty:lease:1      0.12(0.06+0.10)
  5516.19: empty:lease:10     0.17(0.10+0.10)
  5516.22: empty:lease:100    0.45(0.38+0.10)
  5516.25: mirror:lease:1     0.15(0.09+0.10)
  5516.28: mirror:lease:10    0.18(0.12+0.10)
  5516.31: mirror:lease:100   0.52(0.42+0.10)

Signed-off-by: Jon Simons <jon@jonsimons.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
seen
Jon Simons 2026-10-09 15:29:51 -04:00 committed by Junio C Hamano
parent d2634888cc
commit fa869359ee
1 changed files with 25 additions and 0 deletions

View File

@ -6,6 +6,9 @@ Measure client-side matching of explicit delete refspecs with "git push
--dry-run" against a server that advertises lots of refs. An empty client
(no local refs) and a mirror client (full local copy of the server refs)
are tested pushing 1, 10, and 100 refspecs each.

A second set of rows measures one --force-with-lease per refspec for
timing those paths.
'
. ./perf-lib.sh

@ -24,6 +27,8 @@ test_expect_success 'create server with many refs and two clients' '
git -C client_mirror config --unset remote.origin.mirror
'

oid=$(git -C server rev-parse HEAD)

for mode in empty mirror
do
client=client_$mode
@ -39,4 +44,24 @@ do
done
done

for mode in empty mirror
do
client=client_$mode
for nr_refspecs in 1 10 100
do
test_expect_success "create $mode lease refspecs: $nr_refspecs" '
test_seq -f ":refs/heads/b%d" $nr_refspecs >refspecs
'

test_expect_success "create $mode leases: $nr_refspecs" '
test_seq -f "refs/heads/b%d:'"$oid"'" $nr_refspecs |
sed "s/^/--force-with-lease=/" >leases
'

test_perf "$mode:lease:$nr_refspecs" '
git -C '"$client"' push --dry-run origin $(cat refspecs) $(cat leases)
'
done
done

test_done