]> git.ipfire.org Git - thirdparty/git.git/commitdiff
bloom: add test helper to return murmur3 hash
authorLidong Yan <yldhome2d2@gmail.com>
Sat, 12 Jul 2025 09:35:13 +0000 (17:35 +0800)
committerJunio C Hamano <gitster@pobox.com>
Mon, 14 Jul 2025 17:03:02 +0000 (10:03 -0700)
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>
bloom.c
bloom.h
t/helper/test-bloom.c

diff --git a/bloom.c b/bloom.c
index 0c8d2cebf9c4ed92b7f38a749c0a089c6116a644..946c5e8c985bbc3a3f259b4e0223beeb8b5c1254 100644 (file)
--- 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 6e46489a20129a42a92aaecf6e724350590d17bd..a9ded1822faebbfde16c645a3ee417b0ba80f544 100644 (file)
--- 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
index 9aa2c5a5926d47dd798e99265af0498eafe817f0..6a24b6e0a6de9ba55b79fda469639804090ca44f 100644 (file)
@@ -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);
        }