add tests for receiving packets in Session

ref #197
This commit is contained in:
Marten Seemann
2016-07-03 22:59:01 +08:00
parent d2c89cbf22
commit 3e604a274d
2 changed files with 41 additions and 1 deletions

View File

@@ -17,6 +17,10 @@ import (
"github.com/lucas-clemente/quic-go/utils"
)
type unpacker interface {
Unpack(publicHeaderBinary []byte, hdr *publicHeader, r *bytes.Reader) (*unpackedPacket, error)
}
type receivedPacket struct {
remoteAddr interface{}
publicHeader *publicHeader
@@ -60,7 +64,7 @@ type Session struct {
// TODO: remove
flowController flowcontrol.FlowController // connection level flow controller
unpacker *packetUnpacker
unpacker unpacker
packer *packetPacker
cryptoSetup *handshake.CryptoSetup

View File

@@ -34,6 +34,15 @@ func (m *mockConnection) write(p []byte) error {
func (*mockConnection) setCurrentRemoteAddr(addr interface{}) {}
func (*mockConnection) IP() net.IP { return nil }
type mockUnpacker struct{}
func (m *mockUnpacker) Unpack(publicHeaderBinary []byte, hdr *publicHeader, r *bytes.Reader) (*unpackedPacket, error) {
return &unpackedPacket{
entropyBit: false,
frames: nil,
}, nil
}
var _ = Describe("Session", func() {
var (
session *Session
@@ -392,6 +401,33 @@ var _ = Describe("Session", func() {
})
})
Context("receiving packets", func() {
var hdr *publicHeader
BeforeEach(func() {
session.unpacker = &mockUnpacker{}
hdr = &publicHeader{PacketNumberLen: protocol.PacketNumberLen6}
})
It("sets the lastRcvdPacketNumber", func() {
hdr.PacketNumber = 5
err := session.handlePacketImpl(nil, hdr, nil)
Expect(err).ToNot(HaveOccurred())
Expect(session.lastRcvdPacketNumber).To(Equal(protocol.PacketNumber(5)))
})
It("sets the lastRcvdPacketNumber, for an out-of-order packet", func() {
hdr.PacketNumber = 5
err := session.handlePacketImpl(nil, hdr, nil)
Expect(err).ToNot(HaveOccurred())
Expect(session.lastRcvdPacketNumber).To(Equal(protocol.PacketNumber(5)))
hdr.PacketNumber = 3
err = session.handlePacketImpl(nil, hdr, nil)
Expect(err).ToNot(HaveOccurred())
Expect(session.lastRcvdPacketNumber).To(Equal(protocol.PacketNumber(3)))
})
})
Context("sending packets", func() {
It("sends ack frames", func() {
packetNumber := protocol.PacketNumber(0x0135)