6
6
"math/big"
7
7
"math/rand"
8
8
"net/http"
9
+ "sync"
9
10
"time"
10
11
11
12
"go.opentelemetry.io/collector/pdata/pcommon"
@@ -24,19 +25,24 @@ var (
24
25
"order" , "payment" , "customer" , "product" , "stock" , "inventory" ,
25
26
"shipping" , "billing" , "checkout" , "cart" , "search" , "analytics" }
26
27
27
- rnd * rand.Rand
28
+ rnd * rand.Rand
29
+ randMtx = sync.Mutex {}
28
30
)
29
31
30
32
func init () {
31
33
seed , _ := crand .Int (crand .Reader , big .NewInt (int64 (^ uint64 (0 )>> 1 )))
32
34
rnd = rand .New (rand .NewSource (seed .Int64 ()))
33
35
}
34
36
35
- func Rand () * rand.Rand {
36
- return rnd
37
+ func Float32 () float32 {
38
+ randMtx .Lock ()
39
+ defer randMtx .Unlock ()
40
+ return rnd .Float32 ()
37
41
}
38
42
39
43
func SelectElement [T any ](elements []T ) T {
44
+ randMtx .Lock ()
45
+ defer randMtx .Unlock ()
40
46
return elements [rnd .Intn (len (elements ))]
41
47
}
42
48
@@ -53,16 +59,22 @@ func K6String(n int) string {
53
59
}
54
60
55
61
func IntBetween (min , max int ) int {
62
+ randMtx .Lock ()
63
+ defer randMtx .Unlock ()
56
64
n := rnd .Intn (max - min )
57
65
return min + n
58
66
}
59
67
60
68
func Duration (min , max time.Duration ) time.Duration {
69
+ randMtx .Lock ()
70
+ defer randMtx .Unlock ()
61
71
n := rnd .Int63n (int64 (max ) - int64 (min ))
62
72
return min + time .Duration (n )
63
73
}
64
74
65
75
func IPAddr () string {
76
+ randMtx .Lock ()
77
+ defer randMtx .Unlock ()
66
78
return fmt .Sprintf ("192.168.%d.%d" , rnd .Intn (255 ), rnd .Intn (255 ))
67
79
}
68
80
@@ -115,12 +127,18 @@ func OperationForResource(resource string) string {
115
127
}
116
128
117
129
func TraceID () pcommon.TraceID {
130
+ randMtx .Lock ()
131
+ defer randMtx .Unlock ()
132
+
118
133
var b [16 ]byte
119
134
_ , _ = rnd .Read (b [:]) // always returns nil error
120
135
return b
121
136
}
122
137
123
138
func SpanID () pcommon.SpanID {
139
+ randMtx .Lock ()
140
+ defer randMtx .Unlock ()
141
+
124
142
var b [8 ]byte
125
143
_ , _ = rnd .Read (b [:]) // always returns nil error
126
144
return b
0 commit comments