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>
This commit is contained in:
committed by
Junio C Hamano
parent
16bd9f20a4
commit
4ca7017902
13
bloom.c
13
bloom.c
@@ -107,7 +107,7 @@ int load_bloom_filter_from_graph(struct commit_graph *g,
|
|||||||
* Not considered to be cryptographically secure.
|
* Not considered to be cryptographically secure.
|
||||||
* Implemented as described in https://en.wikipedia.org/wiki/MurmurHash#Algorithm
|
* 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 c1 = 0xcc9e2d51;
|
||||||
const uint32_t c2 = 0x1b873593;
|
const uint32_t c2 = 0x1b873593;
|
||||||
@@ -540,3 +540,14 @@ int bloom_filter_contains(const struct bloom_filter *filter,
|
|||||||
|
|
||||||
return 1;
|
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);
|
||||||
|
}
|
||||||
|
|||||||
12
bloom.h
12
bloom.h
@@ -78,15 +78,6 @@ int load_bloom_filter_from_graph(struct commit_graph *g,
|
|||||||
struct bloom_filter *filter,
|
struct bloom_filter *filter,
|
||||||
uint32_t graph_pos);
|
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,
|
void fill_bloom_key(const char *data,
|
||||||
size_t len,
|
size_t len,
|
||||||
struct bloom_key *key,
|
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_key *key,
|
||||||
const struct bloom_filter_settings *settings);
|
const struct bloom_filter_settings *settings);
|
||||||
|
|
||||||
|
uint32_t test_bloom_murmur3_seeded(uint32_t seed, const char *data, size_t len,
|
||||||
|
int version);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -61,13 +61,13 @@ int cmd__bloom(int argc, const char **argv)
|
|||||||
uint32_t hashed;
|
uint32_t hashed;
|
||||||
if (argc < 3)
|
if (argc < 3)
|
||||||
usage(bloom_usage);
|
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);
|
printf("Murmur3 Hash with seed=0:0x%08x\n", hashed);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!strcmp(argv[1], "get_murmur3_seven_highbit")) {
|
if (!strcmp(argv[1], "get_murmur3_seven_highbit")) {
|
||||||
uint32_t hashed;
|
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);
|
printf("Murmur3 Hash with seed=0:0x%08x\n", hashed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user