Skip to content

Commit

Permalink
skip responder test if we can't bind to a port (#372)
Browse files Browse the repository at this point in the history
Summary:
Pull Request resolved: #372

Avoids failure on Github CI.
```
2024-06-19T12:58:52.4053342Z === RUN   TestServer
2024-06-19T12:58:52.4074565Z     server_test.go:173:
2024-06-19T12:58:52.4075930Z         	Error Trace:	/home/runner/work/time/time/ntp/responder/server/server_test.go:173
2024-06-19T12:58:52.4078272Z         	Error:      	Expected nil, but got: &net.OpError{Op:"listen", Net:"udp", Source:net.Addr(nil), Addr:(*net.UDPAddr)(0xc00011c030), Err:(*os.SyscallError)(0xc000134000)}
2024-06-19T12:58:52.4080083Z         	Test:       	TestServer
2024-06-19T12:58:52.4080739Z --- FAIL: TestServer (0.00s)
2024-06-19T12:58:52.4081199Z FAIL
```
Also remove clearly broken (not even compiling) tests for darwin and freebsd:
```
~/d/time-fork go test github.com/facebook/time/ntp/responder/server/...
# github.com/facebook/time/ntp/responder/server [github.com/facebook/time/ntp/responder/server.test]
ntp/responder/server/server_darwin_test.go:49:17: undefined: tc
FAIL	github.com/facebook/time/ntp/responder/server [build failed]
FAIL
```

Reviewed By: deathowl

Differential Revision: D58785363

fbshipit-source-id: 4ae91df7d71bccb0f38e27d4f86293f953b98829
  • Loading branch information
abulimov authored and facebook-github-bot committed Jun 19, 2024
1 parent 9a1041c commit c05fe48
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 20 deletions.
6 changes: 6 additions & 0 deletions ntp/responder/server/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ package server
import (
"context"
"encoding/binary"
"errors"
"fmt"
"net"
"time"
Expand Down Expand Up @@ -174,6 +175,11 @@ func (s *Server) startListener(conn *net.UDPConn) {
// read kernel timestamp from incoming packet
bbuf, clisa, rxTS, err := timestamp.ReadPacketWithRXTimestampBuf(connFd, buf, oob)
if err != nil {
if errors.Is(err, unix.EBADF) {
// our connection was closed
log.Warning("listener connection closed, exiting listener server")
return
}
log.Errorf("Failed to read packet on %s: %v", conn.LocalAddr(), err)
s.Stats.IncReadError()
continue
Expand Down
6 changes: 0 additions & 6 deletions ntp/responder/server/server_darwin_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,3 @@ func TestCheckIPFalse(t *testing.T) {
require.NoError(t, err)
require.False(t, assigned)
}

func TestConfigPHCOffset(t *testing.T) {
offset, err := tc.PHCOffset()
require.Nil(t, err)
require.Equal(t, 0, offset)
}
6 changes: 0 additions & 6 deletions ntp/responder/server/server_freebsd_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,3 @@ func TestCheckIPFalse(t *testing.T) {
require.NoError(t, err)
require.False(t, assigned)
}

func TestConfigPHCOffset(t *testing.T) {
offset, err := tc.PHCOffset()
require.Nil(t, err)
require.Equal(t, 0, offset)
}
24 changes: 16 additions & 8 deletions ntp/responder/server/server_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,16 @@ var ntpRequest = &ntp.Packet{
TxTimeFrac: 2718216404,
}

// try to listen on any port, if it fails - skip the test
func tryListenUDP(t *testing.T) *net.UDPConn {
conn, err := net.ListenUDP("udp", &net.UDPAddr{IP: net.ParseIP("127.0.0.1"), Port: 0})
if err != nil {
t.Skipf("failed to listen on any port: %v", err)
return nil
}
return conn
}

func TestFillStaticHeadersStratum(t *testing.T) {
stratum := 1
s := &Server{Config: Config{Stratum: stratum}}
Expand Down Expand Up @@ -116,12 +126,12 @@ func TestListener(t *testing.T) {
},
Config: Config{Workers: 42, TimestampType: timestamp.SW},
}
conn, err := net.ListenUDP("udp", &net.UDPAddr{IP: net.ParseIP("127.0.0.1"), Port: 0})
require.Nil(t, err)
conn := tryListenUDP(t)
defer conn.Close()
go s.startListener(conn)
time.Sleep(100 * time.Millisecond)

err = s.Checker.Check()
err := s.Checker.Check()
require.NoError(t, err)
}

Expand All @@ -136,8 +146,7 @@ func TestWorker(t *testing.T) {
}

// listen to incoming udp ntp.
conn, err := net.ListenUDP("udp", &net.UDPAddr{IP: net.ParseIP("127.0.0.1"), Port: 0})
require.NoError(t, err)
conn := tryListenUDP(t)
defer conn.Close()

// get connection file descriptor
Expand Down Expand Up @@ -169,15 +178,14 @@ func TestServer(t *testing.T) {
for i := 0; i < workers; i++ {
go s.startWorker()
}
conn, err := net.ListenUDP("udp", &net.UDPAddr{IP: net.ParseIP("127.0.0.1"), Port: 0})
require.Nil(t, err)
conn := tryListenUDP(t)
defer conn.Close()
localAddr := conn.LocalAddr().(*net.UDPAddr)
go s.startListener(conn)

time.Sleep(100 * time.Millisecond)

err = s.Checker.Check()
err := s.Checker.Check()
require.NoError(t, err)

// talk to local server
Expand Down

0 comments on commit c05fe48

Please sign in to comment.