mirror of
https://github.com/refraction-networking/uquic.git
synced 2025-04-03 04:07:35 +03:00
make sure that all packets in the send queue are sent before closing
This commit is contained in:
parent
dd035c2f12
commit
93e724434b
2 changed files with 50 additions and 14 deletions
|
@ -70,4 +70,30 @@ var _ = Describe("Send Queue", func() {
|
|||
q.Close()
|
||||
Eventually(done).Should(BeClosed())
|
||||
})
|
||||
|
||||
It("blocks Close() until the packet has been sent out", func() {
|
||||
written := make(chan []byte)
|
||||
c.EXPECT().Write(gomock.Any()).Do(func(p []byte) { written <- p })
|
||||
done := make(chan struct{})
|
||||
go func() {
|
||||
defer GinkgoRecover()
|
||||
q.Run()
|
||||
close(done)
|
||||
}()
|
||||
|
||||
q.Send(getPacket([]byte("foobar")))
|
||||
|
||||
closed := make(chan struct{})
|
||||
go func() {
|
||||
defer GinkgoRecover()
|
||||
q.Close()
|
||||
close(closed)
|
||||
}()
|
||||
|
||||
Consistently(closed).ShouldNot(BeClosed())
|
||||
// now write the packet
|
||||
Expect(written).To(Receive())
|
||||
Eventually(done).Should(BeClosed())
|
||||
Eventually(closed).Should(BeClosed())
|
||||
})
|
||||
})
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue