Skip to content

Commit

Permalink
fix race conditions in the packet sending tests in the session
Browse files Browse the repository at this point in the history
  • Loading branch information
marten-seemann committed May 5, 2020
1 parent d5c6c2b commit 422bed4
Showing 1 changed file with 20 additions and 5 deletions.
25 changes: 20 additions & 5 deletions session_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1004,12 +1004,10 @@ var _ = Describe("Session", func() {
})

Context("sending packets", func() {
var sessionDone chan struct{}

BeforeEach(func() {
cryptoSetup.EXPECT().RunHandshake().MaxTimes(1)
go func() {
defer GinkgoRecover()
sess.run()
}()
sessionDone = make(chan struct{})
})

AfterEach(func() {
Expand All @@ -1021,10 +1019,21 @@ var _ = Describe("Session", func() {
qlogger.EXPECT().Export()
sess.shutdown()
Eventually(sess.Context().Done()).Should(BeClosed())
Eventually(sessionDone).Should(BeClosed())
})

runSession := func() {
go func() {
defer GinkgoRecover()
cryptoSetup.EXPECT().RunHandshake().MaxTimes(1)
sess.run()
close(sessionDone)
}()
}

It("sends packets", func() {
sess.handshakeConfirmed = true
runSession()
p := getPacket(1)
packer.EXPECT().PackPacket().Return(p, nil)
sess.receivedPacketHandler.ReceivedPacket(0x035e, protocol.Encryption1RTT, time.Now(), true)
Expand All @@ -1037,6 +1046,7 @@ var _ = Describe("Session", func() {

It("doesn't send packets if there's nothing to send", func() {
sess.handshakeConfirmed = true
runSession()
packer.EXPECT().PackPacket().Return(nil, nil)
sess.receivedPacketHandler.ReceivedPacket(0x035e, protocol.Encryption1RTT, time.Now(), true)
sent, err := sess.sendPacket()
Expand All @@ -1050,6 +1060,7 @@ var _ = Describe("Session", func() {
sph.EXPECT().SendMode().Return(ackhandler.SendAck)
sph.EXPECT().ShouldSendNumPackets().Return(1000)
packer.EXPECT().MaybePackAckPacket(false)
runSession()
sess.sentPacketHandler = sph
Expect(sess.sendPackets()).To(Succeed())
})
Expand All @@ -1061,6 +1072,7 @@ var _ = Describe("Session", func() {
p := getPacket(1)
packer.EXPECT().PackPacket().Return(p, nil)
sess.connFlowController = fc
runSession()
mconn.EXPECT().Write(gomock.Any())
qlogger.EXPECT().SentPacket(p.header, p.length, nil, []wire.Frame{})
sent, err := sess.sendPacket()
Expand All @@ -1075,6 +1087,7 @@ var _ = Describe("Session", func() {
sph.EXPECT().GetLossDetectionTimeout().AnyTimes()
sph.EXPECT().SendMode().Return(ackhandler.SendNone)
sess.sentPacketHandler = sph
runSession()
Expect(sess.sendPackets()).To(Succeed())
})

Expand Down Expand Up @@ -1112,6 +1125,7 @@ var _ = Describe("Session", func() {
Expect(packet.PacketNumber).To(Equal(protocol.PacketNumber(123)))
})
sess.sentPacketHandler = sph
runSession()
mconn.EXPECT().Write(gomock.Any())
qlogger.EXPECT().SentPacket(p.header, p.length, gomock.Any(), gomock.Any())
Expect(sess.sendPackets()).To(Succeed())
Expand All @@ -1130,6 +1144,7 @@ var _ = Describe("Session", func() {
Expect(packet.PacketNumber).To(Equal(protocol.PacketNumber(123)))
})
sess.sentPacketHandler = sph
runSession()
mconn.EXPECT().Write(gomock.Any())
qlogger.EXPECT().SentPacket(p.header, p.length, gomock.Any(), gomock.Any())
Expect(sess.sendPackets()).To(Succeed())
Expand Down

0 comments on commit 422bed4

Please sign in to comment.