Skip to content

Commit 027f8b7

Browse files
neildgopherbot
authored andcommitted
quic: fix expected ACK Delay in client's ACK after HANDSHAKE_DONE
testConn.handshake runs through the initial QUIC handshake and verifies that the connection under test sends an expected sequence of handshake messages. The last datagram in the handshake is sent by the client, and contains an ACK for the last datagram sent by the server. The client sends this ACK after max_ack_delay (25ms) passes, minus the timer granularity (1ms). The timer granularity is a constant containing the expected maximum delay between a timer event's scheduled time and the timer actually firing. The expected handshake datagram used by testConn.handshake contains an ACK with an ACK Delay value of 25ms (max_ack_delay). This doesn't account for the timer granularity adjustment. However, since testConn.handshake advances time by 25ms rather than 24ms, the test connection sends the ACK at the later time and includes a larger ACK Delay value. Fix testConn.handshake to sleep for the expected delay (24ms). Fix the expected handshake datagram accordingly. This all avoids test failures after switching this package to use testing/synctest's fake clock, under which the connection sends this ACK at the scheduled time rather than a time under direct control of the test. Change-Id: I1af6e02e02f6493758e41db45a46d06a65441a7b Reviewed-on: https://go-review.googlesource.com/c/net/+/714480 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Nicholas Husin <husin@google.com> Auto-Submit: Damien Neil <dneil@google.com> Reviewed-by: Nicholas Husin <nsh@golang.org>
1 parent dec9fe7 commit 027f8b7

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

quic/tls_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,16 +32,16 @@ func (tc *testConn) handshake() {
3232
i := 0
3333
for {
3434
if i == len(dgrams)-1 {
35+
want := tc.endpoint.now.Add(maxAckDelay - timerGranularity)
3536
if tc.conn.side == clientSide {
36-
want := tc.endpoint.now.Add(maxAckDelay - timerGranularity)
3737
if !tc.timer.Equal(want) {
3838
t.Fatalf("want timer = %v (max_ack_delay), got %v", want, tc.timer)
3939
}
4040
if got := tc.readDatagram(); got != nil {
4141
t.Fatalf("client unexpectedly sent: %v", got)
4242
}
4343
}
44-
tc.advance(maxAckDelay)
44+
tc.advanceTo(want)
4545
}
4646

4747
// Check that we're sending exactly the data we expect.
@@ -209,7 +209,7 @@ func handshakeDatagrams(tc *testConn) (dgrams []*testDatagram) {
209209
frames: []debugFrame{
210210
debugFrameAck{
211211
ackDelay: unscaledAckDelayFromDuration(
212-
maxAckDelay, ackDelayExponent),
212+
maxAckDelay-timerGranularity, ackDelayExponent),
213213
ranges: []i64range[packetNumber]{{0, 2}},
214214
},
215215
},

0 commit comments

Comments
 (0)