mirror of
https://github.com/mochi-mqtt/server.git
synced 2025-10-29 10:42:38 +08:00
Cleanup
This commit is contained in:
@@ -9,7 +9,6 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func TestConnackEncode(t *testing.T) {
|
func TestConnackEncode(t *testing.T) {
|
||||||
|
|
||||||
require.Contains(t, expectedPackets, Connack)
|
require.Contains(t, expectedPackets, Connack)
|
||||||
for i, wanted := range 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).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)
|
require.Equal(t, wanted.packet.(*ConnackPacket).SessionPresent, pk.SessionPresent, "Mismatched session present bool [i:%d] %s", i, wanted.desc)
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestConnackDecode(t *testing.T) {
|
func TestConnackDecode(t *testing.T) {
|
||||||
|
|
||||||
require.Contains(t, expectedPackets, Connack)
|
require.Contains(t, expectedPackets, Connack)
|
||||||
for i, wanted := range 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).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)
|
require.Equal(t, wanted.packet.(*ConnackPacket).SessionPresent, pk.SessionPresent, "Mismatched session present bool [i:%d] %s", i, wanted.desc)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkConnackDecode(b *testing.B) {
|
func BenchmarkConnackDecode(b *testing.B) {
|
||||||
|
|||||||
@@ -141,7 +141,7 @@ func (pk *ConnectPacket) Decode(buf []byte) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Validate ensures the packet is compliant.
|
// 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.
|
// End if protocol name is bad.
|
||||||
if pk.ProtocolName != "MQIsdp" && pk.ProtocolName != "MQTT" {
|
if pk.ProtocolName != "MQIsdp" && pk.ProtocolName != "MQTT" {
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func TestConnectEncode(t *testing.T) {
|
func TestConnectEncode(t *testing.T) {
|
||||||
|
|
||||||
require.Contains(t, expectedPackets, Connect)
|
require.Contains(t, expectedPackets, Connect)
|
||||||
for i, wanted := range expectedPackets[Connect] {
|
for i, wanted := range expectedPackets[Connect] {
|
||||||
if !encodeTestOK(wanted) {
|
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).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).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)
|
require.Equal(t, wanted.packet.(*ConnectPacket).WillRetain, pk.WillRetain, "Mismatched packet will retain [i:%d] %s", i, wanted.desc)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestConnectDecode(t *testing.T) {
|
func TestConnectDecode(t *testing.T) {
|
||||||
|
|
||||||
require.Contains(t, expectedPackets, Connect)
|
require.Contains(t, expectedPackets, Connect)
|
||||||
for i, wanted := range 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).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).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)
|
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) {
|
func TestConnectValidate(t *testing.T) {
|
||||||
|
|
||||||
require.Contains(t, expectedPackets, Connect)
|
require.Contains(t, expectedPackets, Connect)
|
||||||
for i, wanted := range expectedPackets[Connect] {
|
for i, wanted := range expectedPackets[Connect] {
|
||||||
if wanted.group == "validate" {
|
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)
|
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()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,10 +9,8 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func TestDisconnectEncode(t *testing.T) {
|
func TestDisconnectEncode(t *testing.T) {
|
||||||
|
|
||||||
require.Contains(t, expectedPackets, Disconnect)
|
require.Contains(t, expectedPackets, Disconnect)
|
||||||
for i, wanted := range expectedPackets[Disconnect] {
|
for i, wanted := range expectedPackets[Disconnect] {
|
||||||
|
|
||||||
require.Equal(t, uint8(14), Disconnect, "Incorrect Packet Type [i:%d]", i)
|
require.Equal(t, uint8(14), Disconnect, "Incorrect Packet Type [i:%d]", i)
|
||||||
|
|
||||||
pk := new(DisconnectPacket)
|
pk := new(DisconnectPacket)
|
||||||
@@ -27,20 +25,16 @@ func TestDisconnectEncode(t *testing.T) {
|
|||||||
require.NoError(t, err, "Error writing buffer [i:%d]", i)
|
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.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)
|
require.EqualValues(t, wanted.rawBytes, b.Bytes(), "Mismatched byte values [i:%d]", i)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestDisconnectDecode(t *testing.T) {
|
func TestDisconnectDecode(t *testing.T) {
|
||||||
|
|
||||||
pk := newPacket(Disconnect).(*DisconnectPacket)
|
pk := newPacket(Disconnect).(*DisconnectPacket)
|
||||||
|
|
||||||
var b = []byte{}
|
var b = []byte{}
|
||||||
err := pk.Decode(b)
|
err := pk.Decode(b)
|
||||||
require.NoError(t, err, "Error unpacking buffer")
|
require.NoError(t, err, "Error unpacking buffer")
|
||||||
require.Empty(t, b)
|
require.Empty(t, b)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkDisconnectDecode(b *testing.B) {
|
func BenchmarkDisconnectDecode(b *testing.B) {
|
||||||
|
|||||||
@@ -36,27 +36,16 @@ type Parser struct {
|
|||||||
// R is a bufio reader for peeking and reading incoming packets.
|
// R is a bufio reader for peeking and reading incoming packets.
|
||||||
R *bufio.Reader
|
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 is the fixed header from the last seen packet.
|
||||||
FixedHeader FixedHeader
|
FixedHeader FixedHeader
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewParser returns an instance of Parser for a connection.
|
// NewParser returns an instance of Parser for a connection.
|
||||||
func NewParser(c net.Conn) *Parser {
|
func NewParser(c net.Conn) *Parser {
|
||||||
p := &Parser{
|
return &Parser{
|
||||||
Conn: c,
|
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.
|
// RefreshDeadline refreshes the read/write deadline for the net.Conn connection.
|
||||||
@@ -203,191 +192,3 @@ func (p *Parser) Read() (pk Packet, err error) {
|
|||||||
|
|
||||||
return
|
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
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func TestPingreqEncode(t *testing.T) {
|
func TestPingreqEncode(t *testing.T) {
|
||||||
|
|
||||||
require.Contains(t, expectedPackets, Pingreq)
|
require.Contains(t, expectedPackets, Pingreq)
|
||||||
for i, wanted := range 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.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.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)
|
require.EqualValues(t, wanted.rawBytes, b.Bytes(), "Mismatched byte values [i:%d]", i)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPingreqDecode(t *testing.T) {
|
func TestPingreqDecode(t *testing.T) {
|
||||||
|
|
||||||
pk := newPacket(Pingreq).(*PingreqPacket)
|
pk := newPacket(Pingreq).(*PingreqPacket)
|
||||||
|
|
||||||
var b = []byte{}
|
var b = []byte{}
|
||||||
err := pk.Decode(b)
|
err := pk.Decode(b)
|
||||||
require.NoError(t, err, "Error unpacking buffer")
|
require.NoError(t, err, "Error unpacking buffer")
|
||||||
require.Empty(t, b)
|
require.Empty(t, b)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkPingreqDecode(b *testing.B) {
|
func BenchmarkPingreqDecode(b *testing.B) {
|
||||||
|
|||||||
@@ -1,16 +1,14 @@
|
|||||||
package packets
|
package packets
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/stretchr/testify/require"
|
"bytes"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"bytes"
|
|
||||||
|
|
||||||
"github.com/jinzhu/copier"
|
"github.com/jinzhu/copier"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestPingrespEncode(t *testing.T) {
|
func TestPingrespEncode(t *testing.T) {
|
||||||
|
|
||||||
require.Contains(t, expectedPackets, Pingresp)
|
require.Contains(t, expectedPackets, Pingresp)
|
||||||
for i, wanted := range 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.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.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)
|
require.EqualValues(t, wanted.rawBytes, b.Bytes(), "Mismatched byte values [i:%d]", i)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPingrespDecode(t *testing.T) {
|
func TestPingrespDecode(t *testing.T) {
|
||||||
|
|
||||||
pk := newPacket(Pingresp).(*PingrespPacket)
|
pk := newPacket(Pingresp).(*PingrespPacket)
|
||||||
|
|
||||||
var b = []byte{}
|
var b = []byte{}
|
||||||
err := pk.Decode(b)
|
err := pk.Decode(b)
|
||||||
require.NoError(t, err, "Error unpacking buffer")
|
require.NoError(t, err, "Error unpacking buffer")
|
||||||
require.Empty(t, b)
|
require.Empty(t, b)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkPingrespDecode(b *testing.B) {
|
func BenchmarkPingrespDecode(b *testing.B) {
|
||||||
|
|||||||
@@ -1,18 +1,16 @@
|
|||||||
package packets
|
package packets
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/stretchr/testify/require"
|
"bytes"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"bytes"
|
|
||||||
|
|
||||||
"github.com/jinzhu/copier"
|
"github.com/jinzhu/copier"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestPubackEncode(t *testing.T) {
|
func TestPubackEncode(t *testing.T) {
|
||||||
require.Contains(t, expectedPackets, Puback)
|
require.Contains(t, expectedPackets, Puback)
|
||||||
for i, wanted := range expectedPackets[Puback] {
|
for i, wanted := range expectedPackets[Puback] {
|
||||||
|
|
||||||
if !encodeTestOK(wanted) {
|
if !encodeTestOK(wanted) {
|
||||||
continue
|
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.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)
|
require.Equal(t, wanted.packet.(*PubackPacket).PacketID, pk.PacketID, "Mismatched Packet ID [i:%d] %s", i, wanted.desc)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPubackDecode(t *testing.T) {
|
func TestPubackDecode(t *testing.T) {
|
||||||
|
|
||||||
require.Contains(t, expectedPackets, Puback)
|
require.Contains(t, expectedPackets, Puback)
|
||||||
for i, wanted := range 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)
|
require.Equal(t, wanted.packet.(*PubackPacket).PacketID, pk.PacketID, "Mismatched Packet ID [i:%d] %s", i, wanted.desc)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkPubackDecode(b *testing.B) {
|
func BenchmarkPubackDecode(b *testing.B) {
|
||||||
|
|||||||
@@ -1,18 +1,16 @@
|
|||||||
package packets
|
package packets
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/stretchr/testify/require"
|
"bytes"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"bytes"
|
|
||||||
|
|
||||||
"github.com/jinzhu/copier"
|
"github.com/jinzhu/copier"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestPubcompEncode(t *testing.T) {
|
func TestPubcompEncode(t *testing.T) {
|
||||||
require.Contains(t, expectedPackets, Pubcomp)
|
require.Contains(t, expectedPackets, Pubcomp)
|
||||||
for i, wanted := range expectedPackets[Pubcomp] {
|
for i, wanted := range expectedPackets[Pubcomp] {
|
||||||
|
|
||||||
if !encodeTestOK(wanted) {
|
if !encodeTestOK(wanted) {
|
||||||
continue
|
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.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)
|
require.Equal(t, wanted.packet.(*PubcompPacket).PacketID, pk.PacketID, "Mismatched Packet ID [i:%d] %s", i, wanted.desc)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPubcompDecode(t *testing.T) {
|
func TestPubcompDecode(t *testing.T) {
|
||||||
|
|
||||||
require.Contains(t, expectedPackets, Pubcomp)
|
require.Contains(t, expectedPackets, Pubcomp)
|
||||||
for i, wanted := range 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)
|
require.Equal(t, wanted.packet.(*PubcompPacket).PacketID, pk.PacketID, "Mismatched Packet ID [i:%d] %s", i, wanted.desc)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkPubcompDecode(b *testing.B) {
|
func BenchmarkPubcompDecode(b *testing.B) {
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func TestPublishEncode(t *testing.T) {
|
func TestPublishEncode(t *testing.T) {
|
||||||
|
|
||||||
require.Contains(t, expectedPackets, Publish)
|
require.Contains(t, expectedPackets, Publish)
|
||||||
for i, wanted := range expectedPackets[Publish] {
|
for i, wanted := range expectedPackets[Publish] {
|
||||||
|
|
||||||
@@ -27,11 +26,8 @@ func TestPublishEncode(t *testing.T) {
|
|||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
err := pk.Encode(&b)
|
err := pk.Encode(&b)
|
||||||
if wanted.expect != nil {
|
if wanted.expect != nil {
|
||||||
|
|
||||||
require.Error(t, err, "Expected error writing buffer [i:%d] %s", i, wanted.desc)
|
require.Error(t, err, "Expected error writing buffer [i:%d] %s", i, wanted.desc)
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
encoded := b.Bytes()
|
encoded := b.Bytes()
|
||||||
|
|
||||||
// If actualBytes is set, compare mutated version of byte string instead (to avoid length mismatches, etc).
|
// 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)
|
require.Equal(t, len(wanted.rawBytes), len(encoded), "Mismatched packet length [i:%d] %s", i, wanted.desc)
|
||||||
|
|
||||||
if wanted.meta != nil {
|
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)
|
require.Equal(t, byte(Publish<<4)|wanted.meta.(byte), encoded[0], "Mismatched fixed header bytes [i:%d] %s", i, wanted.desc)
|
||||||
} else {
|
} 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.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.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.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).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.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)
|
require.NoError(t, err, "Error writing buffer [i:%d] %s", i, wanted.desc)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPublishDecode(t *testing.T) {
|
func TestPublishDecode(t *testing.T) {
|
||||||
|
|
||||||
require.Contains(t, expectedPackets, Publish)
|
require.Contains(t, expectedPackets, Publish)
|
||||||
for i, wanted := range expectedPackets[Publish] {
|
for i, wanted := range expectedPackets[Publish] {
|
||||||
|
|
||||||
if !decodeTestOK(wanted) {
|
if !decodeTestOK(wanted) {
|
||||||
continue
|
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.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.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).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.Equal(t, wanted.packet.(*PublishPacket).PacketID, pk.PacketID, "Mismatched Packet ID [i:%d] %s", i, wanted.desc)
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
package packets
|
package packets
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/stretchr/testify/require"
|
"bytes"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"bytes"
|
|
||||||
|
|
||||||
"github.com/jinzhu/copier"
|
"github.com/jinzhu/copier"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestPubrecEncode(t *testing.T) {
|
func TestPubrecEncode(t *testing.T) {
|
||||||
@@ -42,7 +41,6 @@ func TestPubrecEncode(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestPubrecDecode(t *testing.T) {
|
func TestPubrecDecode(t *testing.T) {
|
||||||
|
|
||||||
require.Contains(t, expectedPackets, Pubrec)
|
require.Contains(t, expectedPackets, Pubrec)
|
||||||
for i, wanted := range expectedPackets[Pubrec] {
|
for i, wanted := range expectedPackets[Pubrec] {
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
package packets
|
package packets
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/stretchr/testify/require"
|
"bytes"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"bytes"
|
|
||||||
|
|
||||||
"github.com/jinzhu/copier"
|
"github.com/jinzhu/copier"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestPubrelEncode(t *testing.T) {
|
func TestPubrelEncode(t *testing.T) {
|
||||||
@@ -42,10 +41,8 @@ func TestPubrelEncode(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestPubrelDecode(t *testing.T) {
|
func TestPubrelDecode(t *testing.T) {
|
||||||
|
|
||||||
require.Contains(t, expectedPackets, Pubrel)
|
require.Contains(t, expectedPackets, Pubrel)
|
||||||
for i, wanted := range expectedPackets[Pubrel] {
|
for i, wanted := range expectedPackets[Pubrel] {
|
||||||
|
|
||||||
if !decodeTestOK(wanted) {
|
if !decodeTestOK(wanted) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@@ -62,10 +59,8 @@ func TestPubrelDecode(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
require.NoError(t, err, "Error unpacking buffer [i:%d] %s", i, wanted.desc)
|
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)
|
require.Equal(t, wanted.packet.(*PubrelPacket).PacketID, pk.PacketID, "Mismatched Packet ID [i:%d] %s", i, wanted.desc)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkPubrelkDecode(b *testing.B) {
|
func BenchmarkPubrelkDecode(b *testing.B) {
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
package packets
|
package packets
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/stretchr/testify/require"
|
"bytes"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"bytes"
|
|
||||||
|
|
||||||
"github.com/jinzhu/copier"
|
"github.com/jinzhu/copier"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestSubackEncode(t *testing.T) {
|
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).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)
|
require.Equal(t, wanted.packet.(*SubackPacket).ReturnCodes, pk.ReturnCodes, "Mismatched Return Codes [i:%d] %s", i, wanted.desc)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSubackDecode(t *testing.T) {
|
func TestSubackDecode(t *testing.T) {
|
||||||
|
|
||||||
require.Contains(t, expectedPackets, Suback)
|
require.Contains(t, expectedPackets, Suback)
|
||||||
for i, wanted := range 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).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)
|
require.Equal(t, wanted.packet.(*SubackPacket).ReturnCodes, pk.ReturnCodes, "Mismatched Return Codes [i:%d] %s", i, wanted.desc)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkSubackDecode(b *testing.B) {
|
func BenchmarkSubackDecode(b *testing.B) {
|
||||||
|
|||||||
@@ -1,18 +1,16 @@
|
|||||||
package packets
|
package packets
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/stretchr/testify/require"
|
"bytes"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"bytes"
|
|
||||||
|
|
||||||
"github.com/jinzhu/copier"
|
"github.com/jinzhu/copier"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestSubscribeEncode(t *testing.T) {
|
func TestSubscribeEncode(t *testing.T) {
|
||||||
require.Contains(t, expectedPackets, Subscribe)
|
require.Contains(t, expectedPackets, Subscribe)
|
||||||
for i, wanted := range expectedPackets[Subscribe] {
|
for i, wanted := range expectedPackets[Subscribe] {
|
||||||
|
|
||||||
if !encodeTestOK(wanted) {
|
if !encodeTestOK(wanted) {
|
||||||
continue
|
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).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).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)
|
require.Equal(t, wanted.packet.(*SubscribePacket).Qoss, pk.Qoss, "Mismatched Qoss slice [i:%d] %s", i, wanted.desc)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSubscribeDecode(t *testing.T) {
|
func TestSubscribeDecode(t *testing.T) {
|
||||||
|
|
||||||
require.Contains(t, expectedPackets, Subscribe)
|
require.Contains(t, expectedPackets, Subscribe)
|
||||||
for i, wanted := range 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).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)
|
require.Equal(t, wanted.packet.(*SubscribePacket).Qoss, pk.Qoss, "Mismatched Qoss slice [i:%d] %s", i, wanted.desc)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkSubscribeDecode(b *testing.B) {
|
func BenchmarkSubscribeDecode(b *testing.B) {
|
||||||
|
|||||||
@@ -1,18 +1,16 @@
|
|||||||
package packets
|
package packets
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/stretchr/testify/require"
|
"bytes"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"bytes"
|
|
||||||
|
|
||||||
"github.com/jinzhu/copier"
|
"github.com/jinzhu/copier"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestUnsubackEncode(t *testing.T) {
|
func TestUnsubackEncode(t *testing.T) {
|
||||||
require.Contains(t, expectedPackets, Unsuback)
|
require.Contains(t, expectedPackets, Unsuback)
|
||||||
for i, wanted := range expectedPackets[Unsuback] {
|
for i, wanted := range expectedPackets[Unsuback] {
|
||||||
|
|
||||||
if !encodeTestOK(wanted) {
|
if !encodeTestOK(wanted) {
|
||||||
continue
|
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.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)
|
require.Equal(t, wanted.packet.(*UnsubackPacket).PacketID, pk.PacketID, "Mismatched Packet ID [i:%d] %s", i, wanted.desc)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestUnsubackDecode(t *testing.T) {
|
func TestUnsubackDecode(t *testing.T) {
|
||||||
|
|
||||||
require.Contains(t, expectedPackets, Unsuback)
|
require.Contains(t, expectedPackets, Unsuback)
|
||||||
for i, wanted := range 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.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)
|
require.Equal(t, wanted.packet.(*UnsubackPacket).PacketID, pk.PacketID, "Mismatched Packet ID [i:%d] %s", i, wanted.desc)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkUnsubackDecode(b *testing.B) {
|
func BenchmarkUnsubackDecode(b *testing.B) {
|
||||||
|
|||||||
@@ -1,18 +1,16 @@
|
|||||||
package packets
|
package packets
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/stretchr/testify/require"
|
"bytes"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"bytes"
|
|
||||||
|
|
||||||
"github.com/jinzhu/copier"
|
"github.com/jinzhu/copier"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestUnsubscribeEncode(t *testing.T) {
|
func TestUnsubscribeEncode(t *testing.T) {
|
||||||
require.Contains(t, expectedPackets, Unsubscribe)
|
require.Contains(t, expectedPackets, Unsubscribe)
|
||||||
for i, wanted := range expectedPackets[Unsubscribe] {
|
for i, wanted := range expectedPackets[Unsubscribe] {
|
||||||
|
|
||||||
if !encodeTestOK(wanted) {
|
if !encodeTestOK(wanted) {
|
||||||
continue
|
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).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)
|
require.Equal(t, wanted.packet.(*UnsubscribePacket).Topics, pk.Topics, "Mismatched Topics slice [i:%d] %s", i, wanted.desc)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestUnsubscribeDecode(t *testing.T) {
|
func TestUnsubscribeDecode(t *testing.T) {
|
||||||
|
|
||||||
require.Contains(t, expectedPackets, Unsubscribe)
|
require.Contains(t, expectedPackets, Unsubscribe)
|
||||||
for i, wanted := range 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).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)
|
require.Equal(t, wanted.packet.(*UnsubscribePacket).Topics, pk.Topics, "Mismatched Topics slice [i:%d] %s", i, wanted.desc)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkUnsubscribeDecode(b *testing.B) {
|
func BenchmarkUnsubscribeDecode(b *testing.B) {
|
||||||
|
|||||||
Reference in New Issue
Block a user