From: Abhradeep Chakraborty <chakrabortyabhradeep79@xxxxxxxxx> Add performance tests for bitmap lookup table extension. Mentored-by: Taylor Blau <ttaylorr@xxxxxxxxxx> Co-mentored-by: Kaartic Sivaraam <kaartic.sivaraam@xxxxxxxxx> Signed-off-by: Abhradeep Chakraborty <chakrabortyabhradeep79@xxxxxxxxx> --- t/perf/p5310-pack-bitmaps.sh | 60 +++++++++++++++++++----------- t/perf/p5326-multi-pack-bitmaps.sh | 55 +++++++++++++++++---------- 2 files changed, 73 insertions(+), 42 deletions(-) diff --git a/t/perf/p5310-pack-bitmaps.sh b/t/perf/p5310-pack-bitmaps.sh index 7ad4f237bc3..a8d9414de92 100755 --- a/t/perf/p5310-pack-bitmaps.sh +++ b/t/perf/p5310-pack-bitmaps.sh @@ -10,10 +10,11 @@ test_perf_large_repo # since we want to be able to compare bitmap-aware # git versus non-bitmap git # -# We intentionally use the deprecated pack.writebitmaps +# We intentionally use the deprecated pack.writeBitmaps # config so that we can test against older versions of git. test_expect_success 'setup bitmap config' ' - git config pack.writebitmaps true + git config pack.writeBitmaps true && + git config pack.writeReverseIndex true ' # we need to create the tag up front such that it is covered by the repack and @@ -28,27 +29,42 @@ test_perf 'repack to disk' ' test_full_bitmap -test_expect_success 'create partial bitmap state' ' - # pick a commit to represent the repo tip in the past - cutoff=$(git rev-list HEAD~100 -1) && - orig_tip=$(git rev-parse HEAD) && - - # now kill off all of the refs and pretend we had - # just the one tip - rm -rf .git/logs .git/refs/* .git/packed-refs && - git update-ref HEAD $cutoff && - - # and then repack, which will leave us with a nice - # big bitmap pack of the "old" history, and all of - # the new history will be loose, as if it had been pushed - # up incrementally and exploded via unpack-objects - git repack -Ad && - - # and now restore our original tip, as if the pushes - # had happened - git update-ref HEAD $orig_tip +test_perf 'use lookup table' ' + git config pack.writeBitmapLookupTable true ' -test_partial_bitmap +test_perf 'repack to disk (lookup table)' ' + git repack -adb +' + +test_full_bitmap + +for i in false true +do + $i && lookup=" (lookup table)" + test_expect_success "create partial bitmap state$lookup" ' + git config pack.writeBitmapLookupTable '"$i"' && + # pick a commit to represent the repo tip in the past + cutoff=$(git rev-list HEAD~100 -1) && + orig_tip=$(git rev-parse HEAD) && + + # now kill off all of the refs and pretend we had + # just the one tip + rm -rf .git/logs .git/refs/* .git/packed-refs && + git update-ref HEAD $cutoff && + + # and then repack, which will leave us with a nice + # big bitmap pack of the "old" history, and all of + # the new history will be loose, as if it had been pushed + # up incrementally and exploded via unpack-objects + git repack -Ad && + + # and now restore our original tip, as if the pushes + # had happened + git update-ref HEAD $orig_tip + ' + + test_partial_bitmap +done test_done diff --git a/t/perf/p5326-multi-pack-bitmaps.sh b/t/perf/p5326-multi-pack-bitmaps.sh index f2fa228f16a..9001eb4533e 100755 --- a/t/perf/p5326-multi-pack-bitmaps.sh +++ b/t/perf/p5326-multi-pack-bitmaps.sh @@ -26,27 +26,42 @@ test_expect_success 'drop pack bitmap' ' test_full_bitmap -test_expect_success 'create partial bitmap state' ' - # pick a commit to represent the repo tip in the past - cutoff=$(git rev-list HEAD~100 -1) && - orig_tip=$(git rev-parse HEAD) && - - # now pretend we have just one tip - rm -rf .git/logs .git/refs/* .git/packed-refs && - git update-ref HEAD $cutoff && - - # and then repack, which will leave us with a nice - # big bitmap pack of the "old" history, and all of - # the new history will be loose, as if it had been pushed - # up incrementally and exploded via unpack-objects - git repack -Ad && - git multi-pack-index write --bitmap && - - # and now restore our original tip, as if the pushes - # had happened - git update-ref HEAD $orig_tip +test_expect_success 'use lookup table' ' + git config pack.writeBitmapLookupTable true ' -test_partial_bitmap +test_perf 'setup multi-pack-index (lookup table)' ' + git multi-pack-index write --bitmap +' + +test_full_bitmap + +for i in false true +do + $i && lookup=" (lookup table)" + test_expect_success "create partial bitmap state$lookup" ' + git config pack.writeBitmapLookupTable '"$i"' && + # pick a commit to represent the repo tip in the past + cutoff=$(git rev-list HEAD~100 -1) && + orig_tip=$(git rev-parse HEAD) && + + # now pretend we have just one tip + rm -rf .git/logs .git/refs/* .git/packed-refs && + git update-ref HEAD $cutoff && + + # and then repack, which will leave us with a nice + # big bitmap pack of the "old" history, and all of + # the new history will be loose, as if it had been pushed + # up incrementally and exploded via unpack-objects + git repack -Ad && + git multi-pack-index write --bitmap && + + # and now restore our original tip, as if the pushes + # had happened + git update-ref HEAD $orig_tip + ' + + test_partial_bitmap +done test_done -- gitgitgadget