Wait for pending ACKs to be flushed in QuicTestClient::WaitUntil and QuicTestClient::WaitForWriteToFlush to avoid server's unnecessary retransmission in tests.
PiperOrigin-RevId: 314796960
Change-Id: Iad53e0eec1ca4bcdeadc18daf2c91cf10041e547
diff --git a/quic/test_tools/quic_test_client.cc b/quic/test_tools/quic_test_client.cc
index 9c1c4f3..df54c21 100644
--- a/quic/test_tools/quic_test_client.cc
+++ b/quic/test_tools/quic_test_client.cc
@@ -661,7 +661,9 @@
->GetClock();
QuicTime end_waiting_time =
clock->Now() + QuicTime::Delta::FromMicroseconds(timeout_us);
- while (HaveActiveStream() && !(trigger && trigger()) &&
+ while ((HaveActiveStream() ||
+ client()->session()->connection()->HasPendingAcks()) &&
+ !(trigger && trigger()) &&
(timeout_us < 0 || clock->Now() < end_waiting_time)) {
client_->WaitForEvents();
}
@@ -845,7 +847,8 @@
}
void QuicTestClient::WaitForWriteToFlush() {
- while (connected() && client()->session()->HasDataToWrite()) {
+ while (connected() && (client()->session()->HasDataToWrite() ||
+ client()->session()->connection()->HasPendingAcks())) {
client_->WaitForEvents();
}
}