Skip to content

Commit ebb49ac

Browse files
committed
all: use testing.B.Loop for benchmark iteration
Use testing.B.Loop instead of a manual `for range b.N` loop. This also removes the need to use testing.B.ResetTimer. See golang/go#61515 for details. Generated using modernize by running: go run golang.org/x/tools/gopls/internal/analysis/modernize/cmd/modernize@latest -fix -test ./... and committing the relevant changes. Signed-off-by: Tobias Klauser <[email protected]>
1 parent f25bc28 commit ebb49ac

File tree

68 files changed

+192
-251
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+192
-251
lines changed

pkg/bgpv1/agent/annotations_test.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -160,8 +160,8 @@ func BenchmarkErrNotVRouterAnnoError(b *testing.B) {
160160
a: "foo error",
161161
}
162162
b.ReportAllocs()
163-
b.ResetTimer()
164-
for i := 0; i < b.N; i++ {
163+
164+
for b.Loop() {
165165
_ = e.Error()
166166
}
167167
}
@@ -171,8 +171,8 @@ func BenchmarkErrErrNoASNAnno(b *testing.B) {
171171
a: "foo error",
172172
}
173173
b.ReportAllocs()
174-
b.ResetTimer()
175-
for i := 0; i < b.N; i++ {
174+
175+
for b.Loop() {
176176
_ = e.Error()
177177
}
178178
}
@@ -184,8 +184,8 @@ func BenchmarkErrASNAnno(b *testing.B) {
184184
anno: "foo anno",
185185
}
186186
b.ReportAllocs()
187-
b.ResetTimer()
188-
for i := 0; i < b.N; i++ {
187+
188+
for b.Loop() {
189189
_ = e.Error()
190190
}
191191
}

pkg/bpf/map_linux_test.go

+1-3
Original file line numberDiff line numberDiff line change
@@ -928,9 +928,7 @@ func BenchmarkMapLookup(b *testing.B) {
928928
b.Fatal(err)
929929
}
930930

931-
b.ResetTimer()
932-
933-
for n := 0; n < b.N; n++ {
931+
for b.Loop() {
934932
if _, err := m.Lookup(&k); err != nil {
935933
b.Fatal(err)
936934
}

pkg/bufuuid/uuid_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ func BenchmarkUUIDGenerator(b *testing.B) {
5454
b.Run(fmt.Sprintf("%d slots", slots), func(b *testing.B) {
5555
var target uuid.UUID
5656
uuider := newWith(rand.Reader, slots)
57-
for range b.N {
57+
for b.Loop() {
5858
uuider.NewInto(&target)
5959
}
6060
})

pkg/cgroups/manager/manager_test.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -286,8 +286,7 @@ func BenchmarkGetPodMetadataForContainer(b *testing.B) {
286286
// Add pod, and check for pod metadata for their containers.
287287
mm.OnAddPod(pod3)
288288

289-
b.ResetTimer()
290-
for i := 0; i < b.N; i++ {
289+
for b.Loop() {
291290
got := mm.GetPodMetadataForContainer(c3CId)
292291
require.Equal(b, &PodMetadata{Name: pod3.Name, Namespace: pod3.Namespace, IPs: pod3Ipstrs}, got)
293292
}

pkg/container/bitlpm/cidr_test.go

+8-8
Original file line numberDiff line numberDiff line change
@@ -493,7 +493,7 @@ func BenchmarkTraversal(b *testing.B) {
493493

494494
b.ReportAllocs()
495495

496-
for i := 0; i < b.N; i++ {
496+
for b.Loop() {
497497
n = 0
498498
t.Ancestors(prefix, func(k netip.Prefix, _ struct{}) bool {
499499
n++
@@ -507,7 +507,7 @@ func BenchmarkTraversal(b *testing.B) {
507507

508508
b.ReportAllocs()
509509

510-
for i := 0; i < b.N; i++ {
510+
for b.Loop() {
511511
iter := t.AncestorIterator(prefix)
512512
n = 0
513513
for ok, _, _ := iter.Next(); ok; ok, _, _ = iter.Next() {
@@ -522,7 +522,7 @@ func BenchmarkTraversal(b *testing.B) {
522522

523523
b.ReportAllocs()
524524

525-
for i := 0; i < b.N; i++ {
525+
for b.Loop() {
526526
n = 0
527527
lastLen = prefixLen
528528
t.AncestorsLongestPrefixFirst(prefix, func(k netip.Prefix, _ struct{}) bool {
@@ -541,7 +541,7 @@ func BenchmarkTraversal(b *testing.B) {
541541

542542
b.ReportAllocs()
543543

544-
for i := 0; i < b.N; i++ {
544+
for b.Loop() {
545545
iter := t.AncestorLongestPrefixFirstIterator(prefix)
546546
n = 0
547547
lastLen = prefixLen
@@ -559,7 +559,7 @@ func BenchmarkTraversal(b *testing.B) {
559559

560560
b.ReportAllocs()
561561

562-
for i := 0; i < b.N; i++ {
562+
for b.Loop() {
563563
n = 0
564564
t.Descendants(prefix, func(k netip.Prefix, _ struct{}) bool {
565565
n++
@@ -573,7 +573,7 @@ func BenchmarkTraversal(b *testing.B) {
573573

574574
b.ReportAllocs()
575575

576-
for i := 0; i < b.N; i++ {
576+
for b.Loop() {
577577
iter := t.DescendantIterator(prefix)
578578
n = 0
579579
for ok, _, _ := iter.Next(); ok; ok, _, _ = iter.Next() {
@@ -588,7 +588,7 @@ func BenchmarkTraversal(b *testing.B) {
588588

589589
b.ReportAllocs()
590590

591-
for i := 0; i < b.N; i++ {
591+
for b.Loop() {
592592
n = 0
593593
lastLen = 0
594594
t.DescendantsShortestPrefixFirst(prefix, func(k netip.Prefix, _ struct{}) bool {
@@ -607,7 +607,7 @@ func BenchmarkTraversal(b *testing.B) {
607607

608608
b.ReportAllocs()
609609

610-
for i := 0; i < b.N; i++ {
610+
for b.Loop() {
611611
iter := t.DescendantShortestPrefixFirstIterator(prefix)
612612
n = 0
613613
lastLen = 0

pkg/container/cache/cache_test.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ func TestStringsCache(t *testing.T) {
2626

2727
func BenchmarkStringsCache(b *testing.B) {
2828
s := "foobar"
29-
for range b.N {
29+
for b.Loop() {
3030
x := Strings.Get(s)
3131
if x != s {
3232
b.Fatalf("strings not equal, %q vs %q", s, x)
@@ -38,7 +38,7 @@ func BenchmarkStringsCache(b *testing.B) {
3838
// are skipped.
3939
func BenchmarkStringsCache_Large(b *testing.B) {
4040
s := strings.Repeat("ni", 500)
41-
for range b.N {
41+
for b.Loop() {
4242
x := Strings.Get(s)
4343
if x != s {
4444
b.Fatalf("strings not equal, %q vs %q", s, x)
@@ -48,7 +48,7 @@ func BenchmarkStringsCache_Large(b *testing.B) {
4848

4949
func BenchmarkUniqueString(b *testing.B) {
5050
s := "foobar"
51-
for range b.N {
51+
for b.Loop() {
5252
x := unique.Make(s)
5353
if x.Value() != s {
5454
b.Fatalf("strings not equal, %q vs %q", s, x.Value())
@@ -70,7 +70,7 @@ func TestStringMapsCache(t *testing.T) {
7070

7171
func BenchmarkStringMapsCache(b *testing.B) {
7272
m := map[string]string{"foo": "bar"}
73-
for range b.N {
73+
for b.Loop() {
7474
x := StringMaps.Get(m)
7575
if !maps.Equal(x, m) {
7676
b.Fatalf("maps not equal, %q vs %q", m, x)
@@ -86,8 +86,8 @@ func BenchmarkStringMapsCache_Large(b *testing.B) {
8686
for range 500 {
8787
m[s] = s
8888
}
89-
b.ResetTimer()
90-
for range b.N {
89+
90+
for b.Loop() {
9191
x := StringMaps.Get(m)
9292
if !maps.Equal(x, m) {
9393
b.Fatalf("maps not equal, %q vs %q", m, x)

pkg/container/immset_test.go

+8-11
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ func benchmarkImmSetInsert(b *testing.B, numItems int) {
126126
for i := range numItems {
127127
s = s.Insert(i)
128128
}
129-
for n := 0; n < b.N; n++ {
129+
for b.Loop() {
130130
s.Insert(numItems)
131131
}
132132
}
@@ -143,8 +143,8 @@ func benchmarkImmSetInsertMany(b *testing.B, numItems int) {
143143
a2[i] = int(rand.IntN(numItems))
144144
}
145145
s := NewImmSet(a1...)
146-
b.ResetTimer()
147-
for n := 0; n < b.N; n++ {
146+
147+
for b.Loop() {
148148
s.Insert(a2...)
149149
}
150150
}
@@ -165,9 +165,8 @@ func benchmarkImmSetDelete(b *testing.B, numItems int) {
165165
s = s.Insert(i)
166166
}
167167
idx := rand.IntN(numItems)
168-
b.ResetTimer()
169168

170-
for n := 0; n < b.N; n++ {
169+
for b.Loop() {
171170
s.Delete(idx)
172171
}
173172
}
@@ -183,9 +182,8 @@ func benchmarkImmSetDeleteMany(b *testing.B, numItems int) {
183182
s = s.Insert(int(rand.IntN(numItems)))
184183
a = append(a, int(rand.IntN(numItems)))
185184
}
186-
b.ResetTimer()
187185

188-
for n := 0; n < b.N; n++ {
186+
for b.Loop() {
189187
s.Delete(a...)
190188
}
191189
}
@@ -207,9 +205,8 @@ func benchmarkImmSetDifference(b *testing.B, numItems int) {
207205
s1 = s1.Insert(int(rand.IntN(numItems)))
208206
s2 = s2.Insert(int(rand.IntN(numItems)))
209207
}
210-
b.ResetTimer()
211208

212-
for n := 0; n < b.N; n++ {
209+
for b.Loop() {
213210
s1.Difference(s2)
214211
}
215212
}
@@ -233,8 +230,8 @@ func benchmarkImmSetUnion(b *testing.B, numItems int) {
233230
}
234231
s1 := NewImmSet(a1...)
235232
s2 := NewImmSet(a2...)
236-
b.ResetTimer()
237-
for n := 0; n < b.N; n++ {
233+
234+
for b.Loop() {
238235
s1.Union(s2)
239236
}
240237
}

pkg/datapath/iptables/ipset/ipset_test.go

+2-4
Original file line numberDiff line numberDiff line change
@@ -586,8 +586,6 @@ func BenchmarkManager(b *testing.B) {
586586
tlog := hivetest.Logger(b)
587587
assert.NoError(b, hive.Start(tlog, context.Background()))
588588

589-
b.ResetTimer()
590-
591589
numEntries := 1000
592590

593591
toNetIP := func(i int) netip.Addr {
@@ -596,8 +594,8 @@ func BenchmarkManager(b *testing.B) {
596594
return netip.AddrFrom4(addr1)
597595
}
598596

599-
for n := 0; n < b.N; n++ {
600-
for i := 0; i < numEntries; i++ {
597+
for b.Loop() {
598+
for i := range numEntries {
601599
ip := toNetIP(i)
602600
mgr.AddToIPSet(CiliumNodeIPSetV4, INetFamily, ip)
603601
}

pkg/datapath/loader/loader_test.go

+3-4
Original file line numberDiff line numberDiff line change
@@ -256,8 +256,7 @@ func BenchmarkCompileOnly(b *testing.B) {
256256
dirInfo := getDirs(b)
257257
option.Config.Debug = true
258258

259-
b.ResetTimer()
260-
for i := 0; i < b.N; i++ {
259+
for b.Loop() {
261260
if err := compileDatapath(ctx, dirInfo, false, log); err != nil {
262261
b.Fatal(err)
263262
}
@@ -282,8 +281,8 @@ func BenchmarkReplaceDatapath(b *testing.B) {
282281
}
283282

284283
objPath := fmt.Sprintf("%s/%s", dirInfo.Output, endpointObj)
285-
b.ResetTimer()
286-
for i := 0; i < b.N; i++ {
284+
285+
for b.Loop() {
287286
spec, err := bpf.LoadCollectionSpec(objPath)
288287
if err != nil {
289288
b.Fatal(err)

pkg/datapath/sockets/sockets_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ func BenchmarkSocketReqSerialize(b *testing.B) {
172172
},
173173
}
174174

175-
for i := 0; i < b.N; i++ {
175+
for b.Loop() {
176176
for _, req := range requests {
177177
req.Serialize()
178178
}
@@ -185,7 +185,7 @@ func BenchmarkSocketDeserialize(b *testing.B) {
185185
{2, 1, 0, 0, 189, 137, 1, 187, 192, 168, 50, 194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, 99, 52, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 146, 138, 10, 0, 5, 0, 8, 0, 0, 0, 0, 0, 8, 0, 15, 0, 0, 0, 0, 0, 12, 0, 21, 0, 1, 42, 0, 0, 0, 0, 0, 0, 6, 0, 22, 0, 80, 0, 0, 0},
186186
}
187187

188-
for i := 0; i < b.N; i++ {
188+
for b.Loop() {
189189
for _, buf := range buffers {
190190
var sock Socket
191191
sock.Deserialize(buf)

pkg/endpoint/bpf_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ func BenchmarkWriteHeaderfile(b *testing.B) {
6868

6969
for _, bm := range benchmarks {
7070
b.Run(bm.name, func(b *testing.B) {
71-
for i := 0; i < b.N; i++ {
71+
for b.Loop() {
7272
if err := bm.write(bm.output); err != nil {
7373
b.Fatal(err)
7474
}

pkg/endpoint/directory_test.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,7 @@ func benchmarkMoveNewFilesTo(b *testing.B, numFiles int) {
9898
}
9999
}
100100

101-
b.ResetTimer()
102-
for i := 0; i < b.N; i++ {
101+
for b.Loop() {
103102
if err := copyExistingState(oldDir, newDir); err != nil {
104103
b.Fatal(err)
105104
}

pkg/endpoint/endpoint_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -714,8 +714,8 @@ func BenchmarkEndpointGetModel(b *testing.B) {
714714
}
715715

716716
b.ReportAllocs()
717-
b.ResetTimer()
718-
for i := 0; i < b.N; i++ {
717+
718+
for b.Loop() {
719719
e.GetModel()
720720
}
721721
}

pkg/endpoint/id/id_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,8 @@ func BenchmarkSplitID(b *testing.B) {
8888
{string(PodNamePrefix + ":default:foobar"), PodNamePrefix, "default:foobar"},
8989
}
9090
count := 0
91-
b.ResetTimer()
92-
for i := 0; i < b.N; i++ {
91+
92+
for b.Loop() {
9393
for _, test := range tests {
9494
pt, str := splitID(test.str)
9595
if pt == test.prefixType && str == test.id {

pkg/endpoint/restore_test.go

+1-4
Original file line numberDiff line numberDiff line change
@@ -211,8 +211,6 @@ func TestReadEPsFromDirNamesWithRestoreFailure(t *testing.T) {
211211
func BenchmarkReadEPsFromDirNames(b *testing.B) {
212212
s := setupEndpointSuite(b)
213213

214-
b.StopTimer()
215-
216214
// For this benchmark, the real linux datapath is necessary to properly
217215
// serialize config files to disk and benchmark the restore.
218216

@@ -239,9 +237,8 @@ func BenchmarkReadEPsFromDirNames(b *testing.B) {
239237

240238
epsNames = append(epsNames, ep.DirectoryPath())
241239
}
242-
b.StartTimer()
243240

244-
for i := 0; i < b.N; i++ {
241+
for b.Loop() {
245242
eps := ReadEPsFromDirNames(context.TODO(), nil, nil, nil, s.orchestrator, nil, nil, nil, nil, nil, nil, s.repo, nil, tmpDir, epsNames)
246243
require.Len(b, eps, len(epsWanted))
247244
}

pkg/fqdn/bootstrap/fqdn_bootstrapper_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -179,10 +179,10 @@ func BenchmarkNotifyOnDNSMsg(b *testing.B) {
179179
}
180180

181181
b.ReportAllocs()
182-
b.ResetTimer()
182+
183183
// Simulate parallel DNS responses from the upstream DNS for cilium.io and
184184
// ebpf.io, done by every endpoint.
185-
for i := 0; i < b.N; i++ {
185+
for b.Loop() {
186186
for _, ep := range endpoints {
187187
wg.Add(1)
188188
go func() {

0 commit comments

Comments
 (0)