spb/internetpressure
Public
TypeScript 36.3%
Python 31.8%
Go 18%
JavaScript 9.8%
Shell 1.9%
SQL 1.4%
CSS 0.5%
1package ping23import (4 "context"5 "net"6 "testing"7 "time"89 "internetpressure.io/probe-agent/internal/protocol"10)1112func TestSummarise(t *testing.T) {13 m := protocol.Measurement{}14 summarise(&m, []time.Duration{10 * time.Millisecond, 12 * time.Millisecond, 11 * time.Millisecond, 13 * time.Millisecond}, 5)15 if !m.OK || m.Error != "" || *m.Sent != 5 || *m.Received != 4 {16 t.Fatalf("%+v", m)17 }18 if *m.PacketLoss != 0.2 || *m.RTTMinMs != 10 || *m.RTTMaxMs != 13 || *m.RTTAvgMs != 11.5 {19 t.Fatalf("stats: loss=%v min=%v avg=%v max=%v", *m.PacketLoss, *m.RTTMinMs, *m.RTTAvgMs, *m.RTTMaxMs)20 }21 // successive diffs: |12-10|=2, |11-12|=1, |13-11|=2 → mean 5/322 if got := *m.JitterMs; got < 1.666 || got > 1.667 {23 t.Fatalf("jitter=%v", got)24 }2526 m = protocol.Measurement{}27 summarise(&m, nil, 5)28 if m.OK || m.Error != protocol.ErrUnreachable || *m.PacketLoss != 1 {29 t.Fatalf("unreachable: %+v", m)30 }31}3233func TestTCPConnects(t *testing.T) {34 ln, err := net.Listen("tcp", "127.0.0.1:0")35 if err != nil {36 t.Fatal(err)37 }38 defer ln.Close()39 go func() {40 for {41 c, err := ln.Accept()42 if err != nil {43 return44 }45 c.Close()46 }47 }()48 port := ln.Addr().(*net.TCPAddr).Port49 c := &Checker{}50 m := c.RunTCP(context.Background(), protocol.Target{TargetID: "t", Hostname: "localhost", IP: strPtr("127.0.0.1"), Port: port})51 if !m.OK || m.Kind != "tcp" || *m.Received != Count || m.ResolvedIP != "127.0.0.1" {52 t.Fatalf("%+v", m)53 }54 // Closed port → refused → unreachable55 ln.Close()56 m = c.RunTCP(context.Background(), protocol.Target{TargetID: "t", Hostname: "localhost", IP: strPtr("127.0.0.1"), Port: port})57 if m.OK || m.Error != protocol.ErrUnreachable {58 t.Fatalf("closed port: %+v", m)59 }60}6162// Loopback ICMP echo; skipped when the platform does not allow unprivileged ICMP sockets.63func TestICMPLoopback(t *testing.T) {64 if !Detect() {65 t.Skip("unprivileged ICMP not available here")66 }67 c := &Checker{ICMP: true}68 m := c.Run(context.Background(), protocol.Target{TargetID: "lo", Hostname: "localhost", IP: strPtr("127.0.0.1")})69 if m.Kind != "ping" {70 t.Fatalf("expected icmp ping, got %+v", m)71 }72 if !m.OK || *m.Received == 0 {73 t.Fatalf("loopback ping failed: %+v", m)74 }75}7677func strPtr(s string) *string { return &s }78