Make LegactQuicStreamIdManagerTest test all current gQUIC versions.

gfe-relnote: n/a. test change only.
PiperOrigin-RevId: 284815499
Change-Id: I3cebfda82b94bdcd798de0f03da4a425404aa343
diff --git a/quic/core/legacy_quic_stream_id_manager_test.cc b/quic/core/legacy_quic_stream_id_manager_test.cc
index 0270774..602a634 100644
--- a/quic/core/legacy_quic_stream_id_manager_test.cc
+++ b/quic/core/legacy_quic_stream_id_manager_test.cc
@@ -6,6 +6,7 @@
 
 #include <utility>
 
+#include "net/third_party/quiche/src/quic/core/quic_types.h"
 #include "net/third_party/quiche/src/quic/core/quic_utils.h"
 #include "net/third_party/quiche/src/quic/core/quic_versions.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_test.h"
@@ -19,68 +20,89 @@
 using testing::_;
 using testing::StrictMock;
 
-class LegacyQuicStreamIdManagerTest : public QuicTest {
- public:
-  LegacyQuicStreamIdManagerTest(Perspective perspective,
-                                QuicTransportVersion transport_version)
-      : transport_version_(transport_version),
-        manager_(perspective,
-                 transport_version,
-                 kDefaultMaxStreamsPerConnection,
-                 kDefaultMaxStreamsPerConnection) {
-    // LegacyQuicStreamIdManager is only used for versions < 99.
-    // TODO(b/145768765) parameterize this test by version.
-    SetQuicReloadableFlag(quic_enable_version_q099, false);
-    SetQuicReloadableFlag(quic_enable_version_t099, false);
+struct TestParams {
+  TestParams(ParsedQuicVersion version, Perspective perspective)
+      : version(version), perspective(perspective) {}
+
+  ParsedQuicVersion version;
+  Perspective perspective;
+};
+
+// Used by ::testing::PrintToStringParamName().
+std::string PrintToString(const TestParams& p) {
+  return QuicStrCat(
+      ParsedQuicVersionToString(p.version),
+      (p.perspective == Perspective::IS_CLIENT ? "Client" : "Server"));
+}
+
+std::vector<TestParams> GetTestParams() {
+  std::vector<TestParams> params;
+  for (ParsedQuicVersion version : AllSupportedVersions()) {
+    for (auto perspective : {Perspective::IS_CLIENT, Perspective::IS_SERVER}) {
+      if (!VersionHasIetfQuicFrames(version.transport_version)) {
+        params.push_back(TestParams(version, perspective));
+      }
+    }
   }
+  return params;
+}
+
+class LegacyQuicStreamIdManagerTest : public QuicTestWithParam<TestParams> {
+ public:
+  LegacyQuicStreamIdManagerTest()
+      : transport_version_(GetParam().version.transport_version),
+        manager_(GetParam().perspective,
+                 GetParam().version.transport_version,
+                 kDefaultMaxStreamsPerConnection,
+                 kDefaultMaxStreamsPerConnection) {}
 
  protected:
-  QuicStreamId GetNthClientInitiatedId(int n) {
-    return QuicUtils::GetFirstBidirectionalStreamId(transport_version_,
-                                                    Perspective::IS_CLIENT) +
-           2 * n;
+  QuicStreamId GetNthPeerInitiatedId(int n) {
+    if (GetParam().perspective == Perspective::IS_SERVER) {
+      return QuicUtils::GetFirstBidirectionalStreamId(transport_version_,
+                                                      Perspective::IS_CLIENT) +
+             2 * n;
+    } else {
+      return 2 + 2 * n;
+    }
   }
 
-  QuicStreamId GetNthServerInitiatedId(int n) { return 2 + 2 * n; }
-
   QuicTransportVersion transport_version_;
   LegacyQuicStreamIdManager manager_;
 };
 
-class LegacyQuicStreamIdManagerTestServer
-    : public LegacyQuicStreamIdManagerTest {
- protected:
-  LegacyQuicStreamIdManagerTestServer()
-      : LegacyQuicStreamIdManagerTest(Perspective::IS_SERVER,
-                                      QuicTransportVersion::QUIC_VERSION_46) {}
-};
+// LegacyQuicStreamIdManager is only used for versions < 99.
+INSTANTIATE_TEST_SUITE_P(Tests,
+                         LegacyQuicStreamIdManagerTest,
+                         ::testing::ValuesIn(GetTestParams()),
+                         ::testing::PrintToStringParamName());
 
-TEST_F(LegacyQuicStreamIdManagerTestServer, CanOpenNextOutgoingStream) {
+TEST_P(LegacyQuicStreamIdManagerTest, CanOpenNextOutgoingStream) {
   EXPECT_TRUE(manager_.CanOpenNextOutgoingStream(
       manager_.max_open_outgoing_streams() - 1));
   EXPECT_FALSE(
       manager_.CanOpenNextOutgoingStream(manager_.max_open_outgoing_streams()));
 }
 
-TEST_F(LegacyQuicStreamIdManagerTestServer, CanOpenIncomingStream) {
+TEST_P(LegacyQuicStreamIdManagerTest, CanOpenIncomingStream) {
   EXPECT_TRUE(
       manager_.CanOpenIncomingStream(manager_.max_open_incoming_streams() - 1));
   EXPECT_FALSE(
       manager_.CanOpenIncomingStream(manager_.max_open_incoming_streams()));
 }
 
-TEST_F(LegacyQuicStreamIdManagerTestServer, AvailableStreams) {
+TEST_P(LegacyQuicStreamIdManagerTest, AvailableStreams) {
   ASSERT_TRUE(
-      manager_.MaybeIncreaseLargestPeerStreamId(GetNthClientInitiatedId(3)));
-  EXPECT_TRUE(manager_.IsAvailableStream(GetNthClientInitiatedId(1)));
-  EXPECT_TRUE(manager_.IsAvailableStream(GetNthClientInitiatedId(2)));
+      manager_.MaybeIncreaseLargestPeerStreamId(GetNthPeerInitiatedId(3)));
+  EXPECT_TRUE(manager_.IsAvailableStream(GetNthPeerInitiatedId(1)));
+  EXPECT_TRUE(manager_.IsAvailableStream(GetNthPeerInitiatedId(2)));
   ASSERT_TRUE(
-      manager_.MaybeIncreaseLargestPeerStreamId(GetNthClientInitiatedId(2)));
+      manager_.MaybeIncreaseLargestPeerStreamId(GetNthPeerInitiatedId(2)));
   ASSERT_TRUE(
-      manager_.MaybeIncreaseLargestPeerStreamId(GetNthClientInitiatedId(1)));
+      manager_.MaybeIncreaseLargestPeerStreamId(GetNthPeerInitiatedId(1)));
 }
 
-TEST_F(LegacyQuicStreamIdManagerTestServer, MaxAvailableStreams) {
+TEST_P(LegacyQuicStreamIdManagerTest, MaxAvailableStreams) {
   // Test that the server closes the connection if a client makes too many data
   // streams available.  The server accepts slightly more than the negotiated
   // stream limit to deal with rare cases where a client FIN/RST is lost.
@@ -94,11 +116,11 @@
   EXPECT_LE(10 * kMaxStreamsForTest, kAvailableStreamLimit);
 
   EXPECT_TRUE(
-      manager_.MaybeIncreaseLargestPeerStreamId(GetNthClientInitiatedId(0)));
+      manager_.MaybeIncreaseLargestPeerStreamId(GetNthPeerInitiatedId(0)));
 
   // Establish available streams up to the server's limit.
   const int kLimitingStreamId =
-      GetNthClientInitiatedId(kAvailableStreamLimit + 1);
+      GetNthPeerInitiatedId(kAvailableStreamLimit + 1);
   // This exceeds the stream limit. In versions other than 99
   // this is allowed. Version 99 hews to the IETF spec and does
   // not allow it.
@@ -110,54 +132,38 @@
       manager_.MaybeIncreaseLargestPeerStreamId(kLimitingStreamId + 2 * 2));
 }
 
-TEST_F(LegacyQuicStreamIdManagerTestServer, MaximumAvailableOpenedStreams) {
-  QuicStreamId stream_id = GetNthClientInitiatedId(0);
+TEST_P(LegacyQuicStreamIdManagerTest, MaximumAvailableOpenedStreams) {
+  QuicStreamId stream_id = GetNthPeerInitiatedId(0);
   EXPECT_TRUE(manager_.MaybeIncreaseLargestPeerStreamId(stream_id));
 
   EXPECT_TRUE(manager_.MaybeIncreaseLargestPeerStreamId(
       stream_id + 2 * (manager_.max_open_incoming_streams() - 1)));
 }
 
-TEST_F(LegacyQuicStreamIdManagerTestServer, TooManyAvailableStreams) {
-  QuicStreamId stream_id = GetNthClientInitiatedId(0);
+TEST_P(LegacyQuicStreamIdManagerTest, TooManyAvailableStreams) {
+  QuicStreamId stream_id = GetNthPeerInitiatedId(0);
   EXPECT_TRUE(manager_.MaybeIncreaseLargestPeerStreamId(stream_id));
 
   // A stream ID which is too large to create.
   QuicStreamId stream_id2 =
-      GetNthClientInitiatedId(2 * manager_.MaxAvailableStreams() + 4);
+      GetNthPeerInitiatedId(2 * manager_.MaxAvailableStreams() + 4);
   EXPECT_FALSE(manager_.MaybeIncreaseLargestPeerStreamId(stream_id2));
 }
 
-TEST_F(LegacyQuicStreamIdManagerTestServer, ManyAvailableStreams) {
+TEST_P(LegacyQuicStreamIdManagerTest, ManyAvailableStreams) {
   // When max_open_streams_ is 200, should be able to create 200 streams
   // out-of-order, that is, creating the one with the largest stream ID first.
   manager_.set_max_open_incoming_streams(200);
-  QuicStreamId stream_id = GetNthClientInitiatedId(0);
+  QuicStreamId stream_id = GetNthPeerInitiatedId(0);
   EXPECT_TRUE(manager_.MaybeIncreaseLargestPeerStreamId(stream_id));
 
   // Create the largest stream ID of a threatened total of 200 streams.
   // GetNth... starts at 0, so for 200 streams, get the 199th.
   EXPECT_TRUE(
-      manager_.MaybeIncreaseLargestPeerStreamId(GetNthClientInitiatedId(199)));
+      manager_.MaybeIncreaseLargestPeerStreamId(GetNthPeerInitiatedId(199)));
 }
 
-TEST_F(LegacyQuicStreamIdManagerTestServer,
-       TestMaxIncomingAndOutgoingStreamsAllowed) {
-  EXPECT_EQ(manager_.max_open_incoming_streams(),
-            kDefaultMaxStreamsPerConnection);
-  EXPECT_EQ(manager_.max_open_outgoing_streams(),
-            kDefaultMaxStreamsPerConnection);
-}
-
-class LegacyQuicStreamIdManagerTestClient
-    : public LegacyQuicStreamIdManagerTest {
- protected:
-  LegacyQuicStreamIdManagerTestClient()
-      : LegacyQuicStreamIdManagerTest(Perspective::IS_CLIENT,
-                                      QuicTransportVersion::QUIC_VERSION_46) {}
-};
-
-TEST_F(LegacyQuicStreamIdManagerTestClient,
+TEST_P(LegacyQuicStreamIdManagerTest,
        TestMaxIncomingAndOutgoingStreamsAllowed) {
   EXPECT_EQ(manager_.max_open_incoming_streams(),
             kDefaultMaxStreamsPerConnection);