Define AbslStringify() for quic::SendAlgorithmInterface::NetworkParams

It's much easier to debug EXPECT_CALLs on AdjustNetworkParameters::AdjustNetworkParameters() when gtest knows how to print the parameters!

PiperOrigin-RevId: 817218751
diff --git a/quiche/quic/core/congestion_control/send_algorithm_interface.h b/quiche/quic/core/congestion_control/send_algorithm_interface.h
index 91ac898..1c886ae 100644
--- a/quiche/quic/core/congestion_control/send_algorithm_interface.h
+++ b/quiche/quic/core/congestion_control/send_algorithm_interface.h
@@ -40,6 +40,20 @@
           rtt(rtt),
           allow_cwnd_to_decrease(allow_cwnd_to_decrease) {}
 
+    template <typename Sink>
+    friend void AbslStringify(Sink& sink, const NetworkParams& params) {
+      absl::Format(&sink,
+                   "NetworkParams { "
+                   "bandwidth: %v, "
+                   "rtt: %v, "
+                   "max_initial_congestion_window: %v, "
+                   "allow_cwnd_to_decrease: %v, "
+                   "is_rtt_trusted: %v }",
+                   params.bandwidth, params.rtt,
+                   params.max_initial_congestion_window,
+                   params.allow_cwnd_to_decrease, params.is_rtt_trusted);
+    }
+
     bool operator==(const NetworkParams& other) const = default;
 
     QuicBandwidth bandwidth = QuicBandwidth::Zero();
diff --git a/quiche/quic/core/congestion_control/send_algorithm_test.cc b/quiche/quic/core/congestion_control/send_algorithm_test.cc
index e80bbdb..a8c6191 100644
--- a/quiche/quic/core/congestion_control/send_algorithm_test.cc
+++ b/quiche/quic/core/congestion_control/send_algorithm_test.cc
@@ -2,26 +2,29 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include <algorithm>
-#include <map>
+#include <cstddef>
+#include <cstdint>
 #include <memory>
 #include <ostream>
 #include <string>
-#include <utility>
 #include <vector>
 
 #include "absl/strings/str_cat.h"
 #include "quiche/quic/core/congestion_control/rtt_stats.h"
 #include "quiche/quic/core/congestion_control/send_algorithm_interface.h"
+#include "quiche/quic/core/crypto/quic_random.h"
+#include "quiche/quic/core/quic_bandwidth.h"
+#include "quiche/quic/core/quic_clock.h"
+#include "quiche/quic/core/quic_connection_stats.h"
+#include "quiche/quic/core/quic_constants.h"
+#include "quiche/quic/core/quic_time.h"
 #include "quiche/quic/core/quic_types.h"
-#include "quiche/quic/core/quic_utils.h"
 #include "quiche/quic/platform/api/quic_logging.h"
 #include "quiche/quic/platform/api/quic_test.h"
-#include "quiche/quic/test_tools/mock_clock.h"
-#include "quiche/quic/test_tools/quic_config_peer.h"
 #include "quiche/quic/test_tools/quic_connection_peer.h"
 #include "quiche/quic/test_tools/quic_sent_packet_manager_peer.h"
 #include "quiche/quic/test_tools/quic_test_utils.h"
+#include "quiche/quic/test_tools/simulator/link.h"
 #include "quiche/quic/test_tools/simulator/quic_endpoint.h"
 #include "quiche/quic/test_tools/simulator/simulator.h"
 #include "quiche/quic/test_tools/simulator/switch.h"
@@ -134,8 +137,6 @@
   return params;
 }
 
-}  // namespace
-
 class SendAlgorithmTest : public QuicTestWithParam<TestParams> {
  protected:
   SendAlgorithmTest()
@@ -345,5 +346,23 @@
   PrintTransferStats();
 }
 
+TEST(NetworkParamsStringifyTest, Stringifies) {
+  SendAlgorithmInterface::NetworkParams params(
+      /*bandwidth=*/QuicBandwidth::FromKBitsPerSecond(1000),
+      /*rtt=*/QuicTime::Delta::FromSeconds(2),
+      /*allow_cwnd_to_decrease=*/true);
+
+  params.max_initial_congestion_window = 42;
+  params.is_rtt_trusted = true;
+
+  EXPECT_EQ(testing::PrintToString(params),
+            "NetworkParams { bandwidth: 1000.00 kbits/s (125.00 kbytes/s), "
+            "rtt: 2s, "
+            "max_initial_congestion_window: 42, "
+            "allow_cwnd_to_decrease: true, "
+            "is_rtt_trusted: true }");
+}
+
+}  // namespace
 }  // namespace test
 }  // namespace quic