aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJeroen van Rijn <Kelimion@users.noreply.github.com>2022-05-02 19:20:25 +0200
committerJeroen van Rijn <Kelimion@users.noreply.github.com>2022-05-02 19:20:25 +0200
commitb99940f33a50cf2ed5eaa39ffcdb00950f15ad27 (patch)
tree4d0ea02ff831d5b21c0e2dec42a84f3b30a776bf /tests
parent6985181961ec2ed8910ea4650d1b6898952084c8 (diff)
[xxhash] For the streaming tests, randomly select the size to use.
Randomize size used with `update`. It'll print "Using user-selected seed {18109872483301276539,2000259725719371} for update size randomness." If a streaming test then fails, you can repeat it using: `odin run . -define:RAND_STATE=18109872483301276539 -define:RAND_INC=2000259725719371`
Diffstat (limited to 'tests')
-rw-r--r--tests/core/hash/test_core_hash.odin28
1 files changed, 23 insertions, 5 deletions
diff --git a/tests/core/hash/test_core_hash.odin b/tests/core/hash/test_core_hash.odin
index 86c05fd44..e69490143 100644
--- a/tests/core/hash/test_core_hash.odin
+++ b/tests/core/hash/test_core_hash.odin
@@ -6,6 +6,8 @@ import "core:time"
import "core:testing"
import "core:fmt"
import "core:os"
+import "core:math/rand"
+import "core:intrinsics"
TEST_count := 0
TEST_fail := 0
@@ -202,6 +204,8 @@ test_xxhash_large :: proc(t: ^testing.T) {
for i, v in ZERO_VECTORS {
b := many_zeroes[:i]
+ fmt.printf("[test_xxhash_large] All at once. Size: %v\n", i)
+
xxh32 := xxhash.XXH32(b)
xxh64 := xxhash.XXH64(b)
xxh3_64 := xxhash.XXH3_64(b)
@@ -218,12 +222,25 @@ test_xxhash_large :: proc(t: ^testing.T) {
expect(t, xxh3_128 == v.xxh3_128, xxh3_128_error)
}
+ when #config(RAND_STATE, -1) >= 0 && #config(RAND_INC, -1) >= 0 {
+ random_seed := rand.Rand{
+ state = u64(#config(RAND_STATE, -1)),
+ inc = u64(#config(RAND_INC, -1)),
+ }
+ fmt.printf("Using user-selected seed {{%v,%v}} for update size randomness.\n", random_seed.state, random_seed.inc)
+ } else {
+ random_seed := rand.create(u64(intrinsics.read_cycle_counter()))
+ fmt.printf("Randonly selected seed {{%v,%v}} for update size randomness.\n", random_seed.state, random_seed.inc)
+ }
+
// Streamed
for i, v in ZERO_VECTORS {
b := many_zeroes[:i]
- bytes_per_update := []int{1, 42, 13, 7, 16, 5, 23, 74, 1024, 511, 1023, 47}
- update_size_idx: int
+ fmt.printf("[test_xxhash_large] Streamed. Size: %v\n", i)
+
+ // bytes_per_update := []int{1, 42, 13, 7, 16, 5, 23, 74, 1024, 511, 1023, 47}
+ // update_size_idx: int
xxh_32_state, xxh_32_err := xxhash.XXH32_create_state()
defer xxhash.XXH32_destroy_state(xxh_32_state)
@@ -244,9 +261,10 @@ test_xxhash_large :: proc(t: ^testing.T) {
// XXH3_128_update
for len(b) > 0 {
- update_size := min(len(b), bytes_per_update[update_size_idx % len(bytes_per_update)])
- update_size_idx += 1
-
+ update_size := min(len(b), rand.int_max(8192, &random_seed))
+ if update_size > 4096 {
+ update_size %= 73
+ }
xxhash.XXH32_update (xxh_32_state, b[:update_size])
xxhash.XXH64_update (xxh_64_state, b[:update_size])