forked from quic-go/quic-go
fix flaky proxy tests
This commit is contained in:
@@ -257,7 +257,16 @@ var _ = Describe("QUIC Proxy", func() {
|
|||||||
})
|
})
|
||||||
|
|
||||||
Context("Delay Callback", func() {
|
Context("Delay Callback", func() {
|
||||||
|
expectDelay := func(startTime time.Time, rtt time.Duration, numRTTs int) {
|
||||||
|
expectedReceiveTime := startTime.Add(time.Duration(numRTTs) * rtt)
|
||||||
|
Expect(time.Now()).To(SatisfyAll(
|
||||||
|
BeTemporally(">=", expectedReceiveTime),
|
||||||
|
BeTemporally("<", expectedReceiveTime.Add(rtt/2)),
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
It("delays incoming packets", func() {
|
It("delays incoming packets", func() {
|
||||||
|
delay := 300 * time.Millisecond
|
||||||
opts := Opts{
|
opts := Opts{
|
||||||
RemoteAddr: serverAddr,
|
RemoteAddr: serverAddr,
|
||||||
// delay packet 1 by 200 ms
|
// delay packet 1 by 200 ms
|
||||||
@@ -267,7 +276,7 @@ var _ = Describe("QUIC Proxy", func() {
|
|||||||
if d == DirectionOutgoing {
|
if d == DirectionOutgoing {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
return time.Duration(200*p) * time.Millisecond
|
return time.Duration(p) * delay
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
startProxy(opts)
|
startProxy(opts)
|
||||||
@@ -279,14 +288,15 @@ var _ = Describe("QUIC Proxy", func() {
|
|||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
}
|
}
|
||||||
Eventually(func() []packetData { return serverReceivedPackets }).Should(HaveLen(1))
|
Eventually(func() []packetData { return serverReceivedPackets }).Should(HaveLen(1))
|
||||||
Expect(time.Now()).To(BeTemporally("~", start.Add(200*time.Millisecond), 50*time.Millisecond))
|
expectDelay(start, delay, 1)
|
||||||
Eventually(func() []packetData { return serverReceivedPackets }).Should(HaveLen(2))
|
Eventually(func() []packetData { return serverReceivedPackets }).Should(HaveLen(2))
|
||||||
Expect(time.Now()).To(BeTemporally("~", start.Add(400*time.Millisecond), 50*time.Millisecond))
|
expectDelay(start, delay, 2)
|
||||||
Eventually(func() []packetData { return serverReceivedPackets }).Should(HaveLen(3))
|
Eventually(func() []packetData { return serverReceivedPackets }).Should(HaveLen(3))
|
||||||
Expect(time.Now()).To(BeTemporally("~", start.Add(600*time.Millisecond), 50*time.Millisecond))
|
expectDelay(start, delay, 3)
|
||||||
})
|
})
|
||||||
|
|
||||||
It("delays outgoing packets", func() {
|
It("delays outgoing packets", func() {
|
||||||
|
delay := 300 * time.Millisecond
|
||||||
opts := Opts{
|
opts := Opts{
|
||||||
RemoteAddr: serverAddr,
|
RemoteAddr: serverAddr,
|
||||||
// delay packet 1 by 200 ms
|
// delay packet 1 by 200 ms
|
||||||
@@ -296,7 +306,7 @@ var _ = Describe("QUIC Proxy", func() {
|
|||||||
if d == DirectionIncoming {
|
if d == DirectionIncoming {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
return time.Duration(200*p) * time.Millisecond
|
return time.Duration(p) * delay
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
startProxy(opts)
|
startProxy(opts)
|
||||||
@@ -324,13 +334,13 @@ var _ = Describe("QUIC Proxy", func() {
|
|||||||
}
|
}
|
||||||
// the packets should have arrived immediately at the server
|
// the packets should have arrived immediately at the server
|
||||||
Eventually(func() []packetData { return serverReceivedPackets }).Should(HaveLen(3))
|
Eventually(func() []packetData { return serverReceivedPackets }).Should(HaveLen(3))
|
||||||
Expect(time.Now()).To(BeTemporally("~", start, 50*time.Millisecond))
|
expectDelay(start, delay, 0)
|
||||||
Eventually(func() []packetData { return clientReceivedPackets }).Should(HaveLen(1))
|
Eventually(func() []packetData { return clientReceivedPackets }).Should(HaveLen(1))
|
||||||
Expect(time.Now()).To(BeTemporally("~", start.Add(200*time.Millisecond), 50*time.Millisecond))
|
expectDelay(start, delay, 1)
|
||||||
Eventually(func() []packetData { return clientReceivedPackets }).Should(HaveLen(2))
|
Eventually(func() []packetData { return clientReceivedPackets }).Should(HaveLen(2))
|
||||||
Expect(time.Now()).To(BeTemporally("~", start.Add(400*time.Millisecond), 50*time.Millisecond))
|
expectDelay(start, delay, 2)
|
||||||
Eventually(func() []packetData { return clientReceivedPackets }).Should(HaveLen(3))
|
Eventually(func() []packetData { return clientReceivedPackets }).Should(HaveLen(3))
|
||||||
Expect(time.Now()).To(BeTemporally("~", start.Add(600*time.Millisecond), 50*time.Millisecond))
|
expectDelay(start, delay, 3)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user