You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ah...@apache.org on 2019/11/21 15:54:44 UTC
[commons-codec] 07/07: MurmurHash3: Added random block sizes to
incremental hash test.
This is an automated email from the ASF dual-hosted git repository.
aherbert pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-codec.git
commit 486d8a8ae45e9d9e0e44ffb6048e536491c59c1a
Author: aherbert <ah...@apache.org>
AuthorDate: Thu Nov 21 15:54:10 2019 +0000
MurmurHash3: Added random block sizes to incremental hash test.
---
.../commons/codec/digest/MurmurHash3Test.java | 27 ++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/src/test/java/org/apache/commons/codec/digest/MurmurHash3Test.java b/src/test/java/org/apache/commons/codec/digest/MurmurHash3Test.java
index 79787f3..0443fe2 100644
--- a/src/test/java/org/apache/commons/codec/digest/MurmurHash3Test.java
+++ b/src/test/java/org/apache/commons/codec/digest/MurmurHash3Test.java
@@ -747,6 +747,10 @@ public class MurmurHash3Test {
assertIncrementalHash32(bytes, seed, 4, 3);
// Complete blocks
assertIncrementalHash32(bytes, seed, 4, 16, 64);
+ // Some random blocks
+ for (int i = 0; i < 10; i++) {
+ assertIncrementalHash32x86(bytes, seed, createRandomBlocks(bytes.length));
+ }
}
}
@@ -801,6 +805,10 @@ public class MurmurHash3Test {
assertIncrementalHash32x86(bytes, seed, 4, 3);
// Complete blocks
assertIncrementalHash32x86(bytes, seed, 4, 16, 64);
+ // Some random blocks
+ for (int i = 0; i < 10; i++) {
+ assertIncrementalHash32x86(bytes, seed, createRandomBlocks(bytes.length));
+ }
}
}
@@ -829,4 +837,23 @@ public class MurmurHash3Test {
Assert.assertEquals("Hashes differ after no additional data", h1, inc.end());
}
}
+
+ /**
+ * Creates the random blocks of data to process up to max length.
+ *
+ * @param maxLength the max length
+ * @return the blocks
+ */
+ private static int[] createRandomBlocks(int maxLength) {
+ int[] blocks = new int[20];
+ int count = 0;
+ int length = 0;
+ while (count < blocks.length && length < maxLength) {
+ // range of 1 to 8 for up to two 4 byte blocks
+ final int size = ThreadLocalRandom.current().nextInt(1, 9);
+ blocks[count++] = size;
+ length += size;
+ }
+ return Arrays.copyOf(blocks, count);
+ }
}