private void checkConsistentHashCorrectness(long hashCode) { int last = 0; for (int shards = 1; shards <= 100000; shards++) { int b = Hashing.consistentHash(hashCode, shards); if (b != last) { assertEquals(shards - 1, b); last = b; } } }
public void testHashIntVsForLoop() { int input = 42; HashCode expected = Hashing.md5().hashInt(input); Hasher hasher = Hashing.md5().newHasher(); for (int i = 0; i < 32; i += 8) { hasher.putByte((byte) (input >> i)); } HashCode actual = hasher.hash(); assertEquals(expected, actual); }
public void testHashIntReverseBytesVsHashBytesIntsToByteArray() { int input = 42; assertEquals( Hashing.md5().hashBytes(Ints.toByteArray(input)), Hashing.md5().hashInt(Integer.reverseBytes(input))); }
public void testCombineUnordered_randomHashCodes() { Random random = new Random(RANDOM_SEED); List<HashCode> hashCodes = Lists.newArrayList(); for (int i = 0; i < 10; i++) { hashCodes.add(HashCode.fromLong(random.nextLong())); } HashCode hashCode1 = Hashing.combineUnordered(hashCodes); Collections.shuffle(hashCodes); HashCode hashCode2 = Hashing.combineUnordered(hashCodes); assertEquals(hashCode1, hashCode2); }
public void testMd5() { HashTestUtils.checkAvalanche(Hashing.md5(), 100, 0.4); HashTestUtils.checkNo2BitCharacteristics(Hashing.md5()); HashTestUtils.checkNoFunnels(Hashing.md5()); HashTestUtils.assertInvariants(Hashing.md5()); assertEquals("Hashing.md5()", Hashing.md5().toString()); }
public void testCombineUnordered() { HashCode hash31 = HashCode.fromInt(31); HashCode hash32 = HashCode.fromInt(32); assertEquals(hash32, Hashing.combineUnordered(ImmutableList.of(hash32))); assertEquals(HashCode.fromInt(64), Hashing.combineUnordered(ImmutableList.of(hash32, hash32))); assertEquals( HashCode.fromInt(96), Hashing.combineUnordered(ImmutableList.of(hash32, hash32, hash32))); assertEquals( Hashing.combineUnordered(ImmutableList.of(hash31, hash32)), Hashing.combineUnordered(ImmutableList.of(hash32, hash31))); }
public void testKnownUtf8Hashing() { for (Cell<HashFunction, String, String> cell : KNOWN_HASHES.cellSet()) { HashFunction func = cell.getRowKey(); String input = cell.getColumnKey(); String expected = cell.getValue(); assertEquals( String.format(Locale.ROOT, "Known hash for hash(%s, UTF_8) failed", input), expected, func.hashString(input, UTF_8).toString()); } }
public void testConcatenatingHashFunction_makeHash() { byte[] md5Hash = Hashing.md5().hashLong(42L).asBytes(); byte[] murmur3Hash = Hashing.murmur3_32().hashLong(42L).asBytes(); byte[] combined = new byte[md5Hash.length + murmur3Hash.length]; ByteBuffer buffer = ByteBuffer.wrap(combined); buffer.put(md5Hash); buffer.put(murmur3Hash); HashCode expected = HashCode.fromBytes(combined); assertEquals( expected, Hashing.concatenating(Hashing.md5(), Hashing.murmur3_32()).hashLong(42L)); assertEquals( expected, Hashing.concatenating(asList(Hashing.md5(), Hashing.murmur3_32())).hashLong(42L)); }
public void testCrc32() { HashTestUtils.assertInvariants(Hashing.crc32()); assertEquals("Hashing.crc32()", Hashing.crc32().toString()); }
public void testAdler32() { HashTestUtils.assertInvariants(Hashing.adler32()); assertEquals("Hashing.adler32()", Hashing.adler32().toString()); }
public void testCombineOrdered() { HashCode hash31 = HashCode.fromInt(31); HashCode hash32 = HashCode.fromInt(32); assertEquals(hash32, Hashing.combineOrdered(ImmutableList.of(hash32))); assertEquals( HashCode.fromBytes(new byte[] {(byte) 0x80, 0, 0, 0}), Hashing.combineOrdered(ImmutableList.of(hash32, hash32))); assertEquals( HashCode.fromBytes(new byte[] {(byte) 0xa0, 0, 0, 0}), Hashing.combineOrdered(ImmutableList.of(hash32, hash32, hash32))); assertFalse( Hashing.combineOrdered(ImmutableList.of(hash31, hash32)) .equals(Hashing.combineOrdered(ImmutableList.of(hash32, hash31)))); }
public void testConcatenatingIterable_bits() { assertEquals( Hashing.md5().bits() + Hashing.md5().bits(), Hashing.concatenating(asList(Hashing.md5(), Hashing.md5())).bits()); assertEquals( Hashing.md5().bits() + Hashing.murmur3_32().bits(), Hashing.concatenating(asList(Hashing.md5(), Hashing.murmur3_32())).bits()); assertEquals( Hashing.md5().bits() + Hashing.murmur3_32().bits() + Hashing.murmur3_128().bits(), Hashing.concatenating(asList(Hashing.md5(), Hashing.murmur3_32(), Hashing.murmur3_128())) .bits()); }
public void testConcatenatingVarArgs_bits() { assertEquals( Hashing.md5().bits() + Hashing.md5().bits(), Hashing.concatenating(Hashing.md5(), Hashing.md5()).bits()); assertEquals( Hashing.md5().bits() + Hashing.murmur3_32().bits(), Hashing.concatenating(Hashing.md5(), Hashing.murmur3_32()).bits()); assertEquals( Hashing.md5().bits() + Hashing.murmur3_32().bits() + Hashing.murmur3_128().bits(), Hashing.concatenating(Hashing.md5(), Hashing.murmur3_32(), Hashing.murmur3_128()).bits()); }
public void testSha384() { HashTestUtils.checkAvalanche(Hashing.sha384(), 100, 0.4); HashTestUtils.checkNo2BitCharacteristics(Hashing.sha384()); HashTestUtils.checkNoFunnels(Hashing.sha384()); HashTestUtils.assertInvariants(Hashing.sha384()); assertEquals("Hashing.sha384()", Hashing.sha384().toString()); }
public void testSha1() { HashTestUtils.checkAvalanche(Hashing.sha1(), 100, 0.4); HashTestUtils.checkNo2BitCharacteristics(Hashing.sha1()); HashTestUtils.checkNoFunnels(Hashing.sha1()); HashTestUtils.assertInvariants(Hashing.sha1()); assertEquals("Hashing.sha1()", Hashing.sha1().toString()); }
public void testSha256() { HashTestUtils.checkAvalanche(Hashing.sha256(), 100, 0.4); HashTestUtils.checkNo2BitCharacteristics(Hashing.sha256()); HashTestUtils.checkNoFunnels(Hashing.sha256()); HashTestUtils.assertInvariants(Hashing.sha256()); assertEquals("Hashing.sha256()", Hashing.sha256().toString()); }
public void testSha512() { HashTestUtils.checkAvalanche(Hashing.sha512(), 100, 0.4); HashTestUtils.checkNo2BitCharacteristics(Hashing.sha512()); HashTestUtils.checkNoFunnels(Hashing.sha512()); HashTestUtils.assertInvariants(Hashing.sha512()); assertEquals("Hashing.sha512()", Hashing.sha512().toString()); }
public void testMurmur3_128() { HashTestUtils.check2BitAvalanche(Hashing.murmur3_128(), 250, 0.20); HashTestUtils.checkAvalanche(Hashing.murmur3_128(), 250, 0.17); HashTestUtils.checkNo2BitCharacteristics(Hashing.murmur3_128()); HashTestUtils.checkNoFunnels(Hashing.murmur3_128()); HashTestUtils.assertInvariants(Hashing.murmur3_128()); assertEquals("Hashing.murmur3_128(0)", Hashing.murmur3_128().toString()); }
public void testSipHash24() { HashTestUtils.check2BitAvalanche(Hashing.sipHash24(), 250, 0.14); HashTestUtils.checkAvalanche(Hashing.sipHash24(), 250, 0.10); HashTestUtils.checkNo2BitCharacteristics(Hashing.sipHash24()); HashTestUtils.checkNoFunnels(Hashing.sipHash24()); HashTestUtils.assertInvariants(Hashing.sipHash24()); assertEquals( "Hashing.sipHash24(506097522914230528, 1084818905618843912)", Hashing.sipHash24().toString()); }
public void testMurmur3_32() { HashTestUtils.check2BitAvalanche(Hashing.murmur3_32(), 250, 0.20); HashTestUtils.checkAvalanche(Hashing.murmur3_32(), 250, 0.17); HashTestUtils.checkNo2BitCharacteristics(Hashing.murmur3_32()); HashTestUtils.checkNoFunnels(Hashing.murmur3_32()); HashTestUtils.assertInvariants(Hashing.murmur3_32()); assertEquals("Hashing.murmur3_32(0)", Hashing.murmur3_32().toString()); }