@cryptotaxi247 / netdata-1 / commits / 9e9d16ac8

chore(go): go fix (#22248)

Ilya Mashchenko committed Apr 22, 2026 at 12:10 UTC 9e9d16ac849853fde77269a898b211058da41e99
8 files changed +58 -89
src/go/pkg/netipc/protocol/codec_edge_test.go
+1 -1
@@ -831,7 +831,7 @@ func TestBatchBuilderFinishNoCompaction(t *testing.T) {
831 }
832
833 // Verify access
834 - for i := uint32(0); i < count; i++ {
834 + for i := range count {
835 _, err := BatchItemGet(buf[:total], count, i)
836 if err != nil {
837 t.Fatalf("item %d: %v", i, err)
src/go/pkg/netipc/protocol/frame.go
+2 -2
@@ -272,7 +272,7 @@ func BatchDirDecode(buf []byte, itemCount uint32, packedAreaLen uint32) ([]Batch
272 }
273
274 out := make([]BatchEntry, count)
275 - for i := 0; i < count; i++ {
275 + for i := range count {
276 base := i * 8
277 off := ne.Uint32(buf[base : base+4])
278 length := ne.Uint32(buf[base+4 : base+8])
@@ -296,7 +296,7 @@ func BatchDirValidate(buf []byte, itemCount uint32, packedAreaLen uint32) error
296 if len(buf) < dirSize {
297 return ErrTruncated
298 }
299 - for i := 0; i < count; i++ {
299 + for i := range count {
300 base := i * 8
301 off := ne.Uint32(buf[base : base+4])
302 length := ne.Uint32(buf[base+4 : base+8])
src/go/pkg/netipc/protocol/frame_test.go
+2 -2
@@ -1430,7 +1430,7 @@ func TestCgroupsResponseLargeSnapshot(t *testing.T) {
1430 buf := make([]byte, 1024*1024)
1431 b := NewCgroupsBuilder(buf, n, 1, 12345)
1432
1433 - for i := 0; i < n; i++ {
1433 + for i := range n {
1434 name := []byte("cgroup-" + string(rune('A'+i%26)))
1435 path := []byte("/sys/fs/cgroup/system.slice/cgroup-" + string(rune('A'+i%26)))
1436 if err := b.Add(uint32(i), uint32(i%4), uint32(i%2), name, path); err != nil {
@@ -1448,7 +1448,7 @@ func TestCgroupsResponseLargeSnapshot(t *testing.T) {
1448 t.Fatalf("ItemCount = %d, want %d", view.ItemCount, n)
1449 }
1450
1451 - for i := uint32(0); i < n; i++ {
1451 + for i := range uint32(n) {
1452 item, err := view.Item(i)
1453 if err != nil {
1454 t.Fatalf("item %d: %v", i, err)
src/go/pkg/netipc/transport/posix/shm_linux.go
+2 -8
@@ -341,10 +341,7 @@ func ShmClientAttach(runDir, serviceName string, sessionID uint64) (*ShmContext,
341 // Validate region size
342 reqEnd := int(reqOff) + int(reqCap)
343 respEnd := int(respOff) + int(respCap)
344 - needed := reqEnd
345 - if respEnd > needed {
346 - needed = respEnd
347 - }
344 + needed := max(respEnd, reqEnd)
345 if fileSize < needed {
346 syscall.Munmap(data)
347 f.Close()
@@ -496,10 +493,7 @@ func (c *ShmContext) ShmReceive(buf []byte, timeoutMs uint32) (int, error) {
493 }
494
495 // Limit copy to the smaller of caller buffer and SHM area capacity
499 - maxCopy := len(buf)
500 - if int(areaCap) < maxCopy {
501 - maxCopy = int(areaCap)
502 - }
496 + maxCopy := min(int(areaCap), len(buf))
497
498 // Phase 1: spin. Copy immediately on observing the advance.
499 observed := false
src/go/pkg/netipc/transport/posix/shm_linux_test.go
+16 -24
@@ -96,9 +96,7 @@ func TestShmDirectRoundtrip(t *testing.T) {
96 var wg sync.WaitGroup
97 var serverErr error
98
99 - wg.Add(1)
100 - go func() {
101 - defer wg.Done()
99 + wg.Go(func() {
100 ctx, err := ShmServerCreate(testShmRunDir, svc, 1, 4096, 4096)
101 if err != nil {
102 serverErr = fmt.Errorf("server create: %w", err)
@@ -130,7 +128,7 @@ func TestShmDirectRoundtrip(t *testing.T) {
128 if err := ctx.ShmSend(resp); err != nil {
129 serverErr = fmt.Errorf("server send: %w", err)
130 }
133 - }()
131 + })
132
133 client := waitShmClientAttach(t, testShmRunDir, svc, 1)
134 defer client.ShmClose()
@@ -181,9 +179,7 @@ func TestShmMultipleRoundtrips(t *testing.T) {
179 var wg sync.WaitGroup
180 var serverErr error
181
184 - wg.Add(1)
185 - go func() {
186 - defer wg.Done()
182 + wg.Go(func() {
183 ctx, err := ShmServerCreate(testShmRunDir, svc, 2, 4096, 4096)
184 if err != nil {
185 serverErr = fmt.Errorf("server create: %w", err)
@@ -192,7 +188,7 @@ func TestShmMultipleRoundtrips(t *testing.T) {
188 defer ctx.ShmDestroy()
189
190 buf := make([]byte, 65536)
195 - for i := 0; i < 10; i++ {
191 + for i := range 10 {
192 mlen, err := ctx.ShmReceive(buf, 5000)
193 if err != nil {
194 serverErr = fmt.Errorf("server receive %d: %w", i, err)
@@ -211,13 +207,13 @@ func TestShmMultipleRoundtrips(t *testing.T) {
207 return
208 }
209 }
214 - }()
210 + })
211
212 client := waitShmClientAttach(t, testShmRunDir, svc, 2)
213 defer client.ShmClose()
214
215 respBuf := make([]byte, 65536)
220 - for i := uint64(0); i < 10; i++ {
216 + for i := range uint64(10) {
217 payload := []byte{byte(i)}
218 msg := buildShmMessage(protocol.KindRequest, 1, i+1, payload)
219 if err := client.ShmSend(msg); err != nil {
@@ -322,9 +318,7 @@ func TestShmLargeMessage(t *testing.T) {
318 var wg sync.WaitGroup
319 var serverErr error
320
325 - wg.Add(1)
326 - go func() {
327 - defer wg.Done()
321 + wg.Go(func() {
322 ctx, err := ShmServerCreate(testShmRunDir, svc, 4, 65536, 65536)
323 if err != nil {
324 serverErr = fmt.Errorf("server create: %w", err)
@@ -350,7 +344,7 @@ func TestShmLargeMessage(t *testing.T) {
344 if err := ctx.ShmSend(resp); err != nil {
345 serverErr = fmt.Errorf("server send: %w", err)
346 }
353 - }()
347 + })
348
349 client := waitShmClientAttach(t, testShmRunDir, svc, 4)
350 defer client.ShmClose()
@@ -515,12 +509,12 @@ func TestShmMultiClient(t *testing.T) {
509 slots := make([]serverSlot, numClients)
510
511 // Create server regions and start goroutines that receive + echo
518 - for i := 0; i < numClients; i++ {
512 + for i := range numClients {
513 sessionID := uint64(i + 1)
514 ctx, err := ShmServerCreate(testShmRunDir, svc, sessionID, 4096, 4096)
515 if err != nil {
516 // Clean up already-created regions
523 - for j := 0; j < i; j++ {
517 + for j := range i {
518 slots[j].ctx.ShmDestroy()
519 }
520 t.Fatalf("server create session %d: %v", sessionID, err)
@@ -528,9 +522,7 @@ func TestShmMultiClient(t *testing.T) {
522 slots[i].ctx = ctx
523
524 idx := i
531 - wg.Add(1)
532 - go func() {
533 - defer wg.Done()
525 + wg.Go(func() {
526 buf := make([]byte, 65536)
527 mlen, err := slots[idx].ctx.ShmReceive(buf, 5000)
528 if err != nil {
@@ -553,13 +545,13 @@ func TestShmMultiClient(t *testing.T) {
545 if err := slots[idx].ctx.ShmSend(resp); err != nil {
546 slots[idx].err = fmt.Errorf("send: %w", err)
547 }
556 - }()
548 + })
549 }
550
551 // Attach clients and send unique messages
552 clients := make([]*ShmContext, numClients)
553 payloads := make([][]byte, numClients)
562 - for i := 0; i < numClients; i++ {
554 + for i := range numClients {
555 sessionID := uint64(i + 1)
556 c := waitShmClientAttach(t, testShmRunDir, svc, sessionID)
557 defer c.ShmClose()
@@ -574,7 +566,7 @@ func TestShmMultiClient(t *testing.T) {
566 }
567
568 // Each client receives its own response
577 - for i := 0; i < numClients; i++ {
569 + for i := range numClients {
570 respBuf := make([]byte, 65536)
571 rlen, err := clients[i].ShmReceive(respBuf, 5000)
572 if err != nil {
@@ -603,7 +595,7 @@ func TestShmMultiClient(t *testing.T) {
595 wg.Wait()
596
597 // Check for server errors and verify no cross-contamination
606 - for i := 0; i < numClients; i++ {
598 + for i := range numClients {
599 if slots[i].err != nil {
600 t.Errorf("server %d error: %v", i, slots[i].err)
601 continue
@@ -620,7 +612,7 @@ func TestShmMultiClient(t *testing.T) {
612 }
613
614 // Cleanup all server regions
623 - for i := 0; i < numClients; i++ {
615 + for i := range numClients {
616 slots[i].ctx.ShmDestroy()
617 }
618 }
src/go/pkg/netipc/transport/posix/uds.go
+2 -8
@@ -266,10 +266,7 @@ func (s *Session) sendInner(hdr *protocol.Header, payload []byte) error {
266 return wrapErr(ErrBadParam, "packet_size too small")
267 }
268
269 - firstChunkPayload := len(payload)
270 - if firstChunkPayload > chunkPayloadBudget {
271 - firstChunkPayload = chunkPayloadBudget
272 - }
269 + firstChunkPayload := min(len(payload), chunkPayloadBudget)
270
271 remainingAfterFirst := len(payload) - firstChunkPayload
272 continuationChunks := uint32(0)
@@ -289,10 +286,7 @@ func (s *Session) sendInner(hdr *protocol.Header, payload []byte) error {
286 offset := firstChunkPayload
287 for ci := uint32(1); ci < chunkCount; ci++ {
288 remaining := len(payload) - offset
292 - thisChunk := remaining
293 - if thisChunk > chunkPayloadBudget {
294 - thisChunk = chunkPayloadBudget
295 - }
289 + thisChunk := min(remaining, chunkPayloadBudget)
290
291 chk := protocol.ChunkHeader{
292 Magic: protocol.MagicChunk,
src/go/pkg/netipc/transport/posix/uds_test.go
+32 -42
@@ -202,7 +202,7 @@ func TestMultiClient(t *testing.T) {
202 clients := make([]*Session, numClients)
203 servers := make([]*Session, numClients)
204
205 - for i := 0; i < numClients; i++ {
205 + for i := range numClients {
206 acceptCh := acceptAsync(listener)
207
208 cCfg := defaultClientConfig()
@@ -220,15 +220,15 @@ func TestMultiClient(t *testing.T) {
220 }
221
222 defer func() {
223 - for i := 0; i < numClients; i++ {
223 + for i := range numClients {
224 clients[i].Close()
225 servers[i].Close()
226 }
227 }()
228
229 // Each client sends a unique message
230 - for i := 0; i < numClients; i++ {
231 - payload := []byte(fmt.Sprintf("client_%d", i))
230 + for i := range numClients {
231 + payload := fmt.Appendf(nil, "client_%d", i)
232 hdr := protocol.Header{
233 Kind: protocol.KindRequest,
234 Code: protocol.MethodIncrement,
@@ -242,13 +242,13 @@ func TestMultiClient(t *testing.T) {
242
243 // Each server receives and echoes
244 buf := make([]byte, 4096)
245 - for i := 0; i < numClients; i++ {
245 + for i := range numClients {
246 rHdr, rPayload, err := servers[i].Receive(buf)
247 if err != nil {
248 t.Fatalf("server[%d] Receive: %v", i, err)
249 }
250
251 - expected := []byte(fmt.Sprintf("client_%d", i))
251 + expected := fmt.Appendf(nil, "client_%d", i)
252 if !bytes.Equal(rPayload, expected) {
253 t.Errorf("server[%d] payload = %q, want %q", i, rPayload, expected)
254 }
@@ -265,7 +265,7 @@ func TestMultiClient(t *testing.T) {
265 }
266
267 // Each client receives its echo
268 - for i := 0; i < numClients; i++ {
268 + for i := range numClients {
269 rHdr, rPayload, err := clients[i].Receive(buf)
270 if err != nil {
271 t.Fatalf("client[%d] Receive: %v", i, err)
@@ -273,7 +273,7 @@ func TestMultiClient(t *testing.T) {
273 if rHdr.MessageID != uint64(100+i) {
274 t.Errorf("client[%d] message_id = %d, want %d", i, rHdr.MessageID, 100+i)
275 }
276 - expected := []byte(fmt.Sprintf("client_%d", i))
276 + expected := fmt.Appendf(nil, "client_%d", i)
277 if !bytes.Equal(rPayload, expected) {
278 t.Errorf("client[%d] response payload = %q, want %q", i, rPayload, expected)
279 }
@@ -318,7 +318,7 @@ func TestPipelining(t *testing.T) {
318 ItemCount: 1,
319 MessageID: mid,
320 }
321 - payload := []byte(fmt.Sprintf("req_%d", mid))
321 + payload := fmt.Appendf(nil, "req_%d", mid)
322 if err := client.Send(&hdr, payload); err != nil {
323 t.Fatalf("client Send(%d): %v", mid, err)
324 }
@@ -332,7 +332,7 @@ func TestPipelining(t *testing.T) {
332 }
333 reqs := make([]reqInfo, 0, 3)
334
335 - for i := 0; i < 3; i++ {
335 + for i := range 3 {
336 rHdr, rPayload, err := server.Receive(buf)
337 if err != nil {
338 t.Fatalf("server Receive[%d]: %v", i, err)
@@ -356,7 +356,7 @@ func TestPipelining(t *testing.T) {
356
357 // Client receives 3 responses (should arrive in reverse order)
358 received := make(map[uint64][]byte)
359 - for i := 0; i < 3; i++ {
359 + for i := range 3 {
360 rHdr, rPayload, err := client.Receive(buf)
361 if err != nil {
362 t.Fatalf("client Receive[%d]: %v", i, err)
@@ -374,7 +374,7 @@ func TestPipelining(t *testing.T) {
374 t.Errorf("missing response for message_id %d", mid)
375 continue
376 }
377 - expected := []byte(fmt.Sprintf("resp_req_%d", mid))
377 + expected := fmt.Appendf(nil, "resp_req_%d", mid)
378 if !bytes.Equal(payload, expected) {
379 t.Errorf("message_id %d: payload = %q, want %q", mid, payload, expected)
380 }
@@ -938,11 +938,9 @@ func TestConcurrentSendReceive(t *testing.T) {
938 var wg sync.WaitGroup
939
940 // Server goroutine: receive and echo
941 - wg.Add(1)
942 - go func() {
943 - defer wg.Done()
941 + wg.Go(func() {
942 buf := make([]byte, 65600)
945 - for i := 0; i < numMessages; i++ {
943 + for i := range numMessages {
944 rHdr, rPayload, err := server.Receive(buf)
945 if err != nil {
946 t.Errorf("server Receive[%d]: %v", i, err)
@@ -959,11 +957,11 @@ func TestConcurrentSendReceive(t *testing.T) {
957 return
958 }
959 }
962 - }()
960 + })
961
962 // Client: send all, then receive all
965 - for i := 0; i < numMessages; i++ {
966 - payload := []byte(fmt.Sprintf("message_%d", i))
963 + for i := range numMessages {
964 + payload := fmt.Appendf(nil, "message_%d", i)
965 hdr := protocol.Header{
966 Kind: protocol.KindRequest,
967 Code: protocol.MethodIncrement,
@@ -977,7 +975,7 @@ func TestConcurrentSendReceive(t *testing.T) {
975
976 received := make(map[uint64]bool)
977 buf := make([]byte, 65600)
980 - for i := 0; i < numMessages; i++ {
978 + for i := range numMessages {
979 rHdr, _, err := client.Receive(buf)
980 if err != nil {
981 t.Fatalf("client Receive[%d]: %v", i, err)
@@ -987,7 +985,7 @@ func TestConcurrentSendReceive(t *testing.T) {
985
986 wg.Wait()
987
990 - for i := 0; i < numMessages; i++ {
988 + for i := range numMessages {
989 if !received[uint64(i)] {
990 t.Errorf("missing response for message_id %d", i)
991 }
@@ -1199,7 +1197,7 @@ func TestMultipleChunkedMessages(t *testing.T) {
1197 defer server.Close()
1198
1199 // Send 3 chunked messages sequentially
1202 - for i := 0; i < 3; i++ {
1200 + for i := range 3 {
1201 size := 500 + i*200
1202 payload := make([]byte, size)
1203 for j := range payload {
@@ -1367,11 +1365,9 @@ func TestPipeline10(t *testing.T) {
1365
1366 // Server goroutine: receive and echo
1367 var wg sync.WaitGroup
1370 - wg.Add(1)
1371 - go func() {
1372 - defer wg.Done()
1368 + wg.Go(func() {
1369 buf := make([]byte, 4096)
1374 - for i := 0; i < count; i++ {
1370 + for i := range count {
1371 rHdr, rPayload, err := server.Receive(buf)
1372 if err != nil {
1373 t.Errorf("server Receive[%d]: %v", i, err)
@@ -1388,7 +1384,7 @@ func TestPipeline10(t *testing.T) {
1384 return
1385 }
1386 }
1391 - }()
1387 + })
1388
1389 // Client sends 10 requests before reading any
1390 for i := uint64(1); i <= count; i++ {
@@ -1465,11 +1461,9 @@ func TestPipeline100(t *testing.T) {
1461
1462 // Server goroutine
1463 var wg sync.WaitGroup
1468 - wg.Add(1)
1469 - go func() {
1470 - defer wg.Done()
1464 + wg.Go(func() {
1465 buf := make([]byte, 4096)
1472 - for i := 0; i < count; i++ {
1466 + for i := range count {
1467 rHdr, rPayload, err := server.Receive(buf)
1468 if err != nil {
1469 t.Errorf("server Receive[%d]: %v", i, err)
@@ -1486,7 +1480,7 @@ func TestPipeline100(t *testing.T) {
1480 return
1481 }
1482 }
1489 - }()
1483 + })
1484
1485 // Client sends 100 requests
1486 for i := uint64(1); i <= count; i++ {
@@ -1560,11 +1554,9 @@ func TestPipelineMixedSizes(t *testing.T) {
1554
1555 // Server goroutine
1556 var wg sync.WaitGroup
1563 - wg.Add(1)
1564 - go func() {
1565 - defer wg.Done()
1557 + wg.Go(func() {
1558 buf := make([]byte, 8192)
1567 - for i := 0; i < count; i++ {
1559 + for i := range count {
1560 rHdr, rPayload, err := server.Receive(buf)
1561 if err != nil {
1562 t.Errorf("server Receive[%d]: %v", i, err)
@@ -1581,7 +1573,7 @@ func TestPipelineMixedSizes(t *testing.T) {
1573 return
1574 }
1575 }
1584 - }()
1576 + })
1577
1578 // Client sends all messages
1579 for i, sz := range sizes {
@@ -1668,11 +1660,9 @@ func TestPipelineChunked(t *testing.T) {
1660
1661 // Server goroutine
1662 var wg sync.WaitGroup
1671 - wg.Add(1)
1672 - go func() {
1673 - defer wg.Done()
1663 + wg.Go(func() {
1664 buf := make([]byte, forcedPacketSize)
1675 - for i := 0; i < count; i++ {
1665 + for i := range count {
1666 rHdr, rPayload, err := server.Receive(buf)
1667 if err != nil {
1668 t.Errorf("server Receive[%d]: %v", i, err)
@@ -1689,7 +1679,7 @@ func TestPipelineChunked(t *testing.T) {
1679 return
1680 }
1681 }
1692 - }()
1682 + })
1683
1684 // Client sends all chunked messages
1685 for i, sz := range sizes {
src/go/plugin/agent/discovery/sd/pipeline/accumulator_test.go
+1 -2
@@ -30,8 +30,7 @@ func TestAccumulator_Run_FlushesPendingGroupsWhenDiscoverersExit(t *testing.T) {
30 }),
31 }
32
33 - ctx, cancel := context.WithCancel(context.Background())
34 - defer cancel()
33 + ctx := t.Context()
34
35 updates := make(chan []model.TargetGroup)
36 done := make(chan struct{})