prom_hashmod/lib.rs
1/// hashmod is a function used by prometheus to hash scrape targets to a specific shard
2pub fn hashmod(data: &[u8], modulus: u64) -> u64 {
3 sum64(data) % modulus
4}
5
6/// sum64 is a hashing function used by hashmod
7pub fn sum64(data: &[u8]) -> u64 {
8 let data = md5::compute(data);
9 let data = data[8..].try_into().unwrap();
10 u64::from_be_bytes(data)
11}
12
13#[cfg(test)]
14mod tests {
15 use super::*;
16
17 #[test]
18 fn it_works() {
19 let result = sum64(b"test1");
20 assert_eq!(result, 10916960992523345290);
21 }
22}