p5551: add a script to test fetch pack-dir rescans
authorJeff King <redacted>
Mon, 20 Nov 2017 20:28:28 +0000 (15:28 -0500)
committerJunio C Hamano <redacted>
Tue, 21 Nov 2017 02:08:20 +0000 (11:08 +0900)
commit7893bf1720d853a8d123cf74c1c3ff43c2eb6011
tree89d885e54ee2d9b159fda893e0f7539da1bbdf39
parent0a11e40275b445fcc959a0dc05f8d73a5a9cbf36
p5551: add a script to test fetch pack-dir rescans

Since fetch often deals with object-ids we don't have (yet),
it's an easy mistake for it to use a function like
parse_object() that gives the correct result (e.g., NULL)
but does so very slowly (because after failing to find the
object, we re-scan the pack directory looking for new
packs).

The regular test suite won't catch this because the end
result is correct, but we would want to know about
performance regressions, too. Let's add a test to the
regression suite.

Note that this uses a synthetic repository that has a large
number of packs. That's not ideal, as it means we're not
testing what "normal" users see (in fact, some of these
problems have existed for ages without anybody noticing
simply because a rescan on a normal repository just isn't
that expensive).

So what we're really looking for here is the spike you'd
notice in a pathological case (a lot of unknown objects
coming into a repo with a lot of packs). If that's fast,
then the normal cases should be, too.

Note that the test also makes liberal use of $MODERN_GIT for
setup; some of these regressions go back a ways, and we
should be able to use it to find the problems there.

Signed-off-by: Jeff King <redacted>
Signed-off-by: Junio C Hamano <redacted>
t/perf/p5551-fetch-rescan.sh [new file with mode: 0755]
git clone https://git.99rst.org/PROJECT