Update GFE test agent to return times of each step of connecting

PiperOrigin-RevId: 812948067
diff --git a/quiche/quic/test_tools/quic_test_client.cc b/quiche/quic/test_tools/quic_test_client.cc
index 4c3799b..3ddd4b7 100644
--- a/quiche/quic/test_tools/quic_test_client.cc
+++ b/quiche/quic/test_tools/quic_test_client.cc
@@ -454,6 +454,10 @@
 
 bool QuicTestClient::response_complete() const { return response_complete_; }
 
+QuicTime QuicTestClient::response_end_time() const {
+  return response_end_time_;
+}
+
 int64_t QuicTestClient::response_body_size() const {
   return response_body_size_;
 }
@@ -548,6 +552,10 @@
   return handshake_msg->tag_value_map();
 }
 
+const QuicConnectionStats& QuicTestClient::GetConnectionStats() const {
+  return client_->client_session()->connection()->GetStats();
+}
+
 bool QuicTestClient::connected() const { return client_->connected(); }
 
 void QuicTestClient::Connect() {
@@ -810,6 +818,10 @@
   stream_error_ = state.stream_error;
   response_ = state.response;
   response_complete_ = state.response_complete;
+  if (response_complete_) {
+    response_end_time_ =
+        client()->client_session()->connection()->clock()->Now();
+  }
   response_headers_complete_ = state.response_headers_complete;
   response_headers_ = state.response_headers.Clone();
   response_trailers_ = state.response_trailers.Clone();
diff --git a/quiche/quic/test_tools/quic_test_client.h b/quiche/quic/test_tools/quic_test_client.h
index a0e99f6..88c0d26 100644
--- a/quiche/quic/test_tools/quic_test_client.h
+++ b/quiche/quic/test_tools/quic_test_client.h
@@ -196,6 +196,7 @@
   // received.
   const quiche::HttpHeaderBlock& response_trailers() const;
   bool response_complete() const;
+  QuicTime response_end_time() const;
   int64_t response_body_size() const;
   const std::string& response_body() const;
   // Getters for stream state that return state of the oldest active stream that
@@ -295,6 +296,8 @@
   // Get the server config map.  Server config must exist.
   const QuicTagValueMap& GetServerConfig() const;
 
+  const QuicConnectionStats& GetConnectionStats() const;
+
   void set_auto_reconnect(bool reconnect) { auto_reconnect_ = reconnect; }
 
   void set_priority(spdy::SpdyPriority priority) { priority_ = priority; }
@@ -397,6 +400,7 @@
   QuicRstStreamErrorCode stream_error_;
 
   bool response_complete_;
+  QuicTime response_end_time_ = QuicTime::Zero();
   bool response_headers_complete_;
   mutable quiche::HttpHeaderBlock response_headers_;