t5326: extract `test_rev_exists`

To determine which source of data is used for the MIDX's reverse index cache, introduce a helper which forces loading the reverse index, and then looks for the special trace2 event introduced in a previous commit. For now, this helper just looks for when the legacy MIDX .rev file was loaded, but in a subsequent commit will become parameterized over the the reverse index's source. This function replaces checking for the existence of the .rev file. We could write a similar helper to ensure that the .rev file is cleaned up after repacking, but it will make subsequent tests more difficult to write, and provides marginal value since we already check that the MIDX .bitmap file is removed. Signed-off-by: Taylor Blau <me@ttaylorr.com> Reviewed-by: Derrick Stolee <dstolee@microsoft.com> Reviewed-by: Jonathan Tan <jonathantanmy@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Taylor Blau committed Jan 25, 2022 at 17:41 UTC f0ed59afcce8e71efe7b7b32b66e6e896455bb1d
1 file changed +22 -15
t/t5326-multi-pack-bitmaps.sh
+22 -15
@@ -17,16 +17,29 @@ midx_pack_source () {
17 test-tool read-midx --show-objects .git/objects | grep "^$1 " | cut -f2
18 }
19
20 +test_rev_exists () {
21 + commit="$1"
22 +
23 + test_expect_success 'reverse index exists' '
24 + GIT_TRACE2_EVENT=$(pwd)/event.trace \
25 + git rev-list --test-bitmap "$commit" &&
26 +
27 + test_path_is_file $midx-$(midx_checksum $objdir).rev &&
28 + grep "\"category\":\"load_midx_revindex\",\"key\":\"source\",\"value\":\"rev\"" event.trace
29 + '
30 +}
31 +
32 setup_bitmap_history
33
34 test_expect_success 'create single-pack midx with bitmaps' '
35 git repack -ad &&
36 git multi-pack-index write --bitmap &&
37 test_path_is_file $midx &&
26 - test_path_is_file $midx-$(midx_checksum $objdir).bitmap &&
27 - test_path_is_file $midx-$(midx_checksum $objdir).rev
38 + test_path_is_file $midx-$(midx_checksum $objdir).bitmap
39 '
40
41 +test_rev_exists HEAD
42 +
43 basic_bitmap_tests
44
45 test_expect_success 'create new additional packs' '
@@ -52,10 +65,11 @@ test_expect_success 'create multi-pack midx with bitmaps' '
65 test_line_count = 25 packs &&
66
67 test_path_is_file $midx &&
55 - test_path_is_file $midx-$(midx_checksum $objdir).bitmap &&
56 - test_path_is_file $midx-$(midx_checksum $objdir).rev
68 + test_path_is_file $midx-$(midx_checksum $objdir).bitmap
69 '
70
71 +test_rev_exists HEAD
72 +
73 basic_bitmap_tests
74
75 test_expect_success '--no-bitmap is respected when bitmaps exist' '
@@ -66,7 +80,6 @@ test_expect_success '--no-bitmap is respected when bitmaps exist' '
80
81 test_path_is_file $midx &&
82 test_path_is_file $midx-$(midx_checksum $objdir).bitmap &&
69 - test_path_is_file $midx-$(midx_checksum $objdir).rev &&
83
84 git multi-pack-index write --no-bitmap &&
85
@@ -206,10 +219,11 @@ test_expect_success 'setup partial bitmaps' '
219 test_commit loose &&
220 git multi-pack-index write --bitmap 2>err &&
221 test_path_is_file $midx &&
209 - test_path_is_file $midx-$(midx_checksum $objdir).bitmap &&
210 - test_path_is_file $midx-$(midx_checksum $objdir).rev
222 + test_path_is_file $midx-$(midx_checksum $objdir).bitmap
223 '
224
225 +test_rev_exists HEAD~
226 +
227 basic_bitmap_tests HEAD~
228
229 test_expect_success 'removing a MIDX clears stale bitmaps' '
@@ -224,7 +238,6 @@ test_expect_success 'removing a MIDX clears stale bitmaps' '
238
239 # Write a MIDX and bitmap; remove the MIDX but leave the bitmap.
240 stale_bitmap=$midx-$(midx_checksum $objdir).bitmap &&
227 - stale_rev=$midx-$(midx_checksum $objdir).rev &&
241 rm $midx &&
242
243 # Then write a new MIDX.
@@ -234,9 +247,7 @@ test_expect_success 'removing a MIDX clears stale bitmaps' '
247
248 test_path_is_file $midx &&
249 test_path_is_file $midx-$(midx_checksum $objdir).bitmap &&
237 - test_path_is_file $midx-$(midx_checksum $objdir).rev &&
238 - test_path_is_missing $stale_bitmap &&
239 - test_path_is_missing $stale_rev
250 + test_path_is_missing $stale_bitmap
251 )
252 '
253
@@ -257,7 +268,6 @@ test_expect_success 'pack.preferBitmapTips' '
268 git multi-pack-index write --bitmap &&
269 test_path_is_file $midx &&
270 test_path_is_file $midx-$(midx_checksum $objdir).bitmap &&
260 - test_path_is_file $midx-$(midx_checksum $objdir).rev &&
271
272 test-tool bitmap list-commits | sort >bitmaps &&
273 comm -13 bitmaps commits >before &&
@@ -267,7 +277,6 @@ test_expect_success 'pack.preferBitmapTips' '
277 <before | git update-ref --stdin &&
278
279 rm -fr $midx-$(midx_checksum $objdir).bitmap &&
270 - rm -fr $midx-$(midx_checksum $objdir).rev &&
280 rm -fr $midx &&
281
282 git -c pack.preferBitmapTips=refs/tags/include \
@@ -305,7 +314,6 @@ test_expect_success 'writing a bitmap with --refs-snapshot' '
314 grep "$(git rev-parse two)" bitmaps &&
315
316 rm -fr $midx-$(midx_checksum $objdir).bitmap &&
308 - rm -fr $midx-$(midx_checksum $objdir).rev &&
317 rm -fr $midx &&
318
319 # Then again, but with a refs snapshot which only sees
@@ -350,7 +358,6 @@ test_expect_success 'write a bitmap with --refs-snapshot (preferred tips)' '
358 ) >snapshot &&
359
360 rm -fr $midx-$(midx_checksum $objdir).bitmap &&
353 - rm -fr $midx-$(midx_checksum $objdir).rev &&
361 rm -fr $midx &&
362
363 git multi-pack-index write --bitmap --refs-snapshot=snapshot &&