File: seed.go

package info (click to toggle)
golang-github-cilium-ebpf 0.17.3%2Bds1-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 4,684 kB
  • sloc: ansic: 1,259; makefile: 127; python: 113; awk: 29; sh: 24
file content (33 lines) | stat: -rw-r--r-- 551 bytes parent folder | download
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))
}