| // Copyright 2023 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| //go:build go1.21 |
| |
| package quic |
| |
| import "testing" |
| |
| func TestPing(t *testing.T) { |
| tc := newTestConn(t, clientSide) |
| tc.handshake() |
| |
| tc.conn.ping(appDataSpace) |
| tc.wantFrame("connection should send a PING frame", |
| packetType1RTT, debugFramePing{}) |
| |
| tc.advanceToTimer() |
| tc.wantFrame("on PTO, connection should send another PING frame", |
| packetType1RTT, debugFramePing{}) |
| |
| tc.wantIdle("after sending PTO probe, no additional frames to send") |
| } |
| |
| func TestAck(t *testing.T) { |
| tc := newTestConn(t, serverSide) |
| tc.handshake() |
| |
| // Send two packets, to trigger an immediate ACK. |
| tc.writeFrames(packetType1RTT, |
| debugFramePing{}, |
| ) |
| tc.writeFrames(packetType1RTT, |
| debugFramePing{}, |
| ) |
| tc.wantFrame("connection should respond to ack-eliciting packet with an ACK frame", |
| packetType1RTT, |
| debugFrameAck{ |
| ranges: []i64range[packetNumber]{{0, 4}}, |
| }, |
| ) |
| } |