From: Jeff King <peff@peff.net> To: git@vger.kernel.org Cc: Junio C Hamano <gitster@pobox.com> Subject: [PATCH v2 08/15] t5310: factor out bitmap traversal comparison Date: Fri, 14 Feb 2020 13:22:25 -0500 [thread overview] Message-ID: <20200214182225.GH150965@coredump.intra.peff.net> (raw) In-Reply-To: <20200214182147.GA654525@coredump.intra.peff.net> We check the results of "rev-list --use-bitmap-index" by comparing it to the same traversal without the bitmap option. However, this is a little tricky to do because of some output differences (see the included comment for details). Let's pull this out into a helper function, since we'll be adding some similar tests. While we're at it, let's also try to confirm that the bitmap output did indeed use bitmaps. Since the code internally falls back to the non-bitmap path in some cases, the tests are at risk of becoming trivial noops. This is a bit fragile, as not all outputs will differ (e.g., looking at only the commits from a fully-bitmapped pack will end up exactly the same as the normal traversal order, since it also matches the pack order). So we'll provide an escape hatch by which tests can disable this check (which should only be used after manually confirming that bitmaps kicked in). Signed-off-by: Jeff King <peff@peff.net> --- t/t5310-pack-bitmaps.sh | 10 +++------- t/test-lib-functions.sh | 27 +++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/t/t5310-pack-bitmaps.sh b/t/t5310-pack-bitmaps.sh index 7ba7d294a5..b8645ae070 100755 --- a/t/t5310-pack-bitmaps.sh +++ b/t/t5310-pack-bitmaps.sh @@ -81,13 +81,9 @@ rev_list_tests() { ' test_expect_success "enumerate --objects ($state)" ' - git rev-list --objects --use-bitmap-index HEAD >tmp && - cut -d" " -f1 <tmp >tmp2 && - sort <tmp2 >actual && - git rev-list --objects HEAD >tmp && - cut -d" " -f1 <tmp >tmp2 && - sort <tmp2 >expect && - test_cmp expect actual + git rev-list --objects --use-bitmap-index HEAD >actual && + git rev-list --objects HEAD >expect && + test_bitmap_traversal expect actual ' test_expect_success "bitmap --objects handles non-commit objects ($state)" ' diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh index 284c52d076..352c213d52 100644 --- a/t/test-lib-functions.sh +++ b/t/test-lib-functions.sh @@ -1516,3 +1516,30 @@ test_set_port () { port=$(($port + ${GIT_TEST_STRESS_JOB_NR:-0})) eval $var=$port } + +# Compare a file containing rev-list bitmap traversal output to its non-bitmap +# counterpart. You can't just use test_cmp for this, because the two produce +# subtly different output: +# +# - regular output is in traversal order, whereas bitmap is split by type, +# with non-packed objects at the end +# +# - regular output has a space and the pathname appended to non-commit +# objects; bitmap output omits this +# +# This function normalizes and compares the two. The second file should +# always be the bitmap output. +test_bitmap_traversal () { + if test "$1" = "--no-confirm-bitmaps" + then + shift + elif cmp "$1" "$2" + then + echo >&2 "identical raw outputs; are you sure bitmaps were used?" + return 1 + fi && + cut -d' ' -f1 "$1" | sort >"$1.normalized" && + sort "$2" >"$2.normalized" && + test_cmp "$1.normalized" "$2.normalized" && + rm -f "$1.normalized" "$2.normalized" +} -- 2.25.0.796.gcc29325708
next prev parent reply other threads:[~2020-02-14 18:22 UTC|newest] Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-02-13 2:15 [PATCH 0/13] combining object filters and bitmaps Jeff King 2020-02-13 2:16 ` [PATCH 01/13] pack-bitmap: factor out type iterator initialization Jeff King 2020-02-13 17:45 ` Junio C Hamano 2020-02-13 2:16 ` [PATCH 02/13] pack-bitmap: fix leak of haves/wants object lists Jeff King 2020-02-13 18:12 ` Junio C Hamano 2020-02-13 2:17 ` [PATCH 03/13] rev-list: fallback to non-bitmap traversal when filtering Jeff King 2020-02-13 18:19 ` Junio C Hamano 2020-02-13 18:40 ` Jeff King 2020-02-13 2:17 ` [PATCH 04/13] rev-list: consolidate bitmap-disabling options Jeff King 2020-02-13 2:18 ` [PATCH 05/13] rev-list: factor out bitmap-optimized routines Jeff King 2020-02-13 18:34 ` Junio C Hamano 2020-02-13 2:19 ` [PATCH 06/13] rev-list: make --count work with --objects Jeff King 2020-02-13 19:14 ` Junio C Hamano 2020-02-13 20:27 ` Jeff King 2020-02-13 2:20 ` [PATCH 07/13] rev-list: allow bitmaps when counting objects Jeff King 2020-02-13 21:47 ` Junio C Hamano 2020-02-13 22:27 ` Jeff King 2020-02-13 2:20 ` [PATCH 08/13] pack-bitmap: basic noop bitmap filter infrastructure Jeff King 2020-02-13 2:21 ` [PATCH 09/13] rev-list: use bitmap filters for traversal Jeff King 2020-02-13 22:22 ` Junio C Hamano 2020-02-13 22:34 ` Jeff King 2020-02-13 2:21 ` [PATCH 10/13] bitmap: add bitmap_unset() function Jeff King 2020-02-13 2:23 ` [PATCH 11/13] pack-bitmap: implement BLOB_NONE filtering Jeff King 2020-02-13 2:25 ` [PATCH 12/13] pack-bitmap: implement BLOB_LIMIT filtering Jeff King 2020-02-13 23:17 ` Junio C Hamano 2020-02-13 2:25 ` [PATCH 13/13] pack-objects: support filters with bitmaps Jeff King 2020-02-14 18:21 ` [PATCH v2 0/15] combining object filters and bitmaps Jeff King 2020-02-14 18:22 ` [PATCH v2 01/15] pack-bitmap: factor out type iterator initialization Jeff King 2020-02-15 0:10 ` Taylor Blau 2020-02-14 18:22 ` [PATCH v2 02/15] pack-bitmap: fix leak of haves/wants object lists Jeff King 2020-02-15 0:15 ` Taylor Blau 2020-02-15 6:46 ` Jeff King 2020-02-18 17:58 ` Derrick Stolee 2020-02-18 20:02 ` Jeff King 2020-02-14 18:22 ` [PATCH v2 03/15] rev-list: fallback to non-bitmap traversal when filtering Jeff King 2020-02-15 0:22 ` Taylor Blau 2020-02-14 18:22 ` [PATCH v2 04/15] pack-bitmap: refuse to do a bitmap traversal with pathspecs Jeff King 2020-02-14 19:03 ` Junio C Hamano 2020-02-14 20:51 ` Jeff King 2020-02-14 18:22 ` [PATCH v2 05/15] rev-list: factor out bitmap-optimized routines Jeff King 2020-02-15 0:35 ` Taylor Blau 2020-02-14 18:22 ` [PATCH v2 06/15] rev-list: make --count work with --objects Jeff King 2020-02-15 0:42 ` Taylor Blau 2020-02-15 6:48 ` Jeff King 2020-02-16 23:34 ` Junio C Hamano 2020-02-18 5:24 ` Jeff King 2020-02-18 17:28 ` Junio C Hamano 2020-02-18 19:55 ` Jeff King 2020-02-18 21:19 ` Junio C Hamano 2020-02-18 21:23 ` Jeff King 2020-02-18 18:05 ` Derrick Stolee 2020-02-18 19:59 ` Jeff King 2020-02-14 18:22 ` [PATCH v2 07/15] rev-list: allow bitmaps when counting objects Jeff King 2020-02-15 0:45 ` Taylor Blau 2020-02-15 6:55 ` Jeff King 2020-02-16 23:36 ` Junio C Hamano 2020-02-14 18:22 ` Jeff King [this message] 2020-02-15 2:14 ` [PATCH v2 08/15] t5310: factor out bitmap traversal comparison Taylor Blau 2020-02-15 7:00 ` Jeff King 2020-02-14 18:22 ` [PATCH v2 09/15] rev-list: allow commit-only bitmap traversals Jeff King 2020-02-18 18:18 ` Derrick Stolee 2020-02-18 20:05 ` Jeff King 2020-02-18 20:11 ` Derrick Stolee 2020-02-14 18:22 ` [PATCH v2 10/15] pack-bitmap: basic noop bitmap filter infrastructure Jeff King 2020-02-14 18:22 ` [PATCH v2 11/15] rev-list: use bitmap filters for traversal Jeff King 2020-02-14 18:22 ` [PATCH v2 12/15] bitmap: add bitmap_unset() function Jeff King 2020-02-14 18:22 ` [PATCH v2 13/15] pack-bitmap: implement BLOB_NONE filtering Jeff King 2020-02-18 19:26 ` Derrick Stolee 2020-02-18 19:36 ` Derrick Stolee 2020-02-18 20:30 ` Jeff King 2020-02-18 20:24 ` Jeff King 2020-02-14 18:22 ` [PATCH v2 14/15] pack-bitmap: implement BLOB_LIMIT filtering Jeff King 2020-02-14 18:22 ` [PATCH v2 15/15] pack-objects: support filters with bitmaps Jeff King
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style List information: http://vger.kernel.org/majordomo-info.html * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20200214182225.GH150965@coredump.intra.peff.net \ --to=peff@peff.net \ --cc=git@vger.kernel.org \ --cc=gitster@pobox.com \ --subject='Re: [PATCH v2 08/15] t5310: factor out bitmap traversal comparison' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Code repositories for project(s) associated with this inbox: https://80x24.org/mirrors/git.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).