Skip to content

Commit 2d8cb1c

Browse files
committed
More randomized testing and fixes
1 parent b277cef commit 2d8cb1c

File tree

2 files changed

+33
-11
lines changed

2 files changed

+33
-11
lines changed

server/src/main/java/org/elasticsearch/common/hash/BufferedMurmur3Hasher.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ public void addString(String value) {
8383
public void addLong(long value) {
8484
flushIfRemainingCapacityLowerThan(Long.BYTES);
8585
ByteUtils.writeLongLE(value, buffer, pos);
86-
pos = Long.BYTES;
86+
pos += Long.BYTES;
8787
}
8888

8989
/**
@@ -97,7 +97,7 @@ public void addLongs(long v1, long v2) {
9797
flushIfRemainingCapacityLowerThan(Long.BYTES * 2);
9898
ByteUtils.writeLongLE(v1, buffer, pos);
9999
ByteUtils.writeLongLE(v2, buffer, pos + 8);
100-
pos = Long.BYTES * 2;
100+
pos += Long.BYTES * 2;
101101
}
102102

103103
/**
@@ -115,7 +115,7 @@ public void addLongs(long v1, long v2, long v3, long v4) {
115115
ByteUtils.writeLongLE(v2, buffer, pos + 8);
116116
ByteUtils.writeLongLE(v3, buffer, pos + 16);
117117
ByteUtils.writeLongLE(v4, buffer, pos + 24);
118-
pos = Long.BYTES * 4;
118+
pos += Long.BYTES * 4;
119119
}
120120

121121
private void ensureCapacity(int requiredBufferLength) {

server/src/test/java/org/elasticsearch/common/hash/BufferedMurmur3HasherTests.java

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
public class BufferedMurmur3HasherTests extends ESTestCase {
1717

18-
private final BufferedMurmur3Hasher bufferedHasher = new BufferedMurmur3Hasher(0);
18+
private final BufferedMurmur3Hasher bufferedHasher = new BufferedMurmur3Hasher(0, randomIntBetween(32, 128));
1919
private final Murmur3Hasher hasher = new Murmur3Hasher(0);
2020

2121
public void testAddString() {
@@ -41,14 +41,36 @@ public void testAddLong() {
4141
assertEquals(hasher.digestHash(), bufferedHasher.digestHash());
4242
}
4343

44+
public void testAddLongs() {
45+
long value1 = randomLong();
46+
long value2 = randomLong();
47+
long value3 = randomLong();
48+
long value4 = randomLong();
49+
bufferedHasher.addLong(value1);
50+
bufferedHasher.addLongs(value1, value2);
51+
bufferedHasher.addLongs(value1, value2, value3, value4);
52+
53+
hasher.update(toBytes(value1));
54+
55+
hasher.update(toBytes(value1));
56+
hasher.update(toBytes(value2));
57+
58+
hasher.update(toBytes(value1));
59+
hasher.update(toBytes(value2));
60+
hasher.update(toBytes(value3));
61+
hasher.update(toBytes(value4));
62+
63+
assertEquals(hasher.digestHash(), bufferedHasher.digestHash());
64+
}
65+
4466
public void testAddTwoLongs() {
4567
long value1 = randomLong();
4668
long value2 = randomLong();
4769

4870
bufferedHasher.addLongs(value1, value2);
4971

50-
hasher.update(toBytes(value1), 0, Long.BYTES);
51-
hasher.update(toBytes(value2), 0, Long.BYTES);
72+
hasher.update(toBytes(value1));
73+
hasher.update(toBytes(value2));
5274

5375
assertEquals(hasher.digestHash(), bufferedHasher.digestHash());
5476
}
@@ -61,15 +83,15 @@ public void testAddFourLongs() {
6183

6284
bufferedHasher.addLongs(value1, value2, value3, value4);
6385

64-
hasher.update(toBytes(value1), 0, Long.BYTES);
65-
hasher.update(toBytes(value2), 0, Long.BYTES);
66-
hasher.update(toBytes(value3), 0, Long.BYTES);
67-
hasher.update(toBytes(value4), 0, Long.BYTES);
86+
hasher.update(toBytes(value1));
87+
hasher.update(toBytes(value2));
88+
hasher.update(toBytes(value3));
89+
hasher.update(toBytes(value4));
6890

6991
assertEquals(hasher.digestHash(), bufferedHasher.digestHash());
7092
}
7193

72-
public void randomAdds() {
94+
public void testRandomAdds() {
7395
int numAdds = randomIntBetween(128, 1024);
7496
for (int i = 0; i < numAdds; i++) {
7597
switch (randomIntBetween(0, 4)) {

0 commit comments

Comments
 (0)