From: Lidong Yan Date: Sat, 12 Jul 2025 09:35:13 +0000 (+0800) Subject: bloom: add test helper to return murmur3 hash X-Git-Tag: v2.51.0-rc0~45^2~4 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4ca70179020b6a33bb5334302e7c79faf7eeaf52;p=thirdparty%2Fgit.git bloom: add test helper to return murmur3 hash In bloom.h, murmur3_seeded_v2() is exported for the use of test murmur3 hash. To clarify that murmur3_seeded_v2() is exported solely for testing purposes, a new helper function test_murmur3_seeded() was added instead of exporting murmur3_seeded_v2() directly. Signed-off-by: Lidong Yan <502024330056@smail.nju.edu.cn> Signed-off-by: Junio C Hamano --- diff --git a/bloom.c b/bloom.c index 0c8d2cebf9..946c5e8c98 100644 --- a/bloom.c +++ b/bloom.c @@ -107,7 +107,7 @@ int load_bloom_filter_from_graph(struct commit_graph *g, * Not considered to be cryptographically secure. * Implemented as described in https://en.wikipedia.org/wiki/MurmurHash#Algorithm */ -uint32_t murmur3_seeded_v2(uint32_t seed, const char *data, size_t len) +static uint32_t murmur3_seeded_v2(uint32_t seed, const char *data, size_t len) { const uint32_t c1 = 0xcc9e2d51; const uint32_t c2 = 0x1b873593; @@ -540,3 +540,14 @@ int bloom_filter_contains(const struct bloom_filter *filter, return 1; } + +uint32_t test_bloom_murmur3_seeded(uint32_t seed, const char *data, size_t len, + int version) +{ + assert(version == 1 || version == 2); + + if (version == 2) + return murmur3_seeded_v2(seed, data, len); + else + return murmur3_seeded_v1(seed, data, len); +} diff --git a/bloom.h b/bloom.h index 6e46489a20..a9ded1822f 100644 --- a/bloom.h +++ b/bloom.h @@ -78,15 +78,6 @@ int load_bloom_filter_from_graph(struct commit_graph *g, struct bloom_filter *filter, uint32_t graph_pos); -/* - * Calculate the murmur3 32-bit hash value for the given data - * using the given seed. - * Produces a uniformly distributed hash value. - * Not considered to be cryptographically secure. - * Implemented as described in https://en.wikipedia.org/wiki/MurmurHash#Algorithm - */ -uint32_t murmur3_seeded_v2(uint32_t seed, const char *data, size_t len); - void fill_bloom_key(const char *data, size_t len, struct bloom_key *key, @@ -137,4 +128,7 @@ int bloom_filter_contains(const struct bloom_filter *filter, const struct bloom_key *key, const struct bloom_filter_settings *settings); +uint32_t test_bloom_murmur3_seeded(uint32_t seed, const char *data, size_t len, + int version); + #endif diff --git a/t/helper/test-bloom.c b/t/helper/test-bloom.c index 9aa2c5a592..6a24b6e0a6 100644 --- a/t/helper/test-bloom.c +++ b/t/helper/test-bloom.c @@ -61,13 +61,13 @@ int cmd__bloom(int argc, const char **argv) uint32_t hashed; if (argc < 3) usage(bloom_usage); - hashed = murmur3_seeded_v2(0, argv[2], strlen(argv[2])); + hashed = test_bloom_murmur3_seeded(0, argv[2], strlen(argv[2]), 2); printf("Murmur3 Hash with seed=0:0x%08x\n", hashed); } if (!strcmp(argv[1], "get_murmur3_seven_highbit")) { uint32_t hashed; - hashed = murmur3_seeded_v2(0, "\x99\xaa\xbb\xcc\xdd\xee\xff", 7); + hashed = test_bloom_murmur3_seeded(0, "\x99\xaa\xbb\xcc\xdd\xee\xff", 7, 2); printf("Murmur3 Hash with seed=0:0x%08x\n", hashed); }