(t *testing.T)
| 48 | |
| 49 | require.Equal(t, int64(1612028735717200436), res.UnixNano()) |
| 50 | } |
| 51 | |
| 52 | func Test_ReadTXtimestamp(t *testing.T) { |
| 53 | conn, err := net.ListenUDP("udp", &net.UDPAddr{IP: net.ParseIP("127.0.0.1"), Port: 0}) |
| 54 | require.Nil(t, err) |
| 55 | defer conn.Close() |
| 56 | |
| 57 | connFd, err := ConnFd(conn) |
| 58 | require.Nil(t, err) |
| 59 | |
| 60 | err = EnableSWTimestamps(connFd) |
| 61 | require.Nil(t, err) |
| 62 | |
| 63 | start := time.Now() |
| 64 | txts, attempts, err := ReadTXtimestamp(connFd) |
| 65 | duration := time.Since(start) |
| 66 | require.Equal(t, time.Time{}, txts) |
| 67 | require.Equal(t, defaultTXTS, attempts) |
| 68 | errStr := fmt.Sprintf("no TX timestamp found after %d tries", defaultTXTS) |
| 69 | require.ErrorContains(t, err, errStr) |
| 70 | require.GreaterOrEqual(t, duration, time.Duration(AttemptsTXTS)*TimeoutTXTS) |
| 71 | |
| 72 | oldAttempts, oldTimeout := AttemptsTXTS, TimeoutTXTS |
| 73 | t.Cleanup(func() { AttemptsTXTS, TimeoutTXTS = oldAttempts, oldTimeout }) |
| 74 | AttemptsTXTS = 10 |
| 75 | TimeoutTXTS = 5 * time.Millisecond |
| 76 | |
| 77 | start = time.Now() |
| 78 | txts, attempts, err = ReadTXtimestamp(connFd) |
| 79 | duration = time.Since(start) |
| 80 | require.Equal(t, time.Time{}, txts) |
| 81 | require.Equal(t, 10, attempts) |
| 82 | errStr = fmt.Sprintf("no TX timestamp found after %d tries", 10) |
| 83 | require.ErrorContains(t, err, errStr) |
| 84 | require.GreaterOrEqual(t, duration, time.Duration(AttemptsTXTS)*TimeoutTXTS) |
| 85 | |
| 86 | addr := &net.UDPAddr{IP: net.ParseIP("127.0.0.1"), Port: 12345} |
| 87 | _, err = conn.WriteTo([]byte{}, addr) |
| 88 | require.Nil(t, err) |
| 89 | txts, attempts, err = ReadTXtimestamp(connFd) |
| 90 | |
| 91 | require.NotEqual(t, time.Time{}, txts) |
| 92 | require.Equal(t, 1, attempts) |
| 93 | require.Nil(t, err) |
nothing calls this directly
no test coverage detected
searching dependent graphs…