Skip to content

Commit

Permalink
deps: Updating polyglot version to v1.2.2 (#170)
Browse files Browse the repository at this point in the history
* Updating `polyglot` version to v1.2.1 and fixing associated test cases

* Bumping polyglot to v1.2.2

Signed-off-by: Shivansh Vij <shivanshvij@loopholelabs.io>

* Removing benchmark reset

Signed-off-by: Shivansh Vij <shivanshvij@loopholelabs.io>

---------

Signed-off-by: Shivansh Vij <shivanshvij@loopholelabs.io>
  • Loading branch information
ShivanshVij committed Mar 27, 2024
1 parent 9fc0317 commit e0e466c
Show file tree
Hide file tree
Showing 12 changed files with 106 additions and 76 deletions.
4 changes: 2 additions & 2 deletions async.go
Original file line number Diff line number Diff line change
Expand Up @@ -301,7 +301,7 @@ func (c *Async) Close() error {

// write packet is the internal write packet function that does not check for reserved operations.
func (c *Async) writePacket(p *packet.Packet, closeOnErr bool) error {
if int(p.Metadata.ContentLength) != len(*p.Content) {
if int(p.Metadata.ContentLength) != p.Content.Len() {
return InvalidContentLength
}

Expand Down Expand Up @@ -343,7 +343,7 @@ func (c *Async) writePacket(p *packet.Packet, closeOnErr bool) error {
return err
}
if p.Metadata.ContentLength != 0 {
_, err = c.writer.Write((*p.Content)[:p.Metadata.ContentLength])
_, err = c.writer.Write(p.Content.Bytes()[:p.Metadata.ContentLength])
if err != nil {
c.Unlock()
if c.closed.Load() {
Expand Down
34 changes: 21 additions & 13 deletions async_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ func TestNewAsync(t *testing.T) {
assert.Equal(t, uint16(64), p.Metadata.Id)
assert.Equal(t, uint16(32), p.Metadata.Operation)
assert.Equal(t, uint32(0), p.Metadata.ContentLength)
assert.Equal(t, 0, len(*p.Content))
assert.Equal(t, 0, p.Content.Len())

data := make([]byte, packetSize)
_, _ = rand.Read(data)
Expand All @@ -77,8 +77,10 @@ func TestNewAsync(t *testing.T) {
assert.Equal(t, uint16(64), p.Metadata.Id)
assert.Equal(t, uint16(32), p.Metadata.Operation)
assert.Equal(t, uint32(packetSize), p.Metadata.ContentLength)
assert.Equal(t, len(data), len(*p.Content))
assert.Equal(t, polyglot.Buffer(data), *p.Content)
assert.Equal(t, len(data), p.Content.Len())
expected := polyglot.NewBufferFromBytes(data)
expected.MoveOffset(len(data))
assert.Equal(t, expected.Bytes(), p.Content.Bytes())

packet.Put(p)

Expand Down Expand Up @@ -124,8 +126,10 @@ func TestAsyncLargeWrite(t *testing.T) {
assert.Equal(t, uint16(64), p.Metadata.Id)
assert.Equal(t, uint16(32), p.Metadata.Operation)
assert.Equal(t, uint32(packetSize), p.Metadata.ContentLength)
assert.Equal(t, len(randomData[i]), len(*p.Content))
assert.Equal(t, polyglot.Buffer(randomData[i]), *p.Content)
assert.Equal(t, len(randomData[i]), p.Content.Len())
expected := polyglot.NewBufferFromBytes(randomData[i])
expected.MoveOffset(len(randomData[i]))
assert.Equal(t, expected.Bytes(), p.Content.Bytes())
packet.Put(p)
}

Expand Down Expand Up @@ -172,8 +176,10 @@ func TestAsyncRawConn(t *testing.T) {
assert.Equal(t, uint16(64), p.Metadata.Id)
assert.Equal(t, uint16(32), p.Metadata.Operation)
assert.Equal(t, uint32(packetSize), p.Metadata.ContentLength)
assert.Equal(t, packetSize, len(*p.Content))
assert.Equal(t, polyglot.Buffer(randomData), *p.Content)
assert.Equal(t, packetSize, p.Content.Len())
expected := polyglot.NewBufferFromBytes(randomData)
expected.MoveOffset(len(randomData))
assert.Equal(t, expected.Bytes(), p.Content.Bytes())
}

rawReaderConn := readerConn.Raw()
Expand Down Expand Up @@ -226,7 +232,7 @@ func TestAsyncReadClose(t *testing.T) {
assert.Equal(t, uint16(64), p.Metadata.Id)
assert.Equal(t, uint16(32), p.Metadata.Operation)
assert.Equal(t, uint32(0), p.Metadata.ContentLength)
assert.Equal(t, 0, len(*p.Content))
assert.Equal(t, 0, p.Content.Len())

err = readerConn.conn.Close()
assert.NoError(t, err)
Expand Down Expand Up @@ -277,15 +283,15 @@ func TestAsyncReadAvailableClose(t *testing.T) {
assert.Equal(t, uint16(64), p.Metadata.Id)
assert.Equal(t, uint16(32), p.Metadata.Operation)
assert.Equal(t, uint32(0), p.Metadata.ContentLength)
assert.Equal(t, 0, len(*p.Content))
assert.Equal(t, 0, p.Content.Len())

p, err = readerConn.ReadPacket()
require.NoError(t, err)
require.NotNil(t, p.Metadata)
assert.Equal(t, uint16(64), p.Metadata.Id)
assert.Equal(t, uint16(32), p.Metadata.Operation)
assert.Equal(t, uint32(0), p.Metadata.ContentLength)
assert.Equal(t, 0, len(*p.Content))
assert.Equal(t, 0, p.Content.Len())

_, err = readerConn.ReadPacket()
require.Error(t, err)
Expand Down Expand Up @@ -324,7 +330,7 @@ func TestAsyncWriteClose(t *testing.T) {
assert.Equal(t, uint16(64), p.Metadata.Id)
assert.Equal(t, uint16(32), p.Metadata.Operation)
assert.Equal(t, uint32(0), p.Metadata.ContentLength)
assert.Equal(t, 0, len(*p.Content))
assert.Equal(t, 0, p.Content.Len())

err = writerConn.WritePacket(p)
assert.NoError(t, err)
Expand Down Expand Up @@ -377,7 +383,7 @@ func TestAsyncTimeout(t *testing.T) {
assert.Equal(t, uint16(64), p.Metadata.Id)
assert.Equal(t, uint16(32), p.Metadata.Operation)
assert.Equal(t, uint32(0), p.Metadata.ContentLength)
assert.Equal(t, 0, len(*p.Content))
assert.Equal(t, 0, p.Content.Len())

time.Sleep(DefaultDeadline * 2)

Expand Down Expand Up @@ -408,7 +414,7 @@ func TestAsyncTimeout(t *testing.T) {
assert.Equal(t, uint16(64), p.Metadata.Id)
assert.Equal(t, uint16(32), p.Metadata.Operation)
assert.Equal(t, uint32(0), p.Metadata.ContentLength)
assert.Equal(t, 0, len(*p.Content))
assert.Equal(t, 0, p.Content.Len())

_, err = readerConn.ReadPacket()
require.ErrorIs(t, err, ConnectionClosed)
Expand Down Expand Up @@ -478,12 +484,14 @@ func BenchmarkAsyncThroughputNetworkMultiple(b *testing.B) {
var err error

randomData := make([]byte, packetSize)
_, _ = rand.Read(randomData)

p := packet.Get()
p.Metadata.Id = 64
p.Metadata.Operation = 32
p.Content.Write(randomData)
p.Metadata.ContentLength = packetSize

for i := 0; i < b.N; i++ {
done := make(chan struct{}, 1)
errCh := make(chan error, 1)
Expand Down
2 changes: 1 addition & 1 deletion client.go
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ func (c *Client) handleConn() {
packetCtx = c.PacketContext(packetCtx, p)
}
outgoing, action = handlerFunc(packetCtx, p)
if outgoing != nil && outgoing.Metadata.ContentLength == uint32(len(*outgoing.Content)) {
if outgoing != nil && outgoing.Metadata.ContentLength == uint32(outgoing.Content.Len()) {
err = c.conn.WritePacket(outgoing)
if outgoing != p {
packet.Put(outgoing)
Expand Down
8 changes: 4 additions & 4 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ go 1.20

require (
github.com/loopholelabs/common v0.4.9
github.com/loopholelabs/polyglot v1.1.4
github.com/loopholelabs/polyglot v1.2.2
github.com/loopholelabs/testing v0.2.3
github.com/rs/zerolog v1.31.0
github.com/stretchr/testify v1.8.4
github.com/rs/zerolog v1.32.0
github.com/stretchr/testify v1.9.0
go.uber.org/atomic v1.11.0
go.uber.org/goleak v1.3.0
)
Expand All @@ -18,6 +18,6 @@ require (
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
golang.org/x/sys v0.15.0 // indirect
golang.org/x/sys v0.18.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
16 changes: 8 additions & 8 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/loopholelabs/common v0.4.9 h1:9MPUYlZZ/qx3Kt8LXgXxcSXthrM91od8026c4DlGpAU=
github.com/loopholelabs/common v0.4.9/go.mod h1:Wop5srN1wYT+mdQ9gZ+kn2I9qKAyVd0FB48pThwIa9M=
github.com/loopholelabs/polyglot v1.1.4 h1:+yCGD3MQnmmX5ln+9mCbSCUgH7GQH0RxKJn/54hAaQU=
github.com/loopholelabs/polyglot v1.1.4/go.mod h1:EA88BEkIluKHAWxhyOV88xXz68YkRdo9IzZ+1dj+7Ao=
github.com/loopholelabs/polyglot v1.2.2 h1:HQQh7CfWw5genuaNUX2RPiyDRz9YOR3tF6SbIl7YuBY=
github.com/loopholelabs/polyglot v1.2.2/go.mod h1:w9F5kdv3EzE2r7scpmj29hoySRr7NNLjpeUL4ALMusA=
github.com/loopholelabs/testing v0.2.3 h1:4nVuK5ctaE6ua5Z0dYk2l7xTFmcpCYLUeGjRBp8keOA=
github.com/loopholelabs/testing v0.2.3/go.mod h1:gqtGY91soYD1fQoKQt/6kP14OYpS7gcbcIgq5mc9m8Q=
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
Expand All @@ -22,19 +22,19 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
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/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
github.com/rs/zerolog v1.31.0 h1:FcTR3NnLWW+NnTwwhFWiJSZr4ECLpqCm6QsEnyvbV4A=
github.com/rs/zerolog v1.31.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
github.com/rs/zerolog v1.32.0 h1:keLypqrlIjaFsbmJOBdB/qvyF8KEtCWHwobLp5l/mQ0=
github.com/rs/zerolog v1.32.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=
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=
go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=
go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc=
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4=
golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
Expand Down
1 change: 1 addition & 0 deletions helpers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ func throughputRunner(testSize, packetSize uint32, readerConn, writerConn Conn)
p.Metadata.Operation = 32
p.Content.Write(randomData)
p.Metadata.ContentLength = packetSize

b.ResetTimer()
for i := 0; i < b.N; i++ {
done := make(chan struct{}, 1)
Expand Down
17 changes: 8 additions & 9 deletions pkg/packet/packet_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ package packet

import (
"crypto/rand"
"github.com/loopholelabs/polyglot"
"github.com/stretchr/testify/assert"
"testing"
)
Expand All @@ -33,7 +32,7 @@ func TestNew(t *testing.T) {
assert.Equal(t, uint16(0), p.Metadata.Id)
assert.Equal(t, uint16(0), p.Metadata.Operation)
assert.Equal(t, uint32(0), p.Metadata.ContentLength)
assert.Equal(t, polyglot.Buffer{}, *p.Content)
assert.Equal(t, Get().Content, p.Content)

Put(p)
}
Expand All @@ -48,21 +47,21 @@ func TestWrite(t *testing.T) {
assert.NoError(t, err)

p.Content.Write(b)
assert.Equal(t, polyglot.Buffer(b), *p.Content)
assert.Equal(t, b, p.Content.Bytes())

p.Reset()
assert.NotEqual(t, b, *p.Content)
assert.Equal(t, 0, len(*p.Content))
assert.Equal(t, 512, cap(*p.Content))
assert.NotEqual(t, b, p.Content.Bytes())
assert.Equal(t, 0, p.Content.Len())
assert.Equal(t, 512, p.Content.Cap())

b = make([]byte, 1024)
_, err = rand.Read(b)
assert.NoError(t, err)

p.Content.Write(b)

assert.Equal(t, polyglot.Buffer(b), *p.Content)
assert.Equal(t, 1024, len(*p.Content))
assert.GreaterOrEqual(t, cap(*p.Content), 1024)
assert.Equal(t, b, p.Content.Bytes())
assert.Equal(t, 1024, p.Content.Len())
assert.GreaterOrEqual(t, p.Content.Cap(), 1024)

}
17 changes: 8 additions & 9 deletions pkg/packet/pool_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,7 @@
package packet

import (
"github.com/loopholelabs/polyglot"
"math/rand"
"crypto/rand"
"testing"

"github.com/stretchr/testify/assert"
Expand All @@ -36,19 +35,19 @@ func TestRecycle(t *testing.T) {
pool.Put(p)
p = pool.Get()

testData := make([]byte, cap(*p.Content)*2)
testData := make([]byte, p.Content.Cap()*2)
_, err := rand.Read(testData)
assert.NoError(t, err)
for {
assert.NotNil(t, p.Metadata)
assert.Equal(t, uint16(0), p.Metadata.Id)
assert.Equal(t, uint16(0), p.Metadata.Operation)
assert.Equal(t, uint32(0), p.Metadata.ContentLength)
assert.Equal(t, polyglot.Buffer{}, *p.Content)
assert.Equal(t, *pool.Get().Content, *p.Content)

p.Content.Write(testData)
assert.Equal(t, len(testData), len(*p.Content))
assert.GreaterOrEqual(t, cap(*p.Content), len(testData))
assert.Equal(t, len(testData), p.Content.Len())
assert.GreaterOrEqual(t, p.Content.Cap(), len(testData))

pool.Put(p)
p = pool.Get()
Expand All @@ -58,11 +57,11 @@ func TestRecycle(t *testing.T) {
assert.Equal(t, uint16(0), p.Metadata.Operation)
assert.Equal(t, uint32(0), p.Metadata.ContentLength)

if cap(*p.Content) < len(testData) {
if p.Content.Cap() < len(testData) {
continue
}
assert.Equal(t, 0, len(*p.Content))
assert.GreaterOrEqual(t, cap(*p.Content), len(testData))
assert.Equal(t, 0, p.Content.Len())
assert.GreaterOrEqual(t, p.Content.Cap(), len(testData))
break
}

Expand Down
4 changes: 2 additions & 2 deletions server.go
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,7 @@ func (s *Server) createHandler(conn *Async, closed *atomic.Bool, wg *sync.WaitGr
packetCtx = s.PacketContext(packetCtx, p)
}
outgoing, action := handlerFunc(packetCtx, p)
if outgoing != nil && outgoing.Metadata.ContentLength == uint32(len(*outgoing.Content)) {
if outgoing != nil && outgoing.Metadata.ContentLength == uint32(outgoing.Content.Len()) {
s.preWrite()
err := conn.WritePacket(outgoing)
if outgoing != p {
Expand Down Expand Up @@ -317,7 +317,7 @@ func (s *Server) handleSinglePacket(frisbeeConn *Async, connCtx context.Context)
packetCtx = s.PacketContext(packetCtx, p)
}
outgoing, action = handlerFunc(packetCtx, p)
if outgoing != nil && outgoing.Metadata.ContentLength == uint32(len(*outgoing.Content)) {
if outgoing != nil && outgoing.Metadata.ContentLength == uint32(outgoing.Content.Len()) {
s.preWrite()
err = frisbeeConn.WritePacket(outgoing)
if outgoing != p {
Expand Down
Loading

0 comments on commit e0e466c

Please sign in to comment.