actually generate gaps in packet number space

This commit is contained in:
Marten Seemann
2018-10-14 20:20:15 +02:00
parent 788dbeb686
commit b2aec3403e
2 changed files with 20 additions and 4 deletions

View File

@@ -18,10 +18,12 @@ type packetNumberGenerator struct {
} }
func newPacketNumberGenerator(initial, averagePeriod protocol.PacketNumber) *packetNumberGenerator { func newPacketNumberGenerator(initial, averagePeriod protocol.PacketNumber) *packetNumberGenerator {
return &packetNumberGenerator{ g := &packetNumberGenerator{
next: initial, next: initial,
averagePeriod: averagePeriod, averagePeriod: averagePeriod,
} }
g.generateNewSkip()
return g
} }
func (p *packetNumberGenerator) Peek() protocol.PacketNumber { func (p *packetNumberGenerator) Peek() protocol.PacketNumber {

View File

@@ -9,14 +9,14 @@ import (
) )
var _ = Describe("Packet Number Generator", func() { var _ = Describe("Packet Number Generator", func() {
var png packetNumberGenerator var png *packetNumberGenerator
BeforeEach(func() { BeforeEach(func() {
png = *newPacketNumberGenerator(1, 100) png = newPacketNumberGenerator(1, 100)
}) })
It("can be initialized to return any first packet number", func() { It("can be initialized to return any first packet number", func() {
png = *newPacketNumberGenerator(12345, 100) png = newPacketNumberGenerator(12345, 100)
Expect(png.Pop()).To(Equal(protocol.PacketNumber(12345))) Expect(png.Pop()).To(Equal(protocol.PacketNumber(12345)))
}) })
@@ -36,6 +36,20 @@ var _ = Describe("Packet Number Generator", func() {
}) })
It("skips a packet number", func() { It("skips a packet number", func() {
var last protocol.PacketNumber
var skipped bool
for i := 0; i < 1000; i++ {
num := png.Pop()
if num > last+1 {
skipped = true
break
}
last = num
}
Expect(skipped).To(BeTrue())
})
It("skips a specific packet number", func() {
png.nextToSkip = 2 png.nextToSkip = 2
num := png.Pop() num := png.Pop()
Expect(num).To(Equal(protocol.PacketNumber(1))) Expect(num).To(Equal(protocol.PacketNumber(1)))