@Override public int bits() { int bitSum = 0; for (HashFunction function : functions) { bitSum += function.bits(); } return bitSum; }
@Override public int bits() { int bitSum = 0; for (HashFunction function : functions) { bitSum += function.bits(); } return bitSum; }
@Override public int bits() { int bitSum = 0; for (HashFunction function : functions) { bitSum += function.bits(); } return bitSum; }
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 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()); }
/** * Checks that a Hasher returns the same HashCode when given the same input, and also that the * collision rate looks sane. */ static void assertInvariants(HashFunction hashFunction) { int objects = 100; Set<HashCode> hashcodes = Sets.newHashSetWithExpectedSize(objects); Random random = new Random(314159); for (int i = 0; i < objects; i++) { int value = random.nextInt(); HashCode hashcode1 = hashFunction.hashInt(value); HashCode hashcode2 = hashFunction.hashInt(value); Assert.assertEquals(hashcode1, hashcode2); // idempotent Assert.assertEquals(hashFunction.bits(), hashcode1.bits()); Assert.assertEquals(hashFunction.bits(), hashcode1.asBytes().length * 8); hashcodes.add(hashcode1); } Assert.assertTrue(hashcodes.size() > objects * 0.95); // quite relaxed test assertHashBytesThrowsCorrectExceptions(hashFunction); assertIndependentHashers(hashFunction); assertShortcutsAreEquivalent(hashFunction, 512); }
@AndroidIncompatible // slow TODO(cpovirk): Maybe just reduce iterations under Android. public void testGoodFastHash() { for (int i = 1; i < 200; i += 17) { HashFunction hasher = Hashing.goodFastHash(i); assertTrue(hasher.bits() >= i); HashTestUtils.assertInvariants(hasher); } }
Random rand = new Random(0); int keyBits = 32; int hashBits = function.bits();
Random rand = new Random(0); int keyBits = 32; int hashBits = function.bits(); for (int i = 0; i < keyBits; i++) { int[] same = new int[hashBits];
Random rand = new Random(0); int keyBits = 32; int hashBits = function.bits(); for (int bit1 = 0; bit1 < keyBits; bit1++) { for (int bit2 = 0; bit2 < keyBits; bit2++) {
throw new S3Exception(S3ErrorCode.INVALID_DIGEST, iae); if (contentMD5.bits() != MD5.bits()) { throw new S3Exception(S3ErrorCode.INVALID_DIGEST);
/** * Protected constructor, called by subclasses. * * @param attribute The attribute on which the index will be built * @param supportedQueries The set of {@link Query} types which the subclass implementation supports * @param hashFunction */ protected AbstractHashingAttributeIndex(Attribute<O, A> attribute, Set<Class<? extends Query>> supportedQueries, HashFunction hashFunction) { super(attribute, supportedQueries); this.hashFunction = hashFunction; hashSize = hashFunction.bits() / 8; }
@Override public int bits() { int bitSum = 0; for (HashFunction function : functions) { bitSum += function.bits(); } return bitSum; }
ConcatenatedHashFunction(HashFunction... functions) { super(functions); int bitSum = 0; for (HashFunction function : functions) { bitSum += function.bits(); } this.bits = bitSum; }
ConcatenatedHashFunction(HashFunction... functions) { super(functions); int bitSum = 0; for (HashFunction function : functions) { bitSum += function.bits(); } this.bits = bitSum; }
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()); }