1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
package testutils
import (
"math/rand"
"os"
"strconv"
"sync"
"testing"
"time"
)
var randSeed struct {
value int64
once sync.Once
}
func Rand(tb testing.TB) *rand.Rand {
randSeed.once.Do(func() {
randSeed.value = time.Now().UnixMicro()
})
seed := randSeed.value
if seedStr, ok := os.LookupEnv("TEST_SEED"); ok {
var err error
seed, err = strconv.ParseInt(seedStr, 0, 64)
if err != nil {
tb.Fatal("Parse TEST_SEED environment variable:", err)
}
}
tb.Logf("TEST_SEED=%d\n", seed)
return rand.New(rand.NewSource(seed))
}
|