aboutsummaryrefslogtreecommitdiffstats
path: root/t/unit-tests/u-reftable-stack.c
diff options
context:
space:
mode:
authorKarthik Nayak <karthik.188@gmail.com>2025-11-06 09:22:31 +0100
committerJunio C Hamano <gitster@pobox.com>2025-11-06 10:00:07 -0800
commit3a28fbcabf33cedc28cd7c9ea8af8d3cd50e4839 (patch)
treef06138a2c82ad9f0b507e3d9806c9d5d14d495af /t/unit-tests/u-reftable-stack.c
parentreftable/stack: return stack segments directly (diff)
downloadgit-3a28fbcabf33cedc28cd7c9ea8af8d3cd50e4839.tar.gz
git-3a28fbcabf33cedc28cd7c9ea8af8d3cd50e4839.zip
reftable/stack: add function to check if optimization is required
The reftable backend performs auto-compaction as part of its regular flow, which is required to keep the number of tables part of a stack at bay. This allows it to stay optimized. Compaction can also be triggered voluntarily by the user via the 'git pack-refs' or the 'git refs optimize' command. However, currently there is no way for the user to check if optimization is required without actually performing it. Extract out the heuristics logic from 'reftable_stack_auto_compact()' into an internal function 'update_segment_if_compaction_required()'. Then use this to add and expose `reftable_stack_compaction_required()` which will allow users to check if the reftable backend can be optimized. Signed-off-by: Karthik Nayak <karthik.188@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to '')
-rw-r--r--t/unit-tests/u-reftable-stack.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/t/unit-tests/u-reftable-stack.c b/t/unit-tests/u-reftable-stack.c
index a8b91812e8..b8110cdeee 100644
--- a/t/unit-tests/u-reftable-stack.c
+++ b/t/unit-tests/u-reftable-stack.c
@@ -1067,6 +1067,7 @@ void test_reftable_stack__add_performs_auto_compaction(void)
.value_type = REFTABLE_REF_SYMREF,
.value.symref = (char *) "master",
};
+ bool required = false;
char buf[128];
/*
@@ -1087,10 +1088,17 @@ void test_reftable_stack__add_performs_auto_compaction(void)
* auto compaction is disabled. When enabled, we should merge
* all tables in the stack.
*/
- if (i != n)
+ cl_assert_equal_i(reftable_stack_compaction_required(st, true, &required), 0);
+ if (i != n) {
cl_assert_equal_i(st->merged->tables_len, i + 1);
- else
+ if (i < 1)
+ cl_assert_equal_b(required, false);
+ else
+ cl_assert_equal_b(required, true);
+ } else {
cl_assert_equal_i(st->merged->tables_len, 1);
+ cl_assert_equal_b(required, false);
+ }
}
reftable_stack_destroy(st);