aboutsummaryrefslogtreecommitdiffstats
path: root/prog/rotation_test.go
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2022-08-11 10:34:00 +0200
committerDmitry Vyukov <dvyukov@google.com>2022-08-11 14:40:25 +0200
commit3e4f27bdcc4a69ccbe5fd7f9c1ad62bb40283e1c (patch)
tree7eca20345089138c9b495fcfed28be6c4316e937 /prog/rotation_test.go
parent787ed7e0bfb3cf1da3025aff0c7770717a993667 (diff)
prog: fix Rotator determinism
Currently Rotator.Select produces non-deterministic results because it relies on map iteration order. Fix that.
Diffstat (limited to 'prog/rotation_test.go')
-rw-r--r--prog/rotation_test.go16
1 files changed, 16 insertions, 0 deletions
diff --git a/prog/rotation_test.go b/prog/rotation_test.go
index e218a5eb6..37308f95b 100644
--- a/prog/rotation_test.go
+++ b/prog/rotation_test.go
@@ -133,3 +133,19 @@ retry:
}
}
}
+
+func TestRotationDeterminism(t *testing.T) {
+ target, rs, _ := initTest(t)
+ calls := make(map[*Syscall]bool)
+ for _, call := range target.Syscalls {
+ calls[call] = true
+ }
+ seed := rs.Int63()
+ rnd0 := rand.New(rand.NewSource(seed))
+ calls0 := MakeRotator(target, calls, rnd0).Select()
+ rnd1 := rand.New(rand.NewSource(seed))
+ calls1 := MakeRotator(target, calls, rnd1).Select()
+ if diff := cmp.Diff(calls0, calls1); diff != "" {
+ t.Fatal(diff)
+ }
+}