From c407f9c10136b226af0da5a70896e014bea0cefd Mon Sep 17 00:00:00 2001 From: leventov Date: Sat, 24 Jan 2015 11:37:35 +0700 Subject: [PATCH] #15 Fixed bug in Hasher --- .../chronicle/hash/hashing/Hasher.java | 2 +- .../net/openhft/chronicle/map/HasherTest.java | 35 +++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 src/test/java/net/openhft/chronicle/map/HasherTest.java diff --git a/src/main/java/net/openhft/chronicle/hash/hashing/Hasher.java b/src/main/java/net/openhft/chronicle/hash/hashing/Hasher.java index a7c97393c..2548ee39a 100644 --- a/src/main/java/net/openhft/chronicle/hash/hashing/Hasher.java +++ b/src/main/java/net/openhft/chronicle/hash/hashing/Hasher.java @@ -58,7 +58,7 @@ public final class Hasher { long remaining = length; while (remaining >= 16L) { long k1 = access.getLong(input, offset); - long k2 = access.getLong(input, offset); + long k2 = access.getLong(input, offset + 8L); offset += 16L; remaining -= 16L; h1 ^= mixK1(k1); diff --git a/src/test/java/net/openhft/chronicle/map/HasherTest.java b/src/test/java/net/openhft/chronicle/map/HasherTest.java new file mode 100644 index 000000000..4904cc440 --- /dev/null +++ b/src/test/java/net/openhft/chronicle/map/HasherTest.java @@ -0,0 +1,35 @@ +/* + * Copyright 2014 Higher Frequency Trading http://www.higherfrequencytrading.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.openhft.chronicle.map; + +import com.google.common.hash.HashFunction; +import com.google.common.hash.Hashing; +import net.openhft.chronicle.hash.hashing.Hasher; + +public class HasherTest { + public static void main(String[] args) { + + HashFunction hashFunction = Hashing.murmur3_128(); + for (int i=0;i<10;i++) + { + String key = "010758403"+String.format("%06d",i)+"S-INJFIX_SLE"; + long hashCode = Hasher.hash(key.getBytes()); + long guavaHashCode = hashFunction.hashBytes(key.getBytes()).asLong(); + System.out.println("<"+key+"> => "+hashCode+" "+guavaHashCode); + } + } +}