From 42a2fb445f94f4528a105898ace03b7875f4a0cb Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Tue, 22 Jun 2021 23:32:27 +1000 Subject: [PATCH] Rearrange some tracker tests and files --- tracker/expvar.go | 1 - tracker/peer.go | 1 - .../{server_test.go => udp-server_test.go} | 0 tracker/udp/udp_test.go | 75 +++++++++++++++++++ tracker/udp_test.go | 65 ---------------- 5 files changed, 75 insertions(+), 67 deletions(-) delete mode 100644 tracker/expvar.go delete mode 100644 tracker/peer.go rename tracker/{server_test.go => udp-server_test.go} (100%) create mode 100644 tracker/udp/udp_test.go diff --git a/tracker/expvar.go b/tracker/expvar.go deleted file mode 100644 index bf031739..00000000 --- a/tracker/expvar.go +++ /dev/null @@ -1 +0,0 @@ -package tracker diff --git a/tracker/peer.go b/tracker/peer.go deleted file mode 100644 index bf031739..00000000 --- a/tracker/peer.go +++ /dev/null @@ -1 +0,0 @@ -package tracker diff --git a/tracker/server_test.go b/tracker/udp-server_test.go similarity index 100% rename from tracker/server_test.go rename to tracker/udp-server_test.go diff --git a/tracker/udp/udp_test.go b/tracker/udp/udp_test.go new file mode 100644 index 00000000..862aec73 --- /dev/null +++ b/tracker/udp/udp_test.go @@ -0,0 +1,75 @@ +package udp + +import ( + "bytes" + "encoding/binary" + "io" + "net" + "testing" + + "github.com/anacrolix/dht/v2/krpc" + "github.com/stretchr/testify/require" +) + +// Ensure net.IPs are stored big-endian, to match the way they're read from +// the wire. +func TestNetIPv4Bytes(t *testing.T) { + ip := net.IP([]byte{127, 0, 0, 1}) + if ip.String() != "127.0.0.1" { + t.FailNow() + } + if string(ip) != "\x7f\x00\x00\x01" { + t.Fatal([]byte(ip)) + } +} + +func TestMarshalAnnounceResponse(t *testing.T) { + peers := krpc.CompactIPv4NodeAddrs{ + {[]byte{127, 0, 0, 1}, 2}, + {[]byte{255, 0, 0, 3}, 4}, + } + b, err := peers.MarshalBinary() + require.NoError(t, err) + require.EqualValues(t, + "\x7f\x00\x00\x01\x00\x02\xff\x00\x00\x03\x00\x04", + b) + require.EqualValues(t, 12, binary.Size(AnnounceResponseHeader{})) +} + +// Failure to write an entire packet to UDP is expected to given an error. +func TestLongWriteUDP(t *testing.T) { + t.Parallel() + l, err := net.ListenUDP("udp4", nil) + require.NoError(t, err) + defer l.Close() + c, err := net.DialUDP("udp", nil, l.LocalAddr().(*net.UDPAddr)) + if err != nil { + t.Fatal(err) + } + defer c.Close() + for msgLen := 1; ; msgLen *= 2 { + n, err := c.Write(make([]byte, msgLen)) + if err != nil { + require.Contains(t, err.Error(), "message too long") + return + } + if n < msgLen { + t.FailNow() + } + } +} + +func TestShortBinaryRead(t *testing.T) { + var data ResponseHeader + err := binary.Read(bytes.NewBufferString("\x00\x00\x00\x01"), binary.BigEndian, &data) + if err != io.ErrUnexpectedEOF { + t.FailNow() + } +} + +func TestConvertInt16ToInt(t *testing.T) { + i := 50000 + if int(uint16(int16(i))) != 50000 { + t.FailNow() + } +} diff --git a/tracker/udp_test.go b/tracker/udp_test.go index 639eede6..32304730 100644 --- a/tracker/udp_test.go +++ b/tracker/udp_test.go @@ -4,10 +4,8 @@ import ( "bytes" "context" "crypto/rand" - "encoding/binary" "errors" "fmt" - "io" "io/ioutil" "net" "net/url" @@ -27,69 +25,6 @@ var trackers = []string{ "udp://tracker.openbittorrent.com:6969/announce", } -// Ensure net.IPs are stored big-endian, to match the way they're read from -// the wire. -func TestNetIPv4Bytes(t *testing.T) { - ip := net.IP([]byte{127, 0, 0, 1}) - if ip.String() != "127.0.0.1" { - t.FailNow() - } - if string(ip) != "\x7f\x00\x00\x01" { - t.Fatal([]byte(ip)) - } -} - -func TestMarshalAnnounceResponse(t *testing.T) { - peers := krpc.CompactIPv4NodeAddrs{ - {[]byte{127, 0, 0, 1}, 2}, - {[]byte{255, 0, 0, 3}, 4}, - } - b, err := peers.MarshalBinary() - require.NoError(t, err) - require.EqualValues(t, - "\x7f\x00\x00\x01\x00\x02\xff\x00\x00\x03\x00\x04", - b) - require.EqualValues(t, 12, binary.Size(udp.AnnounceResponseHeader{})) -} - -// Failure to write an entire packet to UDP is expected to given an error. -func TestLongWriteUDP(t *testing.T) { - t.Parallel() - l, err := net.ListenUDP("udp4", nil) - require.NoError(t, err) - defer l.Close() - c, err := net.DialUDP("udp", nil, l.LocalAddr().(*net.UDPAddr)) - if err != nil { - t.Fatal(err) - } - defer c.Close() - for msgLen := 1; ; msgLen *= 2 { - n, err := c.Write(make([]byte, msgLen)) - if err != nil { - require.Contains(t, err.Error(), "message too long") - return - } - if n < msgLen { - t.FailNow() - } - } -} - -func TestShortBinaryRead(t *testing.T) { - var data udp.ResponseHeader - err := binary.Read(bytes.NewBufferString("\x00\x00\x00\x01"), binary.BigEndian, &data) - if err != io.ErrUnexpectedEOF { - t.FailNow() - } -} - -func TestConvertInt16ToInt(t *testing.T) { - i := 50000 - if int(uint16(int16(i))) != 50000 { - t.FailNow() - } -} - func TestAnnounceLocalhost(t *testing.T) { t.Parallel() srv := server{ -- 2.44.0