test: hashmap - cripple the hash function by truncating the input rather than the...
authorTom Gundersen <teg@jklm.no>
Sat, 3 Oct 2015 23:14:41 +0000 (01:14 +0200)
committerTom Gundersen <teg@jklm.no>
Mon, 5 Oct 2015 16:19:18 +0000 (18:19 +0200)
The reason for the crippled hash function is to reduce the distribution
of the hash function, do this by truncating the domain rather than the
range. This does introduce a change in behavoir as the range is no longer
contiguous, which greatly reduces collisions.

This is needed as a follow-up patch will no longer allow individual hash
functions to alter the output directly.

src/test/test-hashmap-plain.c

index 057b6c1..33ac93b 100644 (file)
@@ -693,7 +693,7 @@ static void test_hashmap_get2(void) {
 }
 
 static unsigned long crippled_hashmap_func(const void *p, const uint8_t hash_key[HASH_KEY_SIZE]) {
-        return trivial_hash_func(p, hash_key) & 0xff;
+        return trivial_hash_func(INT_TO_PTR(PTR_TO_INT(p) & 0xff), hash_key);
 }
 
 static const struct hash_ops crippled_hashmap_ops = {