This commit is contained in:
Mochi
2019-09-22 14:03:36 +01:00
parent 0c7e59cc85
commit f49bde22b0
16 changed files with 38 additions and 310 deletions

View File

@@ -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) {

View File

@@ -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" {

View File

@@ -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()
}
}

View File

@@ -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) {

View File

@@ -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
}
*/

View File

@@ -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) {

View File

@@ -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) {

View File

@@ -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) {

View File

@@ -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) {

View File

@@ -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)
}
}

View File

@@ -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] {

View File

@@ -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) {

View File

@@ -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) {

View File

@@ -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) {

View File

@@ -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) {

View File

@@ -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) {