p1400: use `git-update-ref --stdin` to test multiple transactions

In commit 0a0fbbe3ff (refs: remove lookup cache for reference-transaction hook, 2020-08-25), a new benchmark was added to p1400 which has the intention to exercise creation of multiple transactions in a single process. As git-update-ref wasn't yet able to create multiple transactions with a single run we instead used git-push. As its non-atomic version creates a transaction per reference update, this was the best approximation we could make at that point in time. Now that `git-update-ref --stdin` supports creation of multiple transactions, let's convert the benchmark to use that instead. It has less overhead and it's also a lot clearer what the actual intention is. Signed-off-by: Patrick Steinhardt <ps@pks.im> Reviewed-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Patrick Steinhardt committed Nov 13, 2020 at 09:12 UTC 21020430a4a08d2e31c1c6825e53f194569c706c
1 file changed +7 -13
t/perf/p1400-update-ref.sh
+7 -13
@@ -7,13 +7,14 @@ test_description="Tests performance of update-ref"
7 test_perf_fresh_repo
8
9 test_expect_success "setup" '
10 - git init --bare target-repo.git &&
10 test_commit PRE &&
11 test_commit POST &&
13 - printf "create refs/heads/%d PRE\n" $(test_seq 1000) >create &&
14 - printf "update refs/heads/%d POST PRE\n" $(test_seq 1000) >update &&
15 - printf "delete refs/heads/%d POST\n" $(test_seq 1000) >delete &&
16 - git update-ref --stdin <create
12 + for i in $(test_seq 5000)
13 + do
14 + printf "start\ncreate refs/heads/%d PRE\ncommit\n" $i &&
15 + printf "start\nupdate refs/heads/%d POST PRE\ncommit\n" $i &&
16 + printf "start\ndelete refs/heads/%d POST\ncommit\n" $i
17 + done >instructions
18 '
19
20 test_perf "update-ref" '
@@ -26,14 +27,7 @@ test_perf "update-ref" '
27 '
28
29 test_perf "update-ref --stdin" '
29 - git update-ref --stdin <update &&
30 - git update-ref --stdin <delete &&
31 - git update-ref --stdin <create
32 -'
33 -
34 -test_perf "nonatomic push" '
35 - git push ./target-repo.git $(test_seq 1000) &&
36 - git push --delete ./target-repo.git $(test_seq 1000)
30 + git update-ref --stdin <instructions >/dev/null
31 '
32
33 test_done