diff options
| author | Lidong Yan <yldhome2d2@gmail.com> | 2025-07-12 17:35:13 +0800 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2025-07-14 10:03:02 -0700 |
| commit | 4ca70179020b6a33bb5334302e7c79faf7eeaf52 (patch) | |
| tree | 198f5b0b491055cf3595e3f49671f4e230d71d54 | |
| parent | Git 2.50 (diff) | |
| download | git-4ca70179020b6a33bb5334302e7c79faf7eeaf52.tar.gz git-4ca70179020b6a33bb5334302e7c79faf7eeaf52.zip | |
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 <gitster@pobox.com>
| -rw-r--r-- | bloom.c | 13 | ||||
| -rw-r--r-- | bloom.h | 12 | ||||
| -rw-r--r-- | t/helper/test-bloom.c | 4 |
3 files changed, 17 insertions, 12 deletions
@@ -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); +} @@ -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); } |
