From 91bd287c15fac26bab773f3e4887fecd3357d764 Mon Sep 17 00:00:00 2001 From: Sean DuBois Date: Thu, 30 May 2024 23:31:29 -0400 Subject: [PATCH] Remove testify dependency --- go.mod | 7 - go.sum | 5 - internal/net/buffer_test.go | 262 ++++++++++++++++++++++-------------- 3 files changed, 164 insertions(+), 110 deletions(-) diff --git a/go.mod b/go.mod index bd6ae9f9e..f0c16f9d5 100644 --- a/go.mod +++ b/go.mod @@ -3,15 +3,8 @@ module github.com/pion/dtls/v2 require ( github.com/pion/logging v0.2.2 github.com/pion/transport/v3 v3.0.2 - github.com/stretchr/testify v1.9.0 golang.org/x/crypto v0.22.0 golang.org/x/net v0.24.0 ) -require ( - github.com/davecgh/go-spew v1.1.1 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect -) - go 1.19 diff --git a/go.sum b/go.sum index 80be07f33..8dd49ba60 100644 --- a/go.sum +++ b/go.sum @@ -1,11 +1,9 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/pion/logging v0.2.2 h1:M9+AIj/+pxNsDfAT64+MAVgJO0rsyLnoJKCqf//DoeY= github.com/pion/logging v0.2.2/go.mod h1:k0/tDVsRCX2Mb2ZEmTqNa7CWsQPc+YYCB7Q+5pahoms= github.com/pion/transport/v3 v3.0.2 h1:r+40RJR25S9w3jbA6/5uEPTzcdn7ncyU44RWCbHkLg4= github.com/pion/transport/v3 v3.0.2/go.mod h1:nIToODoOlb5If2jF9y2Igfx3PFYWfuXi37m0IlWa/D0= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= @@ -14,7 +12,6 @@ github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -63,8 +60,6 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/internal/net/buffer_test.go b/internal/net/buffer_test.go index 8a9cd6180..760655451 100644 --- a/internal/net/buffer_test.go +++ b/internal/net/buffer_test.go @@ -7,195 +7,255 @@ package net import ( "bytes" "errors" + "fmt" "io" "net" "testing" "time" - - "github.com/stretchr/testify/assert" ) -func TestBuffer(t *testing.T) { - assert := assert.New(t) +func equalInt(t *testing.T, expected, actual int) { + if expected != actual { + t.Errorf("Expected %d got %d", expected, actual) + } +} +func equalUDPAddr(t *testing.T, expected, actual net.Addr) { + if expected == nil && actual == nil { + return + } + if expected.String() != actual.String() { + t.Errorf("Expected %v got %v", expected, actual) + } +} + +func equalBytes(t *testing.T, expected, actual []byte) { + if !bytes.Equal(expected, actual) { + t.Errorf("Expected %v got %v", expected, actual) + } +} + +func TestBuffer(t *testing.T) { buffer := NewPacketBuffer() packet := make([]byte, 4) addr, err := net.ResolveUDPAddr("udp", "127.0.0.1:5684") - assert.NoError(err) + if err != nil { + t.Fatal(err) + } // Write once. n, err := buffer.WriteTo([]byte{0, 1}, addr) - assert.NoError(err) - assert.Equal(2, n) + if err != nil { + t.Fatal(err) + } + equalInt(t, 2, n) // Read once. var raddr net.Addr - n, raddr, err = buffer.ReadFrom(packet) - assert.NoError(err) - assert.Equal(2, n) - assert.Equal([]byte{0, 1}, packet[:n]) - assert.Equal(addr, raddr) + if n, raddr, err = buffer.ReadFrom(packet); err != nil { + t.Fatal(err) + } + equalInt(t, 2, n) + equalBytes(t, []byte{0, 1}, packet[:n]) + equalUDPAddr(t, addr, raddr) // Read deadline. - err = buffer.SetReadDeadline(time.Unix(0, 1)) - assert.NoError(err) + if err = buffer.SetReadDeadline(time.Unix(0, 1)); err != nil { + t.Fatal(err) + } n, raddr, err = buffer.ReadFrom(packet) - assert.EqualError(err, ErrTimeout.Error()) - assert.Equal(0, n) - assert.Equal(nil, raddr) + if !errors.Is(ErrTimeout, err) { + t.Fatalf("Unexpected err %v wanted ErrTimeout", err) + } + equalInt(t, 0, n) + equalUDPAddr(t, nil, raddr) // Reset deadline. - err = buffer.SetReadDeadline(time.Time{}) - assert.NoError(err) + if err = buffer.SetReadDeadline(time.Time{}); err != nil { + t.Fatal(err) + } // Write twice. - n, err = buffer.WriteTo([]byte{2, 3, 4}, addr) - assert.NoError(err) - assert.Equal(3, n) + if n, err = buffer.WriteTo([]byte{2, 3, 4}, addr); err != nil { + t.Fatal(err) + } + equalInt(t, 3, n) - n, err = buffer.WriteTo([]byte{5, 6, 7}, addr) - assert.NoError(err) - assert.Equal(3, n) + if n, err = buffer.WriteTo([]byte{5, 6, 7}, addr); err != nil { + t.Fatal(err) + } + equalInt(t, 3, n) // Read twice. - n, raddr, err = buffer.ReadFrom(packet) - assert.NoError(err) - assert.Equal(3, n) - assert.Equal([]byte{2, 3, 4}, packet[:n]) - assert.Equal(addr, raddr) + if n, raddr, err = buffer.ReadFrom(packet); err != nil { + t.Fatal(err) + } + equalInt(t, 3, n) + equalBytes(t, []byte{2, 3, 4}, packet[:n]) + equalUDPAddr(t, addr, raddr) - n, raddr, err = buffer.ReadFrom(packet) - assert.NoError(err) - assert.Equal(3, n) - assert.Equal([]byte{5, 6, 7}, packet[:n]) - assert.Equal(addr, raddr) + if n, raddr, err = buffer.ReadFrom(packet); err != nil { + t.Fatal(err) + } + equalInt(t, 3, n) + equalBytes(t, []byte{5, 6, 7}, packet[:n]) + equalUDPAddr(t, addr, raddr) // Write once prior to close. - _, err = buffer.WriteTo([]byte{3}, addr) - assert.NoError(err) + if _, err = buffer.WriteTo([]byte{3}, addr); err != nil { + t.Fatal(err) + } // Close. - assert.NoError(buffer.Close()) + if err = buffer.Close(); err != nil { + t.Fatal(err) + } // Future writes will error. - _, err = buffer.WriteTo([]byte{4}, addr) - assert.Error(err) + if _, err = buffer.WriteTo([]byte{4}, addr); err == nil { + t.Fatal("Expected error") + } // But we can read the remaining data. - n, raddr, err = buffer.ReadFrom(packet) - assert.NoError(err) - assert.Equal(1, n) - assert.Equal([]byte{3}, packet[:n]) - assert.Equal(addr, raddr) + if n, raddr, err = buffer.ReadFrom(packet); err != nil { + t.Fatal(err) + } + equalInt(t, 1, n) + equalBytes(t, []byte{3}, packet[:n]) + equalUDPAddr(t, addr, raddr) // Until EOF. - _, _, err = buffer.ReadFrom(packet) - assert.Equal(io.EOF, err) + if _, _, err = buffer.ReadFrom(packet); !errors.Is(io.EOF, err) { + t.Fatalf("Unexpected err %v wanted io.EOF", err) + } } func TestShortBuffer(t *testing.T) { - assert := assert.New(t) - buffer := NewPacketBuffer() addr, err := net.ResolveUDPAddr("udp", "127.0.0.1:5684") - assert.NoError(err) + if err != nil { + t.Fatal(err) + } // Write once. n, err := buffer.WriteTo([]byte{0, 1, 2, 3}, addr) - assert.NoError(err) - assert.Equal(4, n) + if err != nil { + t.Fatal(err) + } + equalInt(t, 4, n) // Try to read with a short buffer. packet := make([]byte, 3) var raddr net.Addr n, raddr, err = buffer.ReadFrom(packet) - assert.Equal(io.ErrShortBuffer, err) - assert.Equal(nil, raddr) - assert.Equal(0, n) + if !errors.Is(io.ErrShortBuffer, err) { + t.Fatalf("Unexpected err %v wanted io.ErrShortBuffer", err) + } + equalUDPAddr(t, nil, raddr) + equalInt(t, 0, n) // Close. - assert.NoError(buffer.Close()) + if err = buffer.Close(); err != nil { + t.Fatal(err) + } // Make sure you can Close twice. - assert.NoError(buffer.Close()) + if err = buffer.Close(); err != nil { + t.Fatal(err) + } } func TestWraparound(t *testing.T) { - assert := assert.New(t) - buffer := NewPacketBuffer() addr, err := net.ResolveUDPAddr("udp", "127.0.0.1:5684") - assert.NoError(err) + if err != nil { + t.Fatal(err) + } // Write multiple. n, err := buffer.WriteTo([]byte{0, 1, 2, 3}, addr) - assert.NoError(err) - assert.Equal(4, n) + if err != nil { + t.Fatal(err) + } + equalInt(t, 4, n) - n, err = buffer.WriteTo([]byte{4, 5}, addr) - assert.NoError(err) - assert.Equal(2, n) + if n, err = buffer.WriteTo([]byte{4, 5}, addr); err != nil { + t.Fatal(err) + } + equalInt(t, 2, n) - n, err = buffer.WriteTo([]byte{6, 7, 8}, addr) - assert.NoError(err) - assert.Equal(3, n) + if n, err = buffer.WriteTo([]byte{6, 7, 8}, addr); err != nil { + t.Fatal(err) + } + equalInt(t, 3, n) // Verify underlying buffer length. // Packet 1: buffer does not grow. // Packet 2: buffer doubles from 1 to 2. // Packet 3: buffer doubles from 2 to 4. - assert.Equal(4, len(buffer.packets)) + equalInt(t, 4, len(buffer.packets)) // Read once. packet := make([]byte, 4) var raddr net.Addr - n, raddr, err = buffer.ReadFrom(packet) - assert.NoError(err) - assert.Equal(4, n) - assert.Equal([]byte{0, 1, 2, 3}, packet[:n]) - assert.Equal(addr, raddr) + if n, raddr, err = buffer.ReadFrom(packet); err != nil { + t.Fatal(err) + } + equalInt(t, 4, n) + equalBytes(t, []byte{0, 1, 2, 3}, packet[:n]) + equalUDPAddr(t, addr, raddr) // Write again. - n, err = buffer.WriteTo([]byte{9, 10, 11}, addr) - assert.NoError(err) - assert.Equal(3, n) + if n, err = buffer.WriteTo([]byte{9, 10, 11}, addr); err != nil { + t.Fatal(err) + } + equalInt(t, 3, n) // Verify underlying buffer length. // No change in buffer size. - assert.Equal(4, len(buffer.packets)) + equalInt(t, 4, len(buffer.packets)) // Write again and verify buffer grew. - n, err = buffer.WriteTo([]byte{12, 13, 14, 15, 16, 17, 18, 19}, addr) - assert.NoError(err) - assert.Equal(8, n) - assert.Equal(4, len(buffer.packets)) + if n, err = buffer.WriteTo([]byte{12, 13, 14, 15, 16, 17, 18, 19}, addr); err != nil { + t.Fatal(err) + } + equalInt(t, 8, n) + equalInt(t, 4, len(buffer.packets)) // Close. - assert.NoError(buffer.Close()) + if err = buffer.Close(); err != nil { + t.Fatal(err) + } } func TestBufferAsync(t *testing.T) { - assert := assert.New(t) - buffer := NewPacketBuffer() addr, err := net.ResolveUDPAddr("udp", "127.0.0.1:5684") - assert.NoError(err) + if err != nil { + t.Fatal(err) + } // Start up a goroutine to start a blocking read. - done := make(chan struct{}) + done := make(chan string) go func() { packet := make([]byte, 4) n, raddr, rErr := buffer.ReadFrom(packet) - assert.NoError(rErr) - assert.Equal(2, n) - assert.Equal([]byte{0, 1}, packet[:n]) - assert.Equal(addr, raddr) + if rErr != nil { + done <- rErr.Error() + return + } - _, _, err = buffer.ReadFrom(packet) - assert.Equal(io.EOF, err) + equalInt(t, 2, n) + equalBytes(t, []byte{0, 1}, packet[:n]) + equalUDPAddr(t, addr, raddr) - close(done) + _, _, err = buffer.ReadFrom(packet) + if !errors.Is(io.EOF, err) { + done <- fmt.Sprintf("Unexpected err %v wanted io.EOF", err) + } else { + close(done) + } }() // Wait for the reader to start reading. @@ -203,16 +263,22 @@ func TestBufferAsync(t *testing.T) { // Write once n, err := buffer.WriteTo([]byte{0, 1}, addr) - assert.NoError(err) - assert.Equal(2, n) + if err != nil { + t.Fatal(err) + } + equalInt(t, 2, n) // Wait for the reader to start reading again. time.Sleep(time.Millisecond) // Close will unblock the reader. - assert.NoError(buffer.Close()) + if err = buffer.Close(); err != nil { + t.Fatal(err) + } - <-done + if routineFail, ok := <-done; ok { + t.Fatal(routineFail) + } } func benchmarkBufferWR(b *testing.B, size int64, write bool, grow int) { // nolint:unparam