From b8052176db03f5d357ca50adf1e90cfecccbc001 Mon Sep 17 00:00:00 2001 From: Tamir Duberstein Date: Tue, 25 May 2021 11:38:33 -0700 Subject: Use the stack RNG Remove redundant interface. PiperOrigin-RevId: 375756254 --- pkg/tcpip/stack/nud.go | 11 +++-------- pkg/tcpip/stack/nud_test.go | 13 ++++++++----- 2 files changed, 11 insertions(+), 13 deletions(-) (limited to 'pkg/tcpip/stack') diff --git a/pkg/tcpip/stack/nud.go b/pkg/tcpip/stack/nud.go index 02f905351..dac94cbe4 100644 --- a/pkg/tcpip/stack/nud.go +++ b/pkg/tcpip/stack/nud.go @@ -16,6 +16,7 @@ package stack import ( "math" + "math/rand" "sync" "time" @@ -313,15 +314,9 @@ func calcMaxRandomFactor(minRandomFactor float32) float32 { return defaultMaxRandomFactor } -// A Rand is a source of random numbers. -type Rand interface { - // Float32 returns, as a float32, a pseudo-random number in [0.0,1.0). - Float32() float32 -} - // NUDState stores states needed for calculating reachable time. type NUDState struct { - rng Rand + rng *rand.Rand mu struct { sync.RWMutex @@ -342,7 +337,7 @@ type NUDState struct { // NewNUDState returns new NUDState using c as configuration and the specified // random number generator for use in recomputing ReachableTime. -func NewNUDState(c NUDConfigurations, rng Rand) *NUDState { +func NewNUDState(c NUDConfigurations, rng *rand.Rand) *NUDState { s := &NUDState{ rng: rng, } diff --git a/pkg/tcpip/stack/nud_test.go b/pkg/tcpip/stack/nud_test.go index 6ba97d626..d85213fba 100644 --- a/pkg/tcpip/stack/nud_test.go +++ b/pkg/tcpip/stack/nud_test.go @@ -16,6 +16,7 @@ package stack_test import ( "math" + "math/rand" "testing" "time" @@ -46,12 +47,14 @@ type fakeRand struct { num float32 } -var _ stack.Rand = (*fakeRand)(nil) +var _ rand.Source = (*fakeRand)(nil) -func (f *fakeRand) Float32() float32 { - return f.num +func (f *fakeRand) Int63() int64 { + return int64(f.num * float32(1<<63)) } +func (*fakeRand) Seed(int64) {} + func TestNUDFunctions(t *testing.T) { const nicID = 1 @@ -708,7 +711,7 @@ func TestNUDStateReachableTime(t *testing.T) { rng := fakeRand{ num: defaultFakeRandomNum, } - s := stack.NewNUDState(c, &rng) + s := stack.NewNUDState(c, rand.New(&rng)) if got, want := s.ReachableTime(), test.want; got != want { t.Errorf("got ReachableTime = %q, want = %q", got, want) } @@ -780,7 +783,7 @@ func TestNUDStateRecomputeReachableTime(t *testing.T) { rng := fakeRand{ num: defaultFakeRandomNum, } - s := stack.NewNUDState(c, &rng) + s := stack.NewNUDState(c, rand.New(&rng)) old := s.ReachableTime() if got, want := s.ReachableTime(), old; got != want { -- cgit v1.2.3