diff --git a/packets/connack_test.go b/packets/connack_test.go index d92a9f8..033661a 100644 --- a/packets/connack_test.go +++ b/packets/connack_test.go @@ -9,7 +9,6 @@ import ( ) func TestConnackEncode(t *testing.T) { - require.Contains(t, expectedPackets, Connack) for i, wanted := range expectedPackets[Connack] { @@ -37,12 +36,10 @@ func TestConnackEncode(t *testing.T) { require.Equal(t, wanted.packet.(*ConnackPacket).ReturnCode, pk.ReturnCode, "Mismatched return code [i:%d] %s", i, wanted.desc) require.Equal(t, wanted.packet.(*ConnackPacket).SessionPresent, pk.SessionPresent, "Mismatched session present bool [i:%d] %s", i, wanted.desc) - } } func TestConnackDecode(t *testing.T) { - require.Contains(t, expectedPackets, Connack) for i, wanted := range expectedPackets[Connack] { @@ -64,9 +61,7 @@ func TestConnackDecode(t *testing.T) { require.Equal(t, wanted.packet.(*ConnackPacket).ReturnCode, pk.ReturnCode, "Mismatched return code [i:%d] %s", i, wanted.desc) require.Equal(t, wanted.packet.(*ConnackPacket).SessionPresent, pk.SessionPresent, "Mismatched session present bool [i:%d] %s", i, wanted.desc) - } - } func BenchmarkConnackDecode(b *testing.B) { diff --git a/packets/connect.go b/packets/connect.go index 09bf473..f1f35ba 100644 --- a/packets/connect.go +++ b/packets/connect.go @@ -141,7 +141,7 @@ func (pk *ConnectPacket) Decode(buf []byte) error { } // Validate ensures the packet is compliant. -func (pk *ConnectPacket) Validate() (byte, error) { +func (pk *ConnectPacket) Validate() (b byte, err error) { // End if protocol name is bad. if pk.ProtocolName != "MQIsdp" && pk.ProtocolName != "MQTT" { diff --git a/packets/connect_test.go b/packets/connect_test.go index 4f38d52..0b321b2 100644 --- a/packets/connect_test.go +++ b/packets/connect_test.go @@ -9,7 +9,6 @@ import ( ) func TestConnectEncode(t *testing.T) { - require.Contains(t, expectedPackets, Connect) for i, wanted := range expectedPackets[Connect] { if !encodeTestOK(wanted) { @@ -58,13 +57,10 @@ func TestConnectEncode(t *testing.T) { require.Equal(t, wanted.packet.(*ConnectPacket).WillMessage, pk.WillMessage, "Mismatched packet will message [i:%d] %s", i, wanted.desc) require.Equal(t, wanted.packet.(*ConnectPacket).WillQos, pk.WillQos, "Mismatched packet will qos [i:%d] %s", i, wanted.desc) require.Equal(t, wanted.packet.(*ConnectPacket).WillRetain, pk.WillRetain, "Mismatched packet will retain [i:%d] %s", i, wanted.desc) - } - } func TestConnectDecode(t *testing.T) { - require.Contains(t, expectedPackets, Connect) for i, wanted := range expectedPackets[Connect] { @@ -106,13 +102,19 @@ func TestConnectDecode(t *testing.T) { require.Equal(t, wanted.packet.(*ConnectPacket).WillMessage, pk.WillMessage, "Mismatched packet will message [i:%d] %s", i, wanted.desc) require.Equal(t, wanted.packet.(*ConnectPacket).WillQos, pk.WillQos, "Mismatched packet will qos [i:%d] %s", i, wanted.desc) require.Equal(t, wanted.packet.(*ConnectPacket).WillRetain, pk.WillRetain, "Mismatched packet will retain [i:%d] %s", i, wanted.desc) - } +} +func BenchmarkConnectDecode(b *testing.B) { + pk := newPacket(Connect).(*ConnectPacket) + pk.FixedHeader.decode(expectedPackets[Connect][0].rawBytes[0]) + + for n := 0; n < b.N; n++ { + pk.Decode(expectedPackets[Connect][0].rawBytes[2:]) + } } func TestConnectValidate(t *testing.T) { - require.Contains(t, expectedPackets, Connect) for i, wanted := range expectedPackets[Connect] { if wanted.group == "validate" { @@ -121,5 +123,13 @@ func TestConnectValidate(t *testing.T) { require.Equal(t, wanted.expect, ok, "Connect packet didn't validate [i:%d] %s", i, wanted.desc) } } - +} + +func BenchmarkConnectValidate(b *testing.B) { + pk := newPacket(Connect).(*ConnectPacket) + pk.FixedHeader.decode(expectedPackets[Connect][0].rawBytes[0]) + + for n := 0; n < b.N; n++ { + pk.Validate() + } } diff --git a/packets/disconnect_test.go b/packets/disconnect_test.go index e0edd7f..0fe6edb 100644 --- a/packets/disconnect_test.go +++ b/packets/disconnect_test.go @@ -9,10 +9,8 @@ import ( ) func TestDisconnectEncode(t *testing.T) { - require.Contains(t, expectedPackets, Disconnect) for i, wanted := range expectedPackets[Disconnect] { - require.Equal(t, uint8(14), Disconnect, "Incorrect Packet Type [i:%d]", i) pk := new(DisconnectPacket) @@ -27,20 +25,16 @@ func TestDisconnectEncode(t *testing.T) { require.NoError(t, err, "Error writing buffer [i:%d]", i) require.Equal(t, len(wanted.rawBytes), len(b.Bytes()), "Mismatched packet length [i:%d]", i) require.EqualValues(t, wanted.rawBytes, b.Bytes(), "Mismatched byte values [i:%d]", i) - } - } func TestDisconnectDecode(t *testing.T) { - pk := newPacket(Disconnect).(*DisconnectPacket) var b = []byte{} err := pk.Decode(b) require.NoError(t, err, "Error unpacking buffer") require.Empty(t, b) - } func BenchmarkDisconnectDecode(b *testing.B) { diff --git a/packets/parser.go b/packets/parser.go index dda429e..4770ac8 100644 --- a/packets/parser.go +++ b/packets/parser.go @@ -36,27 +36,16 @@ type Parser struct { // R is a bufio reader for peeking and reading incoming packets. R *bufio.Reader - // W is a bufio writer that sends outgoing packets. - //W *bufio.Writer - - // RemoteAddr is the remote origin address of the connect. - //RemoteAddr string - - // Version is the protocol version of the connection. - //Version byte - // FixedHeader is the fixed header from the last seen packet. FixedHeader FixedHeader } // NewParser returns an instance of Parser for a connection. func NewParser(c net.Conn) *Parser { - p := &Parser{ + return &Parser{ Conn: c, - R: bufio.NewReaderSize(c, 6), + R: bufio.NewReaderSize(c, 512), } - - return p } // RefreshDeadline refreshes the read/write deadline for the net.Conn connection. @@ -203,191 +192,3 @@ func (p *Parser) Read() (pk Packet, err error) { return } - -/* - - -import ( - "bufio" - "encoding/binary" - "errors" - "io" - "net" - "sync" - "time" - "unicode/utf8" -) - -// writerSize is the size of the parser write buffer. -const writerSize = 16 * 1024 - -// readerSize is the size of the parser read buffer. -const readerSize = 16 * 1024 - -// NewParser returns an instance of Parser for a connection. -func NewParser(c net.Conn) *Parser { - - p := &Parser{ - Conn: c, - R: bufio.NewReader(c), //bufio.NewReaderSize(c, readerSize), - W: bufio.NewWriter(c), //bufio.NewWriterSize(c, writerSize), - - RemoteAddr: c.RemoteAddr().String(), - } - - return p -} - -// Reset sets the new destinations for the read and write buffers. -func (p *Parser) Reset(c net.Conn) { - p.Lock() - - p.Conn = c - p.R.Reset(c) - p.W.Reset(c) - - p.Unlock() -} - -// RefreshDeadline refreshes the read/write deadline for the net.Conn connection. -func (p *Parser) RefreshDeadline(keepalive uint16) { - - expiry := time.Duration(keepalive+(keepalive/2)) * time.Second - p.Conn.SetDeadline(time.Now().UTC().Add(expiry)) - -} - -// ReadFixedHeader reads in the values of the next packet's fixed header. -func (p *Parser) ReadFixedHeader(fh *FixedHeader) error { - - // Peek the maximum message type and flags, and length. - peeked, err := p.R.Peek(1) - if err != nil { - return err // return without wrapping so it can be checked by broker. - } - - // Unpack message type and flags from byte 1. - err = fh.decode(peeked[0]) - if err != nil { - - // @SPEC [MQTT-2.2.2-2] - // If invalid flags are received, the receiver MUST close the Network Connection. - return errors.New(ErrInvalidFlags) - } - - // Decode the message length from byte 2. - lbytes := []byte{} - - // The remaining length value can be up to 5 bytes. Peek through each byte - // looking for continue values, and if found increase the peek. Otherwise - // decode the bytes that were legit. - i := 1 - b := 2 - for ; b < 6; b++ { - peeked, err = p.R.Peek(b) - - // Add the byte to the length bytes slice. - lbytes = append(lbytes, peeked[i]) - - // If it's not a continuation flag, end here. - if peeked[i] < 128 { - break - } - - // If i has reached 4 without a length terminator, throw a protocol violation. - i++ - if i == 4 { - return errors.New(ErrOversizedLengthIndicator) - } - } - - // Calculate and store the remaining length. - rem, _ := binary.Uvarint(lbytes) - fh.Remaining = int(rem) - - // Discard the number of used length bytes + first byte. - p.R.Discard(b) - - // Set the fixed header in the parser. - p.FixedHeader = *fh - - return nil - -} - -// ReadPacket reads the remaining values of a packet. -func (p *Parser) ReadPacket() (Packet, error) { - - // Build Packet based on FixedHeader type. - var pk Packet - switch p.FixedHeader.Type { - case Connect: - pk = &ConnectPacket{FixedHeader: p.FixedHeader} - case Connack: - pk = &ConnackPacket{FixedHeader: p.FixedHeader} - case Publish: - pk = &PublishPacket{FixedHeader: p.FixedHeader} - case Puback: - pk = &PubackPacket{FixedHeader: p.FixedHeader} - case Pubrec: - pk = &PubrecPacket{FixedHeader: p.FixedHeader} - case Pubrel: - pk = &PubrelPacket{FixedHeader: p.FixedHeader} - case Pubcomp: - pk = &PubcompPacket{FixedHeader: p.FixedHeader} - case Subscribe: - pk = &SubscribePacket{FixedHeader: p.FixedHeader} - case Suback: - pk = &SubackPacket{FixedHeader: p.FixedHeader} - case Unsubscribe: - pk = &UnsubscribePacket{FixedHeader: p.FixedHeader} - case Unsuback: - pk = &UnsubackPacket{FixedHeader: p.FixedHeader} - case Pingreq: - pk = &PingreqPacket{FixedHeader: p.FixedHeader} - case Pingresp: - pk = &PingrespPacket{FixedHeader: p.FixedHeader} - case Disconnect: - pk = &DisconnectPacket{FixedHeader: p.FixedHeader} - default: - return pk, errors.New("No valid packet available; " + string(p.FixedHeader.Type)) - } - - // Attempt to peek the rest of the packet, avoiding allocs. - peeked := true - bt, err := p.R.Peek(p.FixedHeader.Remaining) - if err != nil { - - // Only try to continue if reading is still possible. - if err != bufio.ErrBufferFull { - return pk, err - } - - // If it didn't work, read the buffer directly, and if that still doesn't - // work, then throw an error. - peeked = false - bt = make([]byte, p.FixedHeader.Remaining) - _, err := io.ReadFull(p.R, bt) - if err != nil { - return pk, err - } - - } - - // Decode the remaining packet values. - pk.Decode(bt) - - // If peeking was successful, discard the rest of the packet now it's been read. - if peeked { - p.R.Discard(p.FixedHeader.Remaining) - } - - // Validate the packet to ensure spec compliance. - _, err = pk.Validate() - if err != nil { - return pk, err - } - - return pk, nil -} -*/ diff --git a/packets/pingreq_test.go b/packets/pingreq_test.go index dfce317..113c142 100644 --- a/packets/pingreq_test.go +++ b/packets/pingreq_test.go @@ -10,7 +10,6 @@ import ( ) func TestPingreqEncode(t *testing.T) { - require.Contains(t, expectedPackets, Pingreq) for i, wanted := range expectedPackets[Pingreq] { @@ -28,20 +27,16 @@ func TestPingreqEncode(t *testing.T) { require.NoError(t, err, "Error writing buffer [i:%d]", i) require.Equal(t, len(wanted.rawBytes), len(b.Bytes()), "Mismatched packet length [i:%d]", i) require.EqualValues(t, wanted.rawBytes, b.Bytes(), "Mismatched byte values [i:%d]", i) - } - } func TestPingreqDecode(t *testing.T) { - pk := newPacket(Pingreq).(*PingreqPacket) var b = []byte{} err := pk.Decode(b) require.NoError(t, err, "Error unpacking buffer") require.Empty(t, b) - } func BenchmarkPingreqDecode(b *testing.B) { diff --git a/packets/pingresp_test.go b/packets/pingresp_test.go index 20ad878..bf3b06b 100644 --- a/packets/pingresp_test.go +++ b/packets/pingresp_test.go @@ -1,16 +1,14 @@ package packets import ( - "github.com/stretchr/testify/require" + "bytes" "testing" - "bytes" - "github.com/jinzhu/copier" + "github.com/stretchr/testify/require" ) func TestPingrespEncode(t *testing.T) { - require.Contains(t, expectedPackets, Pingresp) for i, wanted := range expectedPackets[Pingresp] { @@ -28,20 +26,16 @@ func TestPingrespEncode(t *testing.T) { require.NoError(t, err, "Error writing buffer [i:%d]", i) require.Equal(t, len(wanted.rawBytes), len(b.Bytes()), "Mismatched packet length [i:%d]", i) require.EqualValues(t, wanted.rawBytes, b.Bytes(), "Mismatched byte values [i:%d]", i) - } - } func TestPingrespDecode(t *testing.T) { - pk := newPacket(Pingresp).(*PingrespPacket) var b = []byte{} err := pk.Decode(b) require.NoError(t, err, "Error unpacking buffer") require.Empty(t, b) - } func BenchmarkPingrespDecode(b *testing.B) { diff --git a/packets/puback_test.go b/packets/puback_test.go index 1dfaed6..d400405 100644 --- a/packets/puback_test.go +++ b/packets/puback_test.go @@ -1,18 +1,16 @@ package packets import ( - "github.com/stretchr/testify/require" + "bytes" "testing" - "bytes" - "github.com/jinzhu/copier" + "github.com/stretchr/testify/require" ) func TestPubackEncode(t *testing.T) { require.Contains(t, expectedPackets, Puback) for i, wanted := range expectedPackets[Puback] { - if !encodeTestOK(wanted) { continue } @@ -36,13 +34,10 @@ func TestPubackEncode(t *testing.T) { require.EqualValues(t, wanted.rawBytes, encoded, "Mismatched byte values [i:%d] %s", i, wanted.desc) require.Equal(t, wanted.packet.(*PubackPacket).PacketID, pk.PacketID, "Mismatched Packet ID [i:%d] %s", i, wanted.desc) - } - } func TestPubackDecode(t *testing.T) { - require.Contains(t, expectedPackets, Puback) for i, wanted := range expectedPackets[Puback] { @@ -65,7 +60,6 @@ func TestPubackDecode(t *testing.T) { require.Equal(t, wanted.packet.(*PubackPacket).PacketID, pk.PacketID, "Mismatched Packet ID [i:%d] %s", i, wanted.desc) } - } func BenchmarkPubackDecode(b *testing.B) { diff --git a/packets/pubcomp_test.go b/packets/pubcomp_test.go index d3dbd2e..fc406d5 100644 --- a/packets/pubcomp_test.go +++ b/packets/pubcomp_test.go @@ -1,18 +1,16 @@ package packets import ( - "github.com/stretchr/testify/require" + "bytes" "testing" - "bytes" - "github.com/jinzhu/copier" + "github.com/stretchr/testify/require" ) func TestPubcompEncode(t *testing.T) { require.Contains(t, expectedPackets, Pubcomp) for i, wanted := range expectedPackets[Pubcomp] { - if !encodeTestOK(wanted) { continue } @@ -36,13 +34,10 @@ func TestPubcompEncode(t *testing.T) { require.EqualValues(t, wanted.rawBytes, encoded, "Mismatched byte values [i:%d] %s", i, wanted.desc) require.Equal(t, wanted.packet.(*PubcompPacket).PacketID, pk.PacketID, "Mismatched Packet ID [i:%d] %s", i, wanted.desc) - } - } func TestPubcompDecode(t *testing.T) { - require.Contains(t, expectedPackets, Pubcomp) for i, wanted := range expectedPackets[Pubcomp] { @@ -65,7 +60,6 @@ func TestPubcompDecode(t *testing.T) { require.Equal(t, wanted.packet.(*PubcompPacket).PacketID, pk.PacketID, "Mismatched Packet ID [i:%d] %s", i, wanted.desc) } - } func BenchmarkPubcompDecode(b *testing.B) { diff --git a/packets/publish_test.go b/packets/publish_test.go index f57cb22..b5ee388 100644 --- a/packets/publish_test.go +++ b/packets/publish_test.go @@ -9,7 +9,6 @@ import ( ) func TestPublishEncode(t *testing.T) { - require.Contains(t, expectedPackets, Publish) for i, wanted := range expectedPackets[Publish] { @@ -27,11 +26,8 @@ func TestPublishEncode(t *testing.T) { var b bytes.Buffer err := pk.Encode(&b) if wanted.expect != nil { - require.Error(t, err, "Expected error writing buffer [i:%d] %s", i, wanted.desc) - } else { - encoded := b.Bytes() // If actualBytes is set, compare mutated version of byte string instead (to avoid length mismatches, etc). @@ -40,7 +36,6 @@ func TestPublishEncode(t *testing.T) { } require.Equal(t, len(wanted.rawBytes), len(encoded), "Mismatched packet length [i:%d] %s", i, wanted.desc) - if wanted.meta != nil { require.Equal(t, byte(Publish<<4)|wanted.meta.(byte), encoded[0], "Mismatched fixed header bytes [i:%d] %s", i, wanted.desc) } else { @@ -48,26 +43,18 @@ func TestPublishEncode(t *testing.T) { } require.EqualValues(t, wanted.rawBytes, encoded, "Mismatched byte values [i:%d] %s", i, wanted.desc) - require.Equal(t, wanted.packet.(*PublishPacket).FixedHeader.Qos, pk.FixedHeader.Qos, "Mismatched QOS [i:%d] %s", i, wanted.desc) require.Equal(t, wanted.packet.(*PublishPacket).FixedHeader.Dup, pk.FixedHeader.Dup, "Mismatched Dup [i:%d] %s", i, wanted.desc) require.Equal(t, wanted.packet.(*PublishPacket).FixedHeader.Retain, pk.FixedHeader.Retain, "Mismatched Retain [i:%d] %s", i, wanted.desc) - require.Equal(t, wanted.packet.(*PublishPacket).PacketID, pk.PacketID, "Mismatched Packet ID [i:%d] %s", i, wanted.desc) - require.NoError(t, err, "Error writing buffer [i:%d] %s", i, wanted.desc) - } - } - } func TestPublishDecode(t *testing.T) { - require.Contains(t, expectedPackets, Publish) for i, wanted := range expectedPackets[Publish] { - if !decodeTestOK(wanted) { continue } @@ -89,9 +76,7 @@ func TestPublishDecode(t *testing.T) { require.Equal(t, wanted.packet.(*PublishPacket).FixedHeader.Qos, pk.FixedHeader.Qos, "Mismatched QOS [i:%d] %s", i, wanted.desc) require.Equal(t, wanted.packet.(*PublishPacket).FixedHeader.Dup, pk.FixedHeader.Dup, "Mismatched Dup [i:%d] %s", i, wanted.desc) require.Equal(t, wanted.packet.(*PublishPacket).FixedHeader.Retain, pk.FixedHeader.Retain, "Mismatched Retain [i:%d] %s", i, wanted.desc) - require.Equal(t, wanted.packet.(*PublishPacket).PacketID, pk.PacketID, "Mismatched Packet ID [i:%d] %s", i, wanted.desc) - } } diff --git a/packets/pubrec_test.go b/packets/pubrec_test.go index ac69b44..cc66312 100644 --- a/packets/pubrec_test.go +++ b/packets/pubrec_test.go @@ -1,12 +1,11 @@ package packets import ( - "github.com/stretchr/testify/require" + "bytes" "testing" - "bytes" - "github.com/jinzhu/copier" + "github.com/stretchr/testify/require" ) func TestPubrecEncode(t *testing.T) { @@ -42,7 +41,6 @@ func TestPubrecEncode(t *testing.T) { } func TestPubrecDecode(t *testing.T) { - require.Contains(t, expectedPackets, Pubrec) for i, wanted := range expectedPackets[Pubrec] { diff --git a/packets/pubrel_test.go b/packets/pubrel_test.go index fae9dff..850722e 100644 --- a/packets/pubrel_test.go +++ b/packets/pubrel_test.go @@ -1,12 +1,11 @@ package packets import ( - "github.com/stretchr/testify/require" + "bytes" "testing" - "bytes" - "github.com/jinzhu/copier" + "github.com/stretchr/testify/require" ) func TestPubrelEncode(t *testing.T) { @@ -42,10 +41,8 @@ func TestPubrelEncode(t *testing.T) { } func TestPubrelDecode(t *testing.T) { - require.Contains(t, expectedPackets, Pubrel) for i, wanted := range expectedPackets[Pubrel] { - if !decodeTestOK(wanted) { continue } @@ -62,10 +59,8 @@ func TestPubrelDecode(t *testing.T) { } require.NoError(t, err, "Error unpacking buffer [i:%d] %s", i, wanted.desc) - require.Equal(t, wanted.packet.(*PubrelPacket).PacketID, pk.PacketID, "Mismatched Packet ID [i:%d] %s", i, wanted.desc) } - } func BenchmarkPubrelkDecode(b *testing.B) { diff --git a/packets/suback_test.go b/packets/suback_test.go index 7d592c6..0ed1293 100644 --- a/packets/suback_test.go +++ b/packets/suback_test.go @@ -1,12 +1,11 @@ package packets import ( - "github.com/stretchr/testify/require" + "bytes" "testing" - "bytes" - "github.com/jinzhu/copier" + "github.com/stretchr/testify/require" ) func TestSubackEncode(t *testing.T) { @@ -41,13 +40,10 @@ func TestSubackEncode(t *testing.T) { require.Equal(t, wanted.packet.(*SubackPacket).PacketID, pk.PacketID, "Mismatched Packet ID [i:%d] %s", i, wanted.desc) require.Equal(t, wanted.packet.(*SubackPacket).ReturnCodes, pk.ReturnCodes, "Mismatched Return Codes [i:%d] %s", i, wanted.desc) - } - } func TestSubackDecode(t *testing.T) { - require.Contains(t, expectedPackets, Suback) for i, wanted := range expectedPackets[Suback] { @@ -69,9 +65,7 @@ func TestSubackDecode(t *testing.T) { require.Equal(t, wanted.packet.(*SubackPacket).PacketID, pk.PacketID, "Mismatched Packet ID [i:%d] %s", i, wanted.desc) require.Equal(t, wanted.packet.(*SubackPacket).ReturnCodes, pk.ReturnCodes, "Mismatched Return Codes [i:%d] %s", i, wanted.desc) - } - } func BenchmarkSubackDecode(b *testing.B) { diff --git a/packets/subscribe_test.go b/packets/subscribe_test.go index 85c1268..58e26a0 100644 --- a/packets/subscribe_test.go +++ b/packets/subscribe_test.go @@ -1,18 +1,16 @@ package packets import ( - "github.com/stretchr/testify/require" + "bytes" "testing" - "bytes" - "github.com/jinzhu/copier" + "github.com/stretchr/testify/require" ) func TestSubscribeEncode(t *testing.T) { require.Contains(t, expectedPackets, Subscribe) for i, wanted := range expectedPackets[Subscribe] { - if !encodeTestOK(wanted) { continue } @@ -48,15 +46,11 @@ func TestSubscribeEncode(t *testing.T) { require.Equal(t, wanted.packet.(*SubscribePacket).PacketID, pk.PacketID, "Mismatched Packet ID [i:%d] %s", i, wanted.desc) require.Equal(t, wanted.packet.(*SubscribePacket).Topics, pk.Topics, "Mismatched Topics slice [i:%d] %s", i, wanted.desc) require.Equal(t, wanted.packet.(*SubscribePacket).Qoss, pk.Qoss, "Mismatched Qoss slice [i:%d] %s", i, wanted.desc) - } - } - } func TestSubscribeDecode(t *testing.T) { - require.Contains(t, expectedPackets, Subscribe) for i, wanted := range expectedPackets[Subscribe] { @@ -80,7 +74,6 @@ func TestSubscribeDecode(t *testing.T) { require.Equal(t, wanted.packet.(*SubscribePacket).Topics, pk.Topics, "Mismatched Topics slice [i:%d] %s", i, wanted.desc) require.Equal(t, wanted.packet.(*SubscribePacket).Qoss, pk.Qoss, "Mismatched Qoss slice [i:%d] %s", i, wanted.desc) } - } func BenchmarkSubscribeDecode(b *testing.B) { diff --git a/packets/unsuback_test.go b/packets/unsuback_test.go index a75cc8b..9aa0563 100644 --- a/packets/unsuback_test.go +++ b/packets/unsuback_test.go @@ -1,18 +1,16 @@ package packets import ( - "github.com/stretchr/testify/require" + "bytes" "testing" - "bytes" - "github.com/jinzhu/copier" + "github.com/stretchr/testify/require" ) func TestUnsubackEncode(t *testing.T) { require.Contains(t, expectedPackets, Unsuback) for i, wanted := range expectedPackets[Unsuback] { - if !encodeTestOK(wanted) { continue } @@ -40,13 +38,10 @@ func TestUnsubackEncode(t *testing.T) { require.EqualValues(t, wanted.rawBytes, encoded, "Mismatched byte values [i:%d] %s", i, wanted.desc) require.Equal(t, wanted.packet.(*UnsubackPacket).PacketID, pk.PacketID, "Mismatched Packet ID [i:%d] %s", i, wanted.desc) - } - } func TestUnsubackDecode(t *testing.T) { - require.Contains(t, expectedPackets, Unsuback) for i, wanted := range expectedPackets[Unsuback] { @@ -67,9 +62,7 @@ func TestUnsubackDecode(t *testing.T) { require.NoError(t, err, "Error unpacking buffer [i:%d] %s", i, wanted.desc) require.Equal(t, wanted.packet.(*UnsubackPacket).PacketID, pk.PacketID, "Mismatched Packet ID [i:%d] %s", i, wanted.desc) - } - } func BenchmarkUnsubackDecode(b *testing.B) { diff --git a/packets/unsubscribe_test.go b/packets/unsubscribe_test.go index 0175a09..f46aa72 100644 --- a/packets/unsubscribe_test.go +++ b/packets/unsubscribe_test.go @@ -1,18 +1,16 @@ package packets import ( - "github.com/stretchr/testify/require" + "bytes" "testing" - "bytes" - "github.com/jinzhu/copier" + "github.com/stretchr/testify/require" ) func TestUnsubscribeEncode(t *testing.T) { require.Contains(t, expectedPackets, Unsubscribe) for i, wanted := range expectedPackets[Unsubscribe] { - if !encodeTestOK(wanted) { continue } @@ -48,15 +46,11 @@ func TestUnsubscribeEncode(t *testing.T) { require.Equal(t, wanted.packet.(*UnsubscribePacket).PacketID, pk.PacketID, "Mismatched Packet ID [i:%d] %s", i, wanted.desc) require.Equal(t, wanted.packet.(*UnsubscribePacket).Topics, pk.Topics, "Mismatched Topics slice [i:%d] %s", i, wanted.desc) - } - } - } func TestUnsubscribeDecode(t *testing.T) { - require.Contains(t, expectedPackets, Unsubscribe) for i, wanted := range expectedPackets[Unsubscribe] { @@ -79,7 +73,6 @@ func TestUnsubscribeDecode(t *testing.T) { require.Equal(t, wanted.packet.(*UnsubscribePacket).PacketID, pk.PacketID, "Mismatched Packet ID [i:%d] %s", i, wanted.desc) require.Equal(t, wanted.packet.(*UnsubscribePacket).Topics, pk.Topics, "Mismatched Topics slice [i:%d] %s", i, wanted.desc) } - } func BenchmarkUnsubscribeDecode(b *testing.B) {