forked from quic-go/quic-go
add missing test for Entropy calculation
This commit is contained in:
@@ -35,8 +35,7 @@ func (h *outgoingPacketAckHandler) SentPacket(packet *Packet) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var lastPacketEntropy EntropyAccumulator
|
var lastPacketEntropy EntropyAccumulator
|
||||||
// ToDo: write tests for this
|
if packet.PacketNumber == 1 {
|
||||||
if packet.PacketNumber == 0 {
|
|
||||||
lastPacketEntropy = EntropyAccumulator(0)
|
lastPacketEntropy = EntropyAccumulator(0)
|
||||||
} else {
|
} else {
|
||||||
if h.highestInOrderAckedPacketNumber == packet.PacketNumber-1 {
|
if h.highestInOrderAckedPacketNumber == packet.PacketNumber-1 {
|
||||||
|
|||||||
@@ -56,6 +56,26 @@ var _ = Describe("AckHandler", func() {
|
|||||||
Expect(handler.packetHistory).ToNot(HaveKey(protocol.PacketNumber(2)))
|
Expect(handler.packetHistory).ToNot(HaveKey(protocol.PacketNumber(2)))
|
||||||
Expect(handler.packetHistory).ToNot(HaveKey(protocol.PacketNumber(2)))
|
Expect(handler.packetHistory).ToNot(HaveKey(protocol.PacketNumber(2)))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
It("correctly calculates the entropy, even if the last packet has already been ACKed", func() {
|
||||||
|
packet1 := Packet{PacketNumber: 1, Plaintext: []byte{0x13, 0x37}, EntropyBit: true}
|
||||||
|
packet2 := Packet{PacketNumber: 2, Plaintext: []byte{0xBE, 0xEF}, EntropyBit: true}
|
||||||
|
err := handler.SentPacket(&packet1)
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
expectedEntropy := EntropyAccumulator(0)
|
||||||
|
expectedEntropy.Add(packet1.PacketNumber, packet1.EntropyBit)
|
||||||
|
ack := frames.AckFrame{
|
||||||
|
LargestObserved: 1,
|
||||||
|
Entropy: byte(expectedEntropy),
|
||||||
|
}
|
||||||
|
err = handler.ReceivedAck(&ack)
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
err = handler.SentPacket(&packet2)
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
Expect(handler.lastSentPacketNumber).To(Equal(protocol.PacketNumber(2)))
|
||||||
|
expectedEntropy.Add(packet2.PacketNumber, packet2.EntropyBit)
|
||||||
|
Expect(handler.packetHistory[2].Entropy).To(Equal(expectedEntropy))
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
Context("ACK handling", func() {
|
Context("ACK handling", func() {
|
||||||
|
|||||||
Reference in New Issue
Block a user