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();
   }
 }