Clean up RtpSenderTest and remove RtpSenderEgress dependencies.

Since all test cases that used RtpSenderEgress have been refactored or
moved, we can now get rid of lot of test fixture crud:
* Remove RtpSenderContext helper, make sender normal member.
* Remove test transport helper
* Remove task queue helper (needed for thread checks in egress)
* Remove various mocks no longer used
* Remove RtpSenderWithoutPacer subclass
* Remove WithWithoutOverhead parametrization (only affect egress)

..plus some cleanup of how configs are created.

Bug: webrtc:11340
Change-Id: I5c581d60862fc6dc2b99f76058782309dc7aef4d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/220280
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34135}
diff --git a/modules/rtp_rtcp/source/rtp_sender_unittest.cc b/modules/rtp_rtcp/source/rtp_sender_unittest.cc
index b33dcd9..e9be0161 100644
--- a/modules/rtp_rtcp/source/rtp_sender_unittest.cc
+++ b/modules/rtp_rtcp/source/rtp_sender_unittest.cc
@@ -22,14 +22,12 @@
 #include "modules/rtp_rtcp/include/rtp_header_extension_map.h"
 #include "modules/rtp_rtcp/include/rtp_packet_sender.h"
 #include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
-#include "modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h"
 #include "modules/rtp_rtcp/source/rtp_format_video_generic.h"
 #include "modules/rtp_rtcp/source/rtp_generic_frame_descriptor.h"
 #include "modules/rtp_rtcp/source/rtp_generic_frame_descriptor_extension.h"
 #include "modules/rtp_rtcp/source/rtp_header_extensions.h"
 #include "modules/rtp_rtcp/source/rtp_packet_received.h"
 #include "modules/rtp_rtcp/source/rtp_packet_to_send.h"
-#include "modules/rtp_rtcp/source/rtp_sender_egress.h"
 #include "modules/rtp_rtcp/source/rtp_sender_video.h"
 #include "modules/rtp_rtcp/source/rtp_utility.h"
 #include "modules/rtp_rtcp/source/video_fec_generator.h"
@@ -87,64 +85,10 @@
 using ::testing::IsEmpty;
 using ::testing::NiceMock;
 using ::testing::Not;
-using ::testing::Optional;
 using ::testing::Pointee;
 using ::testing::Property;
 using ::testing::Return;
 using ::testing::SizeIs;
-using ::testing::StrEq;
-using ::testing::StrictMock;
-
-class LoopbackTransportTest : public webrtc::Transport {
- public:
-  LoopbackTransportTest() : total_bytes_sent_(0) {
-    receivers_extensions_.Register<TransmissionOffset>(
-        kTransmissionTimeOffsetExtensionId);
-    receivers_extensions_.Register<AbsoluteSendTime>(
-        kAbsoluteSendTimeExtensionId);
-    receivers_extensions_.Register<TransportSequenceNumber>(
-        kTransportSequenceNumberExtensionId);
-    receivers_extensions_.Register<VideoOrientation>(kVideoRotationExtensionId);
-    receivers_extensions_.Register<AudioLevel>(kAudioLevelExtensionId);
-    receivers_extensions_.Register<VideoTimingExtension>(
-        kVideoTimingExtensionId);
-    receivers_extensions_.Register<RtpMid>(kMidExtensionId);
-    receivers_extensions_.Register<RtpGenericFrameDescriptorExtension00>(
-        kGenericDescriptorId);
-    receivers_extensions_.Register<RtpStreamId>(kRidExtensionId);
-    receivers_extensions_.Register<RepairedRtpStreamId>(
-        kRepairedRidExtensionId);
-  }
-
-  bool SendRtp(const uint8_t* data,
-               size_t len,
-               const PacketOptions& options) override {
-    last_options_ = options;
-    total_bytes_sent_ += len;
-    sent_packets_.push_back(RtpPacketReceived(&receivers_extensions_));
-    EXPECT_TRUE(sent_packets_.back().Parse(data, len));
-    return true;
-  }
-  bool SendRtcp(const uint8_t* data, size_t len) override { return false; }
-  const RtpPacketReceived& last_sent_packet() { return sent_packets_.back(); }
-  int packets_sent() { return sent_packets_.size(); }
-
-  size_t total_bytes_sent_;
-  PacketOptions last_options_;
-  std::vector<RtpPacketReceived> sent_packets_;
-
- private:
-  RtpHeaderExtensionMap receivers_extensions_;
-};
-
-MATCHER_P(SameRtcEventTypeAs, value, "") {
-  return value == arg->GetType();
-}
-
-struct TestConfig {
-  explicit TestConfig(bool with_overhead) : with_overhead(with_overhead) {}
-  bool with_overhead = false;
-};
 
 class MockRtpPacketPacer : public RtpPacketSender {
  public:
@@ -157,102 +101,11 @@
               (override));
 };
 
-class MockSendSideDelayObserver : public SendSideDelayObserver {
- public:
-  MOCK_METHOD(void,
-              SendSideDelayUpdated,
-              (int, int, uint64_t, uint32_t),
-              (override));
-};
-
-class MockSendPacketObserver : public SendPacketObserver {
- public:
-  MOCK_METHOD(void, OnSendPacket, (uint16_t, int64_t, uint32_t), (override));
-};
-
-class MockTransportFeedbackObserver : public TransportFeedbackObserver {
- public:
-  MOCK_METHOD(void, OnAddPacket, (const RtpPacketSendInfo&), (override));
-  MOCK_METHOD(void,
-              OnTransportFeedback,
-              (const rtcp::TransportFeedback&),
-              (override));
-};
-
-class TaskQueuePacketSender : public RtpPacketSender {
- public:
-  TaskQueuePacketSender(TimeController* time_controller,
-                        std::unique_ptr<RtpPacketSender> packet_sender)
-      : time_controller_(time_controller),
-        packet_sender_(std::move(packet_sender)),
-        queue_(time_controller_->CreateTaskQueueFactory()->CreateTaskQueue(
-            "PacerQueue",
-            TaskQueueFactory::Priority::NORMAL)) {}
-
-  void EnqueuePackets(
-      std::vector<std::unique_ptr<RtpPacketToSend>> packets) override {
-    queue_->PostTask(ToQueuedTask([sender = packet_sender_.get(),
-                                   packets_ = std::move(packets)]() mutable {
-      sender->EnqueuePackets(std::move(packets_));
-    }));
-    // Trigger task we just enqueued to be executed by updating the simulated
-    // time controller.
-    time_controller_->AdvanceTime(TimeDelta::Zero());
-  }
-
-  TaskQueueBase* task_queue() const { return queue_.get(); }
-
-  TimeController* const time_controller_;
-  std::unique_ptr<RtpPacketSender> packet_sender_;
-  std::unique_ptr<TaskQueueBase, TaskQueueDeleter> queue_;
-};
-
-// Mimics ModuleRtpRtcp::RtpSenderContext.
-// TODO(sprang): Split up unit tests and test these components individually
-// wherever possible.
-struct RtpSenderContext : public SequenceNumberAssigner {
-  RtpSenderContext(const RtpRtcpInterface::Configuration& config,
-                   TimeController* time_controller)
-      : time_controller_(time_controller),
-        packet_history_(config.clock, config.enable_rtx_padding_prioritization),
-        packet_sender_(config, &packet_history_),
-        pacer_(time_controller,
-               std::make_unique<RtpSenderEgress::NonPacedPacketSender>(
-                   &packet_sender_,
-                   this)),
-        packet_generator_(config,
-                          &packet_history_,
-                          config.paced_sender ? config.paced_sender : &pacer_) {
-  }
-  void AssignSequenceNumber(RtpPacketToSend* packet) override {
-    packet_generator_.AssignSequenceNumber(packet);
-  }
-  // Inject packet straight into RtpSenderEgress without passing through the
-  // pacer, but while still running on the pacer task queue.
-  void InjectPacket(std::unique_ptr<RtpPacketToSend> packet,
-                    const PacedPacketInfo& packet_info) {
-    pacer_.task_queue()->PostTask(
-        ToQueuedTask([sender_ = &packet_sender_, packet_ = std::move(packet),
-                      packet_info]() mutable {
-          sender_->SendPacket(packet_.get(), packet_info);
-        }));
-    time_controller_->AdvanceTime(TimeDelta::Zero());
-  }
-  TimeController* time_controller_;
-  RtpPacketHistory packet_history_;
-  RtpSenderEgress packet_sender_;
-  TaskQueuePacketSender pacer_;
-  RTPSender packet_generator_;
-};
-
 class FieldTrialConfig : public WebRtcKeyValueConfig {
  public:
-  FieldTrialConfig()
-      : overhead_enabled_(false),
-        max_padding_factor_(1200) {}
+  FieldTrialConfig() : max_padding_factor_(1200) {}
   ~FieldTrialConfig() override {}
 
-  void SetOverHeadEnabled(bool enabled) { overhead_enabled_ = enabled; }
   void SetMaxPaddingFactor(double factor) { max_padding_factor_ = factor; }
 
   std::string Lookup(absl::string_view key) const override {
@@ -261,20 +114,17 @@
       rtc::SimpleStringBuilder ssb(string_buf);
       ssb << "factor:" << max_padding_factor_;
       return ssb.str();
-    } else if (key == "WebRTC-SendSideBwe-WithOverhead") {
-      return overhead_enabled_ ? "Enabled" : "Disabled";
     }
     return "";
   }
 
  private:
-  bool overhead_enabled_;
   double max_padding_factor_;
 };
 
 }  // namespace
 
-class RtpSenderTest : public ::testing::TestWithParam<TestConfig> {
+class RtpSenderTest : public ::testing::Test {
  protected:
   RtpSenderTest()
       : time_controller_(Timestamp::Millis(kStartTime)),
@@ -289,64 +139,51 @@
                         nullptr,
                         clock_),
         kMarkerBit(true) {
-    field_trials_.SetOverHeadEnabled(GetParam().with_overhead);
   }
 
-  void SetUp() override { SetUpRtpSender(true, false, false); }
+  void SetUp() override { SetUpRtpSender(true, false, nullptr); }
 
-  RTPSender* rtp_sender() {
-    RTC_DCHECK(rtp_sender_context_);
-    return &rtp_sender_context_->packet_generator_;
-  }
-
-  RtpSenderEgress* rtp_egress() {
-    RTC_DCHECK(rtp_sender_context_);
-    return &rtp_sender_context_->packet_sender_;
-  }
-
-  void SetUpRtpSender(bool pacer,
-                      bool populate_network2,
-                      bool always_send_mid_and_rid) {
-    SetUpRtpSender(pacer, populate_network2, always_send_mid_and_rid,
-                   &flexfec_sender_);
-  }
-
-  void SetUpRtpSender(bool pacer,
-                      bool populate_network2,
+  void SetUpRtpSender(bool populate_network2,
                       bool always_send_mid_and_rid,
                       VideoFecGenerator* fec_generator) {
-    RtpRtcpInterface::Configuration config;
-    config.clock = clock_;
-    config.outgoing_transport = &transport_;
-    config.local_media_ssrc = kSsrc;
-    config.rtx_send_ssrc = kRtxSsrc;
+    RtpRtcpInterface::Configuration config = GetDefaultConfig();
     config.fec_generator = fec_generator;
-    config.event_log = &mock_rtc_event_log_;
-    config.send_packet_observer = &send_packet_observer_;
-    config.retransmission_rate_limiter = &retransmission_rate_limiter_;
-    config.paced_sender = pacer ? &mock_paced_sender_ : nullptr;
     config.populate_network2_timestamp = populate_network2;
     config.always_send_mid_and_rid = always_send_mid_and_rid;
-    config.field_trials = &field_trials_;
+    CreateSender(config);
+  }
 
-    rtp_sender_context_ =
-        std::make_unique<RtpSenderContext>(config, &time_controller_);
-    rtp_sender()->SetSequenceNumber(kSeqNum);
-    rtp_sender()->SetTimestampOffset(0);
+  RtpRtcpInterface::Configuration GetDefaultConfig() {
+    RtpRtcpInterface::Configuration config;
+    config.clock = clock_;
+    config.local_media_ssrc = kSsrc;
+    config.rtx_send_ssrc = kRtxSsrc;
+    config.event_log = &mock_rtc_event_log_;
+    config.retransmission_rate_limiter = &retransmission_rate_limiter_;
+    config.paced_sender = &mock_paced_sender_;
+    config.field_trials = &field_trials_;
+    return config;
+  }
+
+  void CreateSender(const RtpRtcpInterface::Configuration& config) {
+    packet_history_ = std::make_unique<RtpPacketHistory>(
+        config.clock, config.enable_rtx_padding_prioritization);
+    rtp_sender_ = std::make_unique<RTPSender>(config, packet_history_.get(),
+                                              config.paced_sender);
+    rtp_sender_->SetSequenceNumber(kSeqNum);
+    rtp_sender_->SetTimestampOffset(0);
   }
 
   GlobalSimulatedTimeController time_controller_;
   Clock* const clock_;
   NiceMock<MockRtcEventLog> mock_rtc_event_log_;
   MockRtpPacketPacer mock_paced_sender_;
-  StrictMock<MockSendPacketObserver> send_packet_observer_;
-  StrictMock<MockTransportFeedbackObserver> feedback_observer_;
   RateLimiter retransmission_rate_limiter_;
   FlexfecSender flexfec_sender_;
 
-  std::unique_ptr<RtpSenderContext> rtp_sender_context_;
+  std::unique_ptr<RtpPacketHistory> packet_history_;
+  std::unique_ptr<RTPSender> rtp_sender_;
 
-  LoopbackTransportTest transport_;
   const bool kMarkerBit;
   FieldTrialConfig field_trials_;
 
@@ -354,13 +191,13 @@
                                                   bool marker_bit,
                                                   uint32_t timestamp,
                                                   int64_t capture_time_ms) {
-    auto packet = rtp_sender()->AllocatePacket();
+    auto packet = rtp_sender_->AllocatePacket();
     packet->SetPayloadType(payload_type);
     packet->set_packet_type(RtpPacketMediaType::kVideo);
     packet->SetMarker(marker_bit);
     packet->SetTimestamp(timestamp);
     packet->set_capture_time_ms(capture_time_ms);
-    EXPECT_TRUE(rtp_sender()->AssignSequenceNumber(packet.get()));
+    EXPECT_TRUE(rtp_sender_->AssignSequenceNumber(packet.get()));
     return packet;
   }
 
@@ -373,8 +210,8 @@
     packet->set_allow_retransmission(true);
 
     // Packet should be stored in a send bucket.
-    EXPECT_TRUE(rtp_sender()->SendToNetwork(
-        std::make_unique<RtpPacketToSend>(*packet)));
+    EXPECT_TRUE(
+        rtp_sender_->SendToNetwork(std::make_unique<RtpPacketToSend>(*packet)));
     return packet;
   }
 
@@ -384,16 +221,15 @@
     // because of lack of capacity for the media packet, or for an rtx packet
     // containing the media packet.
     return SendPacket(kCaptureTimeMs,
-                      /*payload_length=*/rtp_sender()->MaxRtpPacketSize() -
-                          rtp_sender()->ExpectedPerPacketOverhead());
+                      /*payload_length=*/rtp_sender_->MaxRtpPacketSize() -
+                          rtp_sender_->ExpectedPerPacketOverhead());
   }
 
   size_t GenerateAndSendPadding(size_t target_size_bytes) {
     size_t generated_bytes = 0;
-    for (auto& packet :
-         rtp_sender()->GeneratePadding(target_size_bytes, true)) {
+    for (auto& packet : rtp_sender_->GeneratePadding(target_size_bytes, true)) {
       generated_bytes += packet->payload_size() + packet->padding_size();
-      rtp_sender()->SendToNetwork(std::move(packet));
+      rtp_sender_->SendToNetwork(std::move(packet));
     }
     return generated_bytes;
   }
@@ -406,64 +242,56 @@
     // RTX needs to be able to read the source packets from the packet store.
     // Pick a number of packets to store big enough for any unit test.
     constexpr uint16_t kNumberOfPacketsToStore = 100;
-    rtp_sender_context_->packet_history_.SetStorePacketsStatus(
+    packet_history_->SetStorePacketsStatus(
         RtpPacketHistory::StorageMode::kStoreAndCull, kNumberOfPacketsToStore);
-    rtp_sender()->SetRtxPayloadType(kRtxPayload, kPayload);
-    rtp_sender()->SetRtxStatus(kRtxRetransmitted | kRtxRedundantPayloads);
+    rtp_sender_->SetRtxPayloadType(kRtxPayload, kPayload);
+    rtp_sender_->SetRtxStatus(kRtxRetransmitted | kRtxRedundantPayloads);
   }
 
   // Enable sending of the MID header extension for both the primary SSRC and
   // the RTX SSRC.
   void EnableMidSending(const std::string& mid) {
-    rtp_sender()->RegisterRtpHeaderExtension(RtpMid::kUri, kMidExtensionId);
-    rtp_sender()->SetMid(mid);
+    rtp_sender_->RegisterRtpHeaderExtension(RtpMid::kUri, kMidExtensionId);
+    rtp_sender_->SetMid(mid);
   }
 
   // Enable sending of the RSID header extension for the primary SSRC and the
   // RRSID header extension for the RTX SSRC.
   void EnableRidSending(const std::string& rid) {
-    rtp_sender()->RegisterRtpHeaderExtension(RtpStreamId::kUri,
-                                             kRidExtensionId);
-    rtp_sender()->RegisterRtpHeaderExtension(RepairedRtpStreamId::kUri,
-                                             kRepairedRidExtensionId);
-    rtp_sender()->SetRid(rid);
+    rtp_sender_->RegisterRtpHeaderExtension(RtpStreamId::kUri, kRidExtensionId);
+    rtp_sender_->RegisterRtpHeaderExtension(RepairedRtpStreamId::kUri,
+                                            kRepairedRidExtensionId);
+    rtp_sender_->SetRid(rid);
   }
 };
 
-// TODO(pbos): Move tests over from WithoutPacer to RtpSenderTest as this is our
-// default code path.
-class RtpSenderTestWithoutPacer : public RtpSenderTest {
- public:
-  void SetUp() override { SetUpRtpSender(false, false, false); }
-};
-
-TEST_P(RtpSenderTestWithoutPacer, AllocatePacketSetCsrc) {
+TEST_F(RtpSenderTest, AllocatePacketSetCsrc) {
   // Configure rtp_sender with csrc.
   std::vector<uint32_t> csrcs;
   csrcs.push_back(0x23456789);
-  rtp_sender()->SetCsrcs(csrcs);
+  rtp_sender_->SetCsrcs(csrcs);
 
-  auto packet = rtp_sender()->AllocatePacket();
+  auto packet = rtp_sender_->AllocatePacket();
 
   ASSERT_TRUE(packet);
-  EXPECT_EQ(rtp_sender()->SSRC(), packet->Ssrc());
+  EXPECT_EQ(rtp_sender_->SSRC(), packet->Ssrc());
   EXPECT_EQ(csrcs, packet->Csrcs());
 }
 
-TEST_P(RtpSenderTestWithoutPacer, AllocatePacketReserveExtensions) {
+TEST_F(RtpSenderTest, AllocatePacketReserveExtensions) {
   // Configure rtp_sender with extensions.
-  ASSERT_TRUE(rtp_sender()->RegisterRtpHeaderExtension(
+  ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
       TransmissionOffset::kUri, kTransmissionTimeOffsetExtensionId));
-  ASSERT_TRUE(rtp_sender()->RegisterRtpHeaderExtension(
+  ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
       AbsoluteSendTime::kUri, kAbsoluteSendTimeExtensionId));
-  ASSERT_TRUE(rtp_sender()->RegisterRtpHeaderExtension(AudioLevel::kUri,
-                                                       kAudioLevelExtensionId));
-  ASSERT_TRUE(rtp_sender()->RegisterRtpHeaderExtension(
+  ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(AudioLevel::kUri,
+                                                      kAudioLevelExtensionId));
+  ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
       TransportSequenceNumber::kUri, kTransportSequenceNumberExtensionId));
-  ASSERT_TRUE(rtp_sender()->RegisterRtpHeaderExtension(
+  ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
       VideoOrientation::kUri, kVideoRotationExtensionId));
 
-  auto packet = rtp_sender()->AllocatePacket();
+  auto packet = rtp_sender_->AllocatePacket();
 
   ASSERT_TRUE(packet);
   // Preallocate BWE extensions RtpSender set itself.
@@ -475,27 +303,16 @@
   EXPECT_FALSE(packet->HasExtension<VideoOrientation>());
 }
 
-TEST_P(RtpSenderTest, PaddingAlwaysAllowedOnAudio) {
-  MockTransport transport;
-  RtpRtcpInterface::Configuration config;
+TEST_F(RtpSenderTest, PaddingAlwaysAllowedOnAudio) {
+  RtpRtcpInterface::Configuration config = GetDefaultConfig();
   config.audio = true;
-  config.clock = clock_;
-  config.outgoing_transport = &transport;
-  config.paced_sender = &mock_paced_sender_;
-  config.local_media_ssrc = kSsrc;
-  config.event_log = &mock_rtc_event_log_;
-  config.retransmission_rate_limiter = &retransmission_rate_limiter_;
-  rtp_sender_context_ =
-      std::make_unique<RtpSenderContext>(config, &time_controller_);
+  CreateSender(config);
 
-  rtp_sender()->SetTimestampOffset(0);
-
-  std::unique_ptr<RtpPacketToSend> audio_packet =
-      rtp_sender()->AllocatePacket();
+  std::unique_ptr<RtpPacketToSend> audio_packet = rtp_sender_->AllocatePacket();
   // Padding on audio stream allowed regardless of marker in the last packet.
   audio_packet->SetMarker(false);
   audio_packet->SetPayloadType(kPayload);
-  rtp_sender()->AssignSequenceNumber(audio_packet.get());
+  rtp_sender_->AssignSequenceNumber(audio_packet.get());
 
   const size_t kPaddingSize = 59;
 
@@ -518,7 +335,7 @@
   EXPECT_EQ(kMinPaddingSize, GenerateAndSendPadding(kMinPaddingSize - 5));
 }
 
-TEST_P(RtpSenderTest, SendToNetworkForwardsPacketsToPacer) {
+TEST_F(RtpSenderTest, SendToNetworkForwardsPacketsToPacer) {
   auto packet = BuildRtpPacket(kPayload, kMarkerBit, kTimestamp, 0);
   int64_t now_ms = clock_->TimeInMilliseconds();
 
@@ -529,17 +346,17 @@
           Pointee(Property(&RtpPacketToSend::SequenceNumber, kSeqNum)),
           Pointee(Property(&RtpPacketToSend::capture_time_ms, now_ms))))));
   EXPECT_TRUE(
-      rtp_sender()->SendToNetwork(std::make_unique<RtpPacketToSend>(*packet)));
+      rtp_sender_->SendToNetwork(std::make_unique<RtpPacketToSend>(*packet)));
 }
 
-TEST_P(RtpSenderTest, ReSendPacketForwardsPacketsToPacer) {
-  rtp_sender_context_->packet_history_.SetStorePacketsStatus(
+TEST_F(RtpSenderTest, ReSendPacketForwardsPacketsToPacer) {
+  packet_history_->SetStorePacketsStatus(
       RtpPacketHistory::StorageMode::kStoreAndCull, 10);
   int64_t now_ms = clock_->TimeInMilliseconds();
   auto packet = BuildRtpPacket(kPayload, kMarkerBit, kTimestamp, now_ms);
   uint16_t seq_no = packet->SequenceNumber();
   packet->set_allow_retransmission(true);
-  rtp_sender_context_->packet_history_.PutRtpPacket(std::move(packet), now_ms);
+  packet_history_->PutRtpPacket(std::move(packet), now_ms);
 
   EXPECT_CALL(mock_paced_sender_,
               EnqueuePackets(ElementsAre(AllOf(
@@ -548,12 +365,12 @@
                   Pointee(Property(&RtpPacketToSend::capture_time_ms, now_ms)),
                   Pointee(Property(&RtpPacketToSend::packet_type,
                                    RtpPacketMediaType::kRetransmission))))));
-  EXPECT_TRUE(rtp_sender()->ReSendPacket(seq_no));
+  EXPECT_TRUE(rtp_sender_->ReSendPacket(seq_no));
 }
 
 // This test sends 1 regular video packet, then 4 padding packets, and then
 // 1 more regular packet.
-TEST_P(RtpSenderTest, SendPadding) {
+TEST_F(RtpSenderTest, SendPadding) {
   constexpr int kNumPaddingPackets = 4;
   EXPECT_CALL(mock_paced_sender_, EnqueuePackets);
   std::unique_ptr<RtpPacketToSend> media_packet =
@@ -578,10 +395,10 @@
                     Pointee(Property(&RtpPacketToSend::Timestamp,
                                      media_packet->Timestamp()))))));
     std::vector<std::unique_ptr<RtpPacketToSend>> padding_packets =
-        rtp_sender()->GeneratePadding(kPaddingTargetBytes,
-                                      /*media_has_been_sent=*/true);
+        rtp_sender_->GeneratePadding(kPaddingTargetBytes,
+                                     /*media_has_been_sent=*/true);
     ASSERT_THAT(padding_packets, SizeIs(1));
-    rtp_sender()->SendToNetwork(std::move(padding_packets[0]));
+    rtp_sender_->SendToNetwork(std::move(padding_packets[0]));
   }
 
   // Send a regular video packet again.
@@ -598,53 +415,53 @@
                  /*payload_size=*/100);
 }
 
-TEST_P(RtpSenderTest, NoPaddingAsFirstPacketWithoutBweExtensions) {
-  EXPECT_THAT(rtp_sender()->GeneratePadding(/*target_size_bytes=*/100,
-                                            /*media_has_been_sent=*/false),
+TEST_F(RtpSenderTest, NoPaddingAsFirstPacketWithoutBweExtensions) {
+  EXPECT_THAT(rtp_sender_->GeneratePadding(/*target_size_bytes=*/100,
+                                           /*media_has_been_sent=*/false),
               IsEmpty());
 
   // Don't send padding before media even with RTX.
   EnableRtx();
-  EXPECT_THAT(rtp_sender()->GeneratePadding(/*target_size_bytes=*/100,
-                                            /*media_has_been_sent=*/false),
+  EXPECT_THAT(rtp_sender_->GeneratePadding(/*target_size_bytes=*/100,
+                                           /*media_has_been_sent=*/false),
               IsEmpty());
 }
 
-TEST_P(RtpSenderTest, AllowPaddingAsFirstPacketOnRtxWithTransportCc) {
-  ASSERT_TRUE(rtp_sender()->RegisterRtpHeaderExtension(
+TEST_F(RtpSenderTest, AllowPaddingAsFirstPacketOnRtxWithTransportCc) {
+  ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
       TransportSequenceNumber::kUri, kTransportSequenceNumberExtensionId));
 
   // Padding can't be sent as first packet on media SSRC since we don't know
   // what payload type to assign.
-  EXPECT_THAT(rtp_sender()->GeneratePadding(/*target_size_bytes=*/100,
-                                            /*media_has_been_sent=*/false),
+  EXPECT_THAT(rtp_sender_->GeneratePadding(/*target_size_bytes=*/100,
+                                           /*media_has_been_sent=*/false),
               IsEmpty());
 
   // With transportcc padding can be sent as first packet on the RTX SSRC.
   EnableRtx();
-  EXPECT_THAT(rtp_sender()->GeneratePadding(/*target_size_bytes=*/100,
-                                            /*media_has_been_sent=*/false),
+  EXPECT_THAT(rtp_sender_->GeneratePadding(/*target_size_bytes=*/100,
+                                           /*media_has_been_sent=*/false),
               Not(IsEmpty()));
 }
 
-TEST_P(RtpSenderTest, AllowPaddingAsFirstPacketOnRtxWithAbsSendTime) {
-  ASSERT_TRUE(rtp_sender()->RegisterRtpHeaderExtension(
+TEST_F(RtpSenderTest, AllowPaddingAsFirstPacketOnRtxWithAbsSendTime) {
+  ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
       AbsoluteSendTime::kUri, kAbsoluteSendTimeExtensionId));
 
   // Padding can't be sent as first packet on media SSRC since we don't know
   // what payload type to assign.
-  EXPECT_THAT(rtp_sender()->GeneratePadding(/*target_size_bytes=*/100,
-                                            /*media_has_been_sent=*/false),
+  EXPECT_THAT(rtp_sender_->GeneratePadding(/*target_size_bytes=*/100,
+                                           /*media_has_been_sent=*/false),
               IsEmpty());
 
   // With abs send time, padding can be sent as first packet on the RTX SSRC.
   EnableRtx();
-  EXPECT_THAT(rtp_sender()->GeneratePadding(/*target_size_bytes=*/100,
-                                            /*media_has_been_sent=*/false),
+  EXPECT_THAT(rtp_sender_->GeneratePadding(/*target_size_bytes=*/100,
+                                           /*media_has_been_sent=*/false),
               Not(IsEmpty()));
 }
 
-TEST_P(RtpSenderTest, UpdatesTimestampsOnPlainRtxPadding) {
+TEST_F(RtpSenderTest, UpdatesTimestampsOnPlainRtxPadding) {
   EnableRtx();
   // Timestamps as set based on capture time in RtpSenderTest.
   const int64_t start_time = clock_->TimeInMilliseconds();
@@ -666,8 +483,8 @@
 
   // Timestamps on padding should be offset from the sent media.
   EXPECT_THAT(
-      rtp_sender()->GeneratePadding(/*target_size_bytes=*/100,
-                                    /*media_has_been_sent=*/true),
+      rtp_sender_->GeneratePadding(/*target_size_bytes=*/100,
+                                   /*media_has_been_sent=*/true),
       Each(AllOf(
           Pointee(Property(&RtpPacketToSend::padding_size, kMaxPaddingLength)),
           Pointee(Property(
@@ -677,8 +494,8 @@
                            start_time + kTimeDiff.ms())))));
 }
 
-TEST_P(RtpSenderTest, KeepsTimestampsOnPayloadPadding) {
-  ASSERT_TRUE(rtp_sender()->RegisterRtpHeaderExtension(
+TEST_F(RtpSenderTest, KeepsTimestampsOnPayloadPadding) {
+  ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
       TransportSequenceNumber::kUri, kTransportSequenceNumberExtensionId));
   EnableRtx();
   // Timestamps as set based on capture time in RtpSenderTest.
@@ -696,8 +513,7 @@
           Pointee(Property(&RtpPacketToSend::capture_time_ms, start_time))))));
   std::unique_ptr<RtpPacketToSend> media_packet =
       SendPacket(start_time, kPayloadSize);
-  rtp_sender_context_->packet_history_.PutRtpPacket(std::move(media_packet),
-                                                    start_time);
+  packet_history_->PutRtpPacket(std::move(media_packet), start_time);
 
   // Advance time before sending padding.
   const TimeDelta kTimeDiff = TimeDelta::Millis(17);
@@ -705,8 +521,8 @@
 
   // Timestamps on payload padding should be set to original.
   EXPECT_THAT(
-      rtp_sender()->GeneratePadding(/*target_size_bytes=*/100,
-                                    /*media_has_been_sent=*/true),
+      rtp_sender_->GeneratePadding(/*target_size_bytes=*/100,
+                                   /*media_has_been_sent=*/true),
       Each(AllOf(
           Pointee(Property(&RtpPacketToSend::padding_size, 0u)),
           Pointee(Property(&RtpPacketToSend::payload_size,
@@ -717,7 +533,7 @@
 
 // Test that the MID header extension is included on sent packets when
 // configured.
-TEST_P(RtpSenderTest, MidIncludedOnSentPackets) {
+TEST_F(RtpSenderTest, MidIncludedOnSentPackets) {
   const char kMid[] = "mid";
   EnableMidSending(kMid);
 
@@ -730,7 +546,7 @@
   SendGenericPacket();
 }
 
-TEST_P(RtpSenderTest, RidIncludedOnSentPackets) {
+TEST_F(RtpSenderTest, RidIncludedOnSentPackets) {
   const char kRid[] = "f";
   EnableRidSending(kRid);
 
@@ -740,7 +556,7 @@
   SendGenericPacket();
 }
 
-TEST_P(RtpSenderTest, RidIncludedOnRtxSentPackets) {
+TEST_F(RtpSenderTest, RidIncludedOnRtxSentPackets) {
   const char kRid[] = "f";
   EnableRtx();
   EnableRidSending(kRid);
@@ -751,8 +567,8 @@
                   Property(&RtpPacketToSend::HasExtension<RepairedRtpStreamId>,
                            false))))))
       .WillOnce([&](std::vector<std::unique_ptr<RtpPacketToSend>> packets) {
-        rtp_sender_context_->packet_history_.PutRtpPacket(
-            std::move(packets[0]), clock_->TimeInMilliseconds());
+        packet_history_->PutRtpPacket(std::move(packets[0]),
+                                      clock_->TimeInMilliseconds());
       });
   SendGenericPacket();
 
@@ -761,10 +577,10 @@
       EnqueuePackets(ElementsAre(Pointee(AllOf(
           Property(&RtpPacketToSend::GetExtension<RepairedRtpStreamId>, kRid),
           Property(&RtpPacketToSend::HasExtension<RtpStreamId>, false))))));
-  rtp_sender()->ReSendPacket(kSeqNum);
+  rtp_sender_->ReSendPacket(kSeqNum);
 }
 
-TEST_P(RtpSenderTest, MidAndRidNotIncludedOnSentPacketsAfterAck) {
+TEST_F(RtpSenderTest, MidAndRidNotIncludedOnSentPacketsAfterAck) {
   const char kMid[] = "mid";
   const char kRid[] = "f";
 
@@ -778,7 +594,7 @@
           Property(&RtpPacketToSend::GetExtension<RtpMid>, kMid),
           Property(&RtpPacketToSend::GetExtension<RtpStreamId>, kRid))))));
   auto first_built_packet = SendGenericPacket();
-  rtp_sender()->OnReceivedAckOnSsrc(first_built_packet->SequenceNumber());
+  rtp_sender_->OnReceivedAckOnSsrc(first_built_packet->SequenceNumber());
 
   // The second packet should include neither since an ack was received.
   EXPECT_CALL(
@@ -789,8 +605,8 @@
   SendGenericPacket();
 }
 
-TEST_P(RtpSenderTest, MidAndRidAlwaysIncludedOnSentPacketsWhenConfigured) {
-  SetUpRtpSender(true, false, /*always_send_mid_and_rid=*/true, nullptr);
+TEST_F(RtpSenderTest, MidAndRidAlwaysIncludedOnSentPacketsWhenConfigured) {
+  SetUpRtpSender(false, /*always_send_mid_and_rid=*/true, nullptr);
   const char kMid[] = "mid";
   const char kRid[] = "f";
   EnableMidSending(kMid);
@@ -805,7 +621,7 @@
                 Property(&RtpPacketToSend::GetExtension<RtpStreamId>, kRid))))))
       .Times(2);
   auto first_built_packet = SendGenericPacket();
-  rtp_sender()->OnReceivedAckOnSsrc(first_built_packet->SequenceNumber());
+  rtp_sender_->OnReceivedAckOnSsrc(first_built_packet->SequenceNumber());
   SendGenericPacket();
 }
 
@@ -813,7 +629,7 @@
 // being retransmitted did not have MID or RID. The MID and RID are needed on
 // the first packets for a given SSRC, and RTX packets are sent on a separate
 // SSRC.
-TEST_P(RtpSenderTest, MidAndRidIncludedOnFirstRtxPacket) {
+TEST_F(RtpSenderTest, MidAndRidIncludedOnFirstRtxPacket) {
   const char kMid[] = "mid";
   const char kRid[] = "f";
 
@@ -824,14 +640,14 @@
   // This first packet will include both MID and RID.
   EXPECT_CALL(mock_paced_sender_, EnqueuePackets);
   auto first_built_packet = SendGenericPacket();
-  rtp_sender()->OnReceivedAckOnSsrc(first_built_packet->SequenceNumber());
+  rtp_sender_->OnReceivedAckOnSsrc(first_built_packet->SequenceNumber());
 
   // The second packet will include neither since an ack was received, put
   // it in the packet history for retransmission.
   EXPECT_CALL(mock_paced_sender_, EnqueuePackets(SizeIs(1)))
       .WillOnce([&](std::vector<std::unique_ptr<RtpPacketToSend>> packets) {
-        rtp_sender_context_->packet_history_.PutRtpPacket(
-            std::move(packets[0]), clock_->TimeInMilliseconds());
+        packet_history_->PutRtpPacket(std::move(packets[0]),
+                                      clock_->TimeInMilliseconds());
       });
   auto second_built_packet = SendGenericPacket();
 
@@ -841,13 +657,13 @@
                   Property(&RtpPacketToSend::GetExtension<RtpMid>, kMid),
                   Property(&RtpPacketToSend::GetExtension<RepairedRtpStreamId>,
                            kRid))))));
-  rtp_sender()->ReSendPacket(second_built_packet->SequenceNumber());
+  rtp_sender_->ReSendPacket(second_built_packet->SequenceNumber());
 }
 
 // Test that the RTX packets sent after receving an ACK on the RTX SSRC does
 // not include either MID or RRID even if the packet being retransmitted did
 // had a MID or RID.
-TEST_P(RtpSenderTest, MidAndRidNotIncludedOnRtxPacketsAfterAck) {
+TEST_F(RtpSenderTest, MidAndRidNotIncludedOnRtxPacketsAfterAck) {
   const char kMid[] = "mid";
   const char kRid[] = "f";
 
@@ -858,28 +674,28 @@
   // This first packet will include both MID and RID.
   EXPECT_CALL(mock_paced_sender_, EnqueuePackets(SizeIs(1)))
       .WillOnce([&](std::vector<std::unique_ptr<RtpPacketToSend>> packets) {
-        rtp_sender_context_->packet_history_.PutRtpPacket(
-            std::move(packets[0]), clock_->TimeInMilliseconds());
+        packet_history_->PutRtpPacket(std::move(packets[0]),
+                                      clock_->TimeInMilliseconds());
       });
   auto first_built_packet = SendGenericPacket();
-  rtp_sender()->OnReceivedAckOnSsrc(first_built_packet->SequenceNumber());
+  rtp_sender_->OnReceivedAckOnSsrc(first_built_packet->SequenceNumber());
 
   // The second packet will include neither since an ack was received.
   EXPECT_CALL(mock_paced_sender_, EnqueuePackets(SizeIs(1)))
       .WillOnce([&](std::vector<std::unique_ptr<RtpPacketToSend>> packets) {
-        rtp_sender_context_->packet_history_.PutRtpPacket(
-            std::move(packets[0]), clock_->TimeInMilliseconds());
+        packet_history_->PutRtpPacket(std::move(packets[0]),
+                                      clock_->TimeInMilliseconds());
       });
   auto second_built_packet = SendGenericPacket();
 
   // The first RTX packet will include MID and RRID.
   EXPECT_CALL(mock_paced_sender_, EnqueuePackets(SizeIs(1)))
       .WillOnce([&](std::vector<std::unique_ptr<RtpPacketToSend>> packets) {
-        rtp_sender()->OnReceivedAckOnRtxSsrc(packets[0]->SequenceNumber());
-        rtp_sender_context_->packet_history_.MarkPacketAsSent(
+        rtp_sender_->OnReceivedAckOnRtxSsrc(packets[0]->SequenceNumber());
+        packet_history_->MarkPacketAsSent(
             *packets[0]->retransmitted_sequence_number());
       });
-  rtp_sender()->ReSendPacket(second_built_packet->SequenceNumber());
+  rtp_sender_->ReSendPacket(second_built_packet->SequenceNumber());
 
   // The second and third RTX packets should not include MID nor RRID.
   EXPECT_CALL(mock_paced_sender_,
@@ -888,12 +704,12 @@
                   Property(&RtpPacketToSend::HasExtension<RepairedRtpStreamId>,
                            false))))))
       .Times(2);
-  rtp_sender()->ReSendPacket(first_built_packet->SequenceNumber());
-  rtp_sender()->ReSendPacket(second_built_packet->SequenceNumber());
+  rtp_sender_->ReSendPacket(first_built_packet->SequenceNumber());
+  rtp_sender_->ReSendPacket(second_built_packet->SequenceNumber());
 }
 
-TEST_P(RtpSenderTest, MidAndRidAlwaysIncludedOnRtxPacketsWhenConfigured) {
-  SetUpRtpSender(true, false, /*always_send_mid_and_rid=*/true, nullptr);
+TEST_F(RtpSenderTest, MidAndRidAlwaysIncludedOnRtxPacketsWhenConfigured) {
+  SetUpRtpSender(false, /*always_send_mid_and_rid=*/true, nullptr);
   const char kMid[] = "mid";
   const char kRid[] = "f";
   EnableRtx();
@@ -909,11 +725,11 @@
       .Times(2)
       .WillRepeatedly(
           [&](std::vector<std::unique_ptr<RtpPacketToSend>> packets) {
-            rtp_sender_context_->packet_history_.PutRtpPacket(
-                std::move(packets[0]), clock_->TimeInMilliseconds());
+            packet_history_->PutRtpPacket(std::move(packets[0]),
+                                          clock_->TimeInMilliseconds());
           });
   auto media_packet1 = SendGenericPacket();
-  rtp_sender()->OnReceivedAckOnSsrc(media_packet1->SequenceNumber());
+  rtp_sender_->OnReceivedAckOnSsrc(media_packet1->SequenceNumber());
   auto media_packet2 = SendGenericPacket();
 
   // Send three RTX packets with different combinations of orders w.r.t. the
@@ -928,28 +744,28 @@
       .Times(3)
       .WillRepeatedly(
           [&](std::vector<std::unique_ptr<RtpPacketToSend>> packets) {
-            rtp_sender()->OnReceivedAckOnRtxSsrc(packets[0]->SequenceNumber());
-            rtp_sender_context_->packet_history_.MarkPacketAsSent(
+            rtp_sender_->OnReceivedAckOnRtxSsrc(packets[0]->SequenceNumber());
+            packet_history_->MarkPacketAsSent(
                 *packets[0]->retransmitted_sequence_number());
           });
-  rtp_sender()->ReSendPacket(media_packet2->SequenceNumber());
-  rtp_sender()->ReSendPacket(media_packet1->SequenceNumber());
-  rtp_sender()->ReSendPacket(media_packet2->SequenceNumber());
+  rtp_sender_->ReSendPacket(media_packet2->SequenceNumber());
+  rtp_sender_->ReSendPacket(media_packet1->SequenceNumber());
+  rtp_sender_->ReSendPacket(media_packet2->SequenceNumber());
 }
 
 // Test that if the RtpState indicates an ACK has been received on that SSRC
 // then neither the MID nor RID header extensions will be sent.
-TEST_P(RtpSenderTest, MidAndRidNotIncludedOnSentPacketsAfterRtpStateRestored) {
+TEST_F(RtpSenderTest, MidAndRidNotIncludedOnSentPacketsAfterRtpStateRestored) {
   const char kMid[] = "mid";
   const char kRid[] = "f";
 
   EnableMidSending(kMid);
   EnableRidSending(kRid);
 
-  RtpState state = rtp_sender()->GetRtpState();
+  RtpState state = rtp_sender_->GetRtpState();
   EXPECT_FALSE(state.ssrc_has_acked);
   state.ssrc_has_acked = true;
-  rtp_sender()->SetRtpState(state);
+  rtp_sender_->SetRtpState(state);
 
   EXPECT_CALL(
       mock_paced_sender_,
@@ -962,7 +778,7 @@
 // Test that if the RTX RtpState indicates an ACK has been received on that
 // RTX SSRC then neither the MID nor RRID header extensions will be sent on
 // RTX packets.
-TEST_P(RtpSenderTest, MidAndRridNotIncludedOnRtxPacketsAfterRtpStateRestored) {
+TEST_F(RtpSenderTest, MidAndRridNotIncludedOnRtxPacketsAfterRtpStateRestored) {
   const char kMid[] = "mid";
   const char kRid[] = "f";
 
@@ -970,15 +786,15 @@
   EnableMidSending(kMid);
   EnableRidSending(kRid);
 
-  RtpState rtx_state = rtp_sender()->GetRtxRtpState();
+  RtpState rtx_state = rtp_sender_->GetRtxRtpState();
   EXPECT_FALSE(rtx_state.ssrc_has_acked);
   rtx_state.ssrc_has_acked = true;
-  rtp_sender()->SetRtxRtpState(rtx_state);
+  rtp_sender_->SetRtxRtpState(rtx_state);
 
   EXPECT_CALL(mock_paced_sender_, EnqueuePackets(SizeIs(1)))
       .WillOnce([&](std::vector<std::unique_ptr<RtpPacketToSend>> packets) {
-        rtp_sender_context_->packet_history_.PutRtpPacket(
-            std::move(packets[0]), clock_->TimeInMilliseconds());
+        packet_history_->PutRtpPacket(std::move(packets[0]),
+                                      clock_->TimeInMilliseconds());
       });
   auto built_packet = SendGenericPacket();
 
@@ -987,26 +803,26 @@
       EnqueuePackets(ElementsAre(Pointee(AllOf(
           Property(&RtpPacketToSend::HasExtension<RtpMid>, false),
           Property(&RtpPacketToSend::HasExtension<RtpStreamId>, false))))));
-  ASSERT_LT(0, rtp_sender()->ReSendPacket(built_packet->SequenceNumber()));
+  ASSERT_LT(0, rtp_sender_->ReSendPacket(built_packet->SequenceNumber()));
 }
 
-TEST_P(RtpSenderTest, RespectsNackBitrateLimit) {
+TEST_F(RtpSenderTest, RespectsNackBitrateLimit) {
   const int32_t kPacketSize = 1400;
   const int32_t kNumPackets = 30;
 
   retransmission_rate_limiter_.SetMaxRate(kPacketSize * kNumPackets * 8);
 
-  rtp_sender_context_->packet_history_.SetStorePacketsStatus(
+  packet_history_->SetStorePacketsStatus(
       RtpPacketHistory::StorageMode::kStoreAndCull, kNumPackets);
-  const uint16_t kStartSequenceNumber = rtp_sender()->SequenceNumber();
+  const uint16_t kStartSequenceNumber = rtp_sender_->SequenceNumber();
   std::vector<uint16_t> sequence_numbers;
   for (int32_t i = 0; i < kNumPackets; ++i) {
     sequence_numbers.push_back(kStartSequenceNumber + i);
     time_controller_.AdvanceTime(TimeDelta::Millis(1));
     EXPECT_CALL(mock_paced_sender_, EnqueuePackets(SizeIs(1)))
         .WillOnce([&](std::vector<std::unique_ptr<RtpPacketToSend>> packets) {
-          rtp_sender_context_->packet_history_.PutRtpPacket(
-              std::move(packets[0]), clock_->TimeInMilliseconds());
+          packet_history_->PutRtpPacket(std::move(packets[0]),
+                                        clock_->TimeInMilliseconds());
         });
     SendPacket(clock_->TimeInMilliseconds(), kPacketSize);
   }
@@ -1023,113 +839,96 @@
       .WillRepeatedly(
           [&](std::vector<std::unique_ptr<RtpPacketToSend>> packets) {
             for (const auto& packet : packets) {
-              rtp_sender_context_->packet_history_.MarkPacketAsSent(
+              packet_history_->MarkPacketAsSent(
                   *packet->retransmitted_sequence_number());
             }
           });
-  rtp_sender()->OnReceivedNack(sequence_numbers, 0);
+  rtp_sender_->OnReceivedNack(sequence_numbers, 0);
 
   // Must be at least 5ms in between retransmission attempts.
   time_controller_.AdvanceTime(TimeDelta::Millis(5));
 
   // Resending should not work, bandwidth exceeded.
   EXPECT_CALL(mock_paced_sender_, EnqueuePackets).Times(0);
-  rtp_sender()->OnReceivedNack(sequence_numbers, 0);
+  rtp_sender_->OnReceivedNack(sequence_numbers, 0);
 }
 
-TEST_P(RtpSenderTest, UpdatingCsrcsUpdatedOverhead) {
-  RtpRtcpInterface::Configuration config;
-  config.clock = clock_;
-  config.outgoing_transport = &transport_;
-  config.local_media_ssrc = kSsrc;
-  config.retransmission_rate_limiter = &retransmission_rate_limiter_;
-  rtp_sender_context_ =
-      std::make_unique<RtpSenderContext>(config, &time_controller_);
+TEST_F(RtpSenderTest, UpdatingCsrcsUpdatedOverhead) {
+  RtpRtcpInterface::Configuration config = GetDefaultConfig();
+  config.rtx_send_ssrc = {};
+  CreateSender(config);
 
   // Base RTP overhead is 12B.
-  EXPECT_EQ(rtp_sender()->ExpectedPerPacketOverhead(), 12u);
+  EXPECT_EQ(rtp_sender_->ExpectedPerPacketOverhead(), 12u);
 
   // Adding two csrcs adds 2*4 bytes to the header.
-  rtp_sender()->SetCsrcs({1, 2});
-  EXPECT_EQ(rtp_sender()->ExpectedPerPacketOverhead(), 20u);
+  rtp_sender_->SetCsrcs({1, 2});
+  EXPECT_EQ(rtp_sender_->ExpectedPerPacketOverhead(), 20u);
 }
 
-TEST_P(RtpSenderTest, OnOverheadChanged) {
-  RtpRtcpInterface::Configuration config;
-  config.clock = clock_;
-  config.outgoing_transport = &transport_;
-  config.local_media_ssrc = kSsrc;
-  config.retransmission_rate_limiter = &retransmission_rate_limiter_;
-  rtp_sender_context_ =
-      std::make_unique<RtpSenderContext>(config, &time_controller_);
+TEST_F(RtpSenderTest, OnOverheadChanged) {
+  RtpRtcpInterface::Configuration config = GetDefaultConfig();
+  config.rtx_send_ssrc = {};
+  CreateSender(config);
 
   // Base RTP overhead is 12B.
-  EXPECT_EQ(rtp_sender()->ExpectedPerPacketOverhead(), 12u);
+  EXPECT_EQ(rtp_sender_->ExpectedPerPacketOverhead(), 12u);
 
-  rtp_sender()->RegisterRtpHeaderExtension(TransmissionOffset::kUri,
-                                           kTransmissionTimeOffsetExtensionId);
+  rtp_sender_->RegisterRtpHeaderExtension(TransmissionOffset::kUri,
+                                          kTransmissionTimeOffsetExtensionId);
 
   // TransmissionTimeOffset extension has a size of 3B, but with the addition
   // of header index and rounding to 4 byte boundary we end up with 20B total.
-  EXPECT_EQ(rtp_sender()->ExpectedPerPacketOverhead(), 20u);
+  EXPECT_EQ(rtp_sender_->ExpectedPerPacketOverhead(), 20u);
 }
 
-TEST_P(RtpSenderTest, CountMidOnlyUntilAcked) {
-  RtpRtcpInterface::Configuration config;
-  config.clock = clock_;
-  config.outgoing_transport = &transport_;
-  config.local_media_ssrc = kSsrc;
-  config.retransmission_rate_limiter = &retransmission_rate_limiter_;
-  rtp_sender_context_ =
-      std::make_unique<RtpSenderContext>(config, &time_controller_);
+TEST_F(RtpSenderTest, CountMidOnlyUntilAcked) {
+  RtpRtcpInterface::Configuration config = GetDefaultConfig();
+  config.rtx_send_ssrc = {};
+  CreateSender(config);
 
   // Base RTP overhead is 12B.
-  EXPECT_EQ(rtp_sender()->ExpectedPerPacketOverhead(), 12u);
+  EXPECT_EQ(rtp_sender_->ExpectedPerPacketOverhead(), 12u);
 
-  rtp_sender()->RegisterRtpHeaderExtension(RtpMid::kUri, kMidExtensionId);
-  rtp_sender()->RegisterRtpHeaderExtension(RtpStreamId::kUri, kRidExtensionId);
+  rtp_sender_->RegisterRtpHeaderExtension(RtpMid::kUri, kMidExtensionId);
+  rtp_sender_->RegisterRtpHeaderExtension(RtpStreamId::kUri, kRidExtensionId);
 
   // Counted only if set.
-  EXPECT_EQ(rtp_sender()->ExpectedPerPacketOverhead(), 12u);
-  rtp_sender()->SetMid("foo");
-  EXPECT_EQ(rtp_sender()->ExpectedPerPacketOverhead(), 36u);
-  rtp_sender()->SetRid("bar");
-  EXPECT_EQ(rtp_sender()->ExpectedPerPacketOverhead(), 52u);
+  EXPECT_EQ(rtp_sender_->ExpectedPerPacketOverhead(), 12u);
+  rtp_sender_->SetMid("foo");
+  EXPECT_EQ(rtp_sender_->ExpectedPerPacketOverhead(), 36u);
+  rtp_sender_->SetRid("bar");
+  EXPECT_EQ(rtp_sender_->ExpectedPerPacketOverhead(), 52u);
 
   // Ack received, mid/rid no longer sent.
-  rtp_sender()->OnReceivedAckOnSsrc(0);
-  EXPECT_EQ(rtp_sender()->ExpectedPerPacketOverhead(), 12u);
+  rtp_sender_->OnReceivedAckOnSsrc(0);
+  EXPECT_EQ(rtp_sender_->ExpectedPerPacketOverhead(), 12u);
 }
 
-TEST_P(RtpSenderTest, DontCountVolatileExtensionsIntoOverhead) {
-  RtpRtcpInterface::Configuration config;
-  config.clock = clock_;
-  config.outgoing_transport = &transport_;
-  config.local_media_ssrc = kSsrc;
-  config.retransmission_rate_limiter = &retransmission_rate_limiter_;
-  rtp_sender_context_ =
-      std::make_unique<RtpSenderContext>(config, &time_controller_);
+TEST_F(RtpSenderTest, DontCountVolatileExtensionsIntoOverhead) {
+  RtpRtcpInterface::Configuration config = GetDefaultConfig();
+  config.rtx_send_ssrc = {};
+  CreateSender(config);
 
   // Base RTP overhead is 12B.
-  EXPECT_EQ(rtp_sender()->ExpectedPerPacketOverhead(), 12u);
+  EXPECT_EQ(rtp_sender_->ExpectedPerPacketOverhead(), 12u);
 
-  rtp_sender()->RegisterRtpHeaderExtension(InbandComfortNoiseExtension::kUri,
-                                           1);
-  rtp_sender()->RegisterRtpHeaderExtension(AbsoluteCaptureTimeExtension::kUri,
-                                           2);
-  rtp_sender()->RegisterRtpHeaderExtension(VideoOrientation::kUri, 3);
-  rtp_sender()->RegisterRtpHeaderExtension(PlayoutDelayLimits::kUri, 4);
-  rtp_sender()->RegisterRtpHeaderExtension(VideoContentTypeExtension::kUri, 5);
-  rtp_sender()->RegisterRtpHeaderExtension(VideoTimingExtension::kUri, 6);
-  rtp_sender()->RegisterRtpHeaderExtension(RepairedRtpStreamId::kUri, 7);
-  rtp_sender()->RegisterRtpHeaderExtension(ColorSpaceExtension::kUri, 8);
+  rtp_sender_->RegisterRtpHeaderExtension(InbandComfortNoiseExtension::kUri, 1);
+  rtp_sender_->RegisterRtpHeaderExtension(AbsoluteCaptureTimeExtension::kUri,
+                                          2);
+  rtp_sender_->RegisterRtpHeaderExtension(VideoOrientation::kUri, 3);
+  rtp_sender_->RegisterRtpHeaderExtension(PlayoutDelayLimits::kUri, 4);
+  rtp_sender_->RegisterRtpHeaderExtension(VideoContentTypeExtension::kUri, 5);
+  rtp_sender_->RegisterRtpHeaderExtension(VideoTimingExtension::kUri, 6);
+  rtp_sender_->RegisterRtpHeaderExtension(RepairedRtpStreamId::kUri, 7);
+  rtp_sender_->RegisterRtpHeaderExtension(ColorSpaceExtension::kUri, 8);
 
   // Still only 12B counted since can't count on above being sent.
-  EXPECT_EQ(rtp_sender()->ExpectedPerPacketOverhead(), 12u);
+  EXPECT_EQ(rtp_sender_->ExpectedPerPacketOverhead(), 12u);
 }
 
-TEST_P(RtpSenderTest, SendPacketHandlesRetransmissionHistory) {
-  rtp_sender_context_->packet_history_.SetStorePacketsStatus(
+TEST_F(RtpSenderTest, SendPacketHandlesRetransmissionHistory) {
+  packet_history_->SetStorePacketsStatus(
       RtpPacketHistory::StorageMode::kStoreAndCull, 10);
 
   // Ignore calls to EnqueuePackets() for this test.
@@ -1140,27 +939,27 @@
       BuildRtpPacket(kPayload, true, 0, clock_->TimeInMilliseconds());
   const uint16_t media_sequence_number = packet->SequenceNumber();
   packet->set_allow_retransmission(true);
-  rtp_sender_context_->packet_history_.PutRtpPacket(
-      std::move(packet), clock_->TimeInMilliseconds());
+  packet_history_->PutRtpPacket(std::move(packet),
+                                clock_->TimeInMilliseconds());
 
   // Simulate successful retransmission request.
   time_controller_.AdvanceTime(TimeDelta::Millis(30));
-  EXPECT_THAT(rtp_sender()->ReSendPacket(media_sequence_number), Gt(0));
+  EXPECT_THAT(rtp_sender_->ReSendPacket(media_sequence_number), Gt(0));
 
   // Packet already pending, retransmission not allowed.
   time_controller_.AdvanceTime(TimeDelta::Millis(30));
-  EXPECT_THAT(rtp_sender()->ReSendPacket(media_sequence_number), Eq(0));
+  EXPECT_THAT(rtp_sender_->ReSendPacket(media_sequence_number), Eq(0));
 
   // Simulate packet exiting pacer, mark as not longer pending.
-  rtp_sender_context_->packet_history_.MarkPacketAsSent(media_sequence_number);
+  packet_history_->MarkPacketAsSent(media_sequence_number);
 
   // Retransmissions allowed again.
   time_controller_.AdvanceTime(TimeDelta::Millis(30));
-  EXPECT_THAT(rtp_sender()->ReSendPacket(media_sequence_number), Gt(0));
+  EXPECT_THAT(rtp_sender_->ReSendPacket(media_sequence_number), Gt(0));
 }
 
-TEST_P(RtpSenderTest, MarksRetransmittedPackets) {
-  rtp_sender_context_->packet_history_.SetStorePacketsStatus(
+TEST_F(RtpSenderTest, MarksRetransmittedPackets) {
+  packet_history_->SetStorePacketsStatus(
       RtpPacketHistory::StorageMode::kStoreAndCull, 10);
 
   // Build a media packet and put in the packet history.
@@ -1168,8 +967,8 @@
       BuildRtpPacket(kPayload, true, 0, clock_->TimeInMilliseconds());
   const uint16_t media_sequence_number = packet->SequenceNumber();
   packet->set_allow_retransmission(true);
-  rtp_sender_context_->packet_history_.PutRtpPacket(
-      std::move(packet), clock_->TimeInMilliseconds());
+  packet_history_->PutRtpPacket(std::move(packet),
+                                clock_->TimeInMilliseconds());
 
   // Expect a retransmission packet marked with which packet it is a
   // retransmit of.
@@ -1180,19 +979,19 @@
                            RtpPacketMediaType::kRetransmission)),
           Pointee(Property(&RtpPacketToSend::retransmitted_sequence_number,
                            Eq(media_sequence_number)))))));
-  EXPECT_THAT(rtp_sender()->ReSendPacket(media_sequence_number), Gt(0));
+  EXPECT_THAT(rtp_sender_->ReSendPacket(media_sequence_number), Gt(0));
 }
 
-TEST_P(RtpSenderTest, GeneratedPaddingHasBweExtensions) {
+TEST_F(RtpSenderTest, GeneratedPaddingHasBweExtensions) {
   // Min requested size in order to use RTX payload.
   const size_t kMinPaddingSize = 50;
   EnableRtx();
 
-  ASSERT_TRUE(rtp_sender()->RegisterRtpHeaderExtension(
+  ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
       TransmissionOffset::kUri, kTransmissionTimeOffsetExtensionId));
-  ASSERT_TRUE(rtp_sender()->RegisterRtpHeaderExtension(
+  ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
       AbsoluteSendTime::kUri, kAbsoluteSendTimeExtensionId));
-  ASSERT_TRUE(rtp_sender()->RegisterRtpHeaderExtension(
+  ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
       TransportSequenceNumber::kUri, kTransportSequenceNumberExtensionId));
 
   // Put a packet in the history, in order to facilitate payload padding.
@@ -1201,12 +1000,12 @@
   packet->set_allow_retransmission(true);
   packet->SetPayloadSize(kMinPaddingSize);
   packet->set_packet_type(RtpPacketMediaType::kVideo);
-  rtp_sender_context_->packet_history_.PutRtpPacket(
-      std::move(packet), clock_->TimeInMilliseconds());
+  packet_history_->PutRtpPacket(std::move(packet),
+                                clock_->TimeInMilliseconds());
 
   // Generate a plain padding packet, check that extensions are registered.
   std::vector<std::unique_ptr<RtpPacketToSend>> generated_packets =
-      rtp_sender()->GeneratePadding(/*target_size_bytes=*/1, true);
+      rtp_sender_->GeneratePadding(/*target_size_bytes=*/1, true);
   ASSERT_THAT(generated_packets, SizeIs(1));
   auto& plain_padding = generated_packets.front();
   EXPECT_GT(plain_padding->padding_size(), 0u);
@@ -1216,7 +1015,7 @@
   EXPECT_GT(plain_padding->padding_size(), 0u);
 
   // Generate a payload padding packets, check that extensions are registered.
-  generated_packets = rtp_sender()->GeneratePadding(kMinPaddingSize, true);
+  generated_packets = rtp_sender_->GeneratePadding(kMinPaddingSize, true);
   ASSERT_EQ(generated_packets.size(), 1u);
   auto& payload_padding = generated_packets.front();
   EXPECT_EQ(payload_padding->padding_size(), 0u);
@@ -1226,16 +1025,16 @@
   EXPECT_GT(payload_padding->payload_size(), 0u);
 }
 
-TEST_P(RtpSenderTest, GeneratePaddingResendsOldPacketsWithRtx) {
+TEST_F(RtpSenderTest, GeneratePaddingResendsOldPacketsWithRtx) {
   // Min requested size in order to use RTX payload.
   const size_t kMinPaddingSize = 50;
 
-  rtp_sender()->SetRtxStatus(kRtxRetransmitted | kRtxRedundantPayloads);
-  rtp_sender()->SetRtxPayloadType(kRtxPayload, kPayload);
-  rtp_sender_context_->packet_history_.SetStorePacketsStatus(
+  rtp_sender_->SetRtxStatus(kRtxRetransmitted | kRtxRedundantPayloads);
+  rtp_sender_->SetRtxPayloadType(kRtxPayload, kPayload);
+  packet_history_->SetStorePacketsStatus(
       RtpPacketHistory::StorageMode::kStoreAndCull, 1);
 
-  ASSERT_TRUE(rtp_sender()->RegisterRtpHeaderExtension(
+  ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
       TransportSequenceNumber::kUri, kTransportSequenceNumberExtensionId));
 
   const size_t kPayloadPacketSize = kMinPaddingSize;
@@ -1244,13 +1043,13 @@
   packet->set_allow_retransmission(true);
   packet->SetPayloadSize(kPayloadPacketSize);
   packet->set_packet_type(RtpPacketMediaType::kVideo);
-  rtp_sender_context_->packet_history_.PutRtpPacket(
-      std::move(packet), clock_->TimeInMilliseconds());
+  packet_history_->PutRtpPacket(std::move(packet),
+                                clock_->TimeInMilliseconds());
 
   // Generated padding has large enough budget that the video packet should be
   // retransmitted as padding.
   std::vector<std::unique_ptr<RtpPacketToSend>> generated_packets =
-      rtp_sender()->GeneratePadding(kMinPaddingSize, true);
+      rtp_sender_->GeneratePadding(kMinPaddingSize, true);
   ASSERT_EQ(generated_packets.size(), 1u);
   auto& padding_packet = generated_packets.front();
   EXPECT_EQ(padding_packet->packet_type(), RtpPacketMediaType::kPadding);
@@ -1263,7 +1062,7 @@
 
   size_t padding_bytes_generated = 0;
   generated_packets =
-      rtp_sender()->GeneratePadding(kPaddingBytesRequested, true);
+      rtp_sender_->GeneratePadding(kPaddingBytesRequested, true);
   EXPECT_EQ(generated_packets.size(), 1u);
   for (auto& packet : generated_packets) {
     EXPECT_EQ(packet->packet_type(), RtpPacketMediaType::kPadding);
@@ -1276,17 +1075,17 @@
   EXPECT_EQ(padding_bytes_generated, kMaxPaddingSize);
 }
 
-TEST_P(RtpSenderTest, LimitsPayloadPaddingSize) {
+TEST_F(RtpSenderTest, LimitsPayloadPaddingSize) {
   // Limit RTX payload padding to 2x target size.
   const double kFactor = 2.0;
   field_trials_.SetMaxPaddingFactor(kFactor);
-  SetUpRtpSender(true, false, false);
-  rtp_sender()->SetRtxStatus(kRtxRetransmitted | kRtxRedundantPayloads);
-  rtp_sender()->SetRtxPayloadType(kRtxPayload, kPayload);
-  rtp_sender_context_->packet_history_.SetStorePacketsStatus(
+  SetUpRtpSender(false, false, nullptr);
+  rtp_sender_->SetRtxStatus(kRtxRetransmitted | kRtxRedundantPayloads);
+  rtp_sender_->SetRtxPayloadType(kRtxPayload, kPayload);
+  packet_history_->SetStorePacketsStatus(
       RtpPacketHistory::StorageMode::kStoreAndCull, 1);
 
-  ASSERT_TRUE(rtp_sender()->RegisterRtpHeaderExtension(
+  ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
       TransportSequenceNumber::kUri, kTransportSequenceNumberExtensionId));
 
   // Send a dummy video packet so it ends up in the packet history.
@@ -1296,8 +1095,8 @@
   packet->set_allow_retransmission(true);
   packet->SetPayloadSize(kPayloadPacketSize);
   packet->set_packet_type(RtpPacketMediaType::kVideo);
-  rtp_sender_context_->packet_history_.PutRtpPacket(
-      std::move(packet), clock_->TimeInMilliseconds());
+  packet_history_->PutRtpPacket(std::move(packet),
+                                clock_->TimeInMilliseconds());
 
   // Smallest target size that will result in the sent packet being returned as
   // padding.
@@ -1307,26 +1106,26 @@
   // Generated padding has large enough budget that the video packet should be
   // retransmitted as padding.
   EXPECT_THAT(
-      rtp_sender()->GeneratePadding(kMinTargerSizeForPayload, true),
+      rtp_sender_->GeneratePadding(kMinTargerSizeForPayload, true),
       AllOf(Not(IsEmpty()),
             Each(Pointee(Property(&RtpPacketToSend::padding_size, Eq(0u))))));
 
   // If payload padding is > 2x requested size, plain padding is returned
   // instead.
   EXPECT_THAT(
-      rtp_sender()->GeneratePadding(kMinTargerSizeForPayload - 1, true),
+      rtp_sender_->GeneratePadding(kMinTargerSizeForPayload - 1, true),
       AllOf(Not(IsEmpty()),
             Each(Pointee(Property(&RtpPacketToSend::padding_size, Gt(0u))))));
 }
 
-TEST_P(RtpSenderTest, GeneratePaddingCreatesPurePaddingWithoutRtx) {
-  rtp_sender_context_->packet_history_.SetStorePacketsStatus(
+TEST_F(RtpSenderTest, GeneratePaddingCreatesPurePaddingWithoutRtx) {
+  packet_history_->SetStorePacketsStatus(
       RtpPacketHistory::StorageMode::kStoreAndCull, 1);
-  ASSERT_TRUE(rtp_sender()->RegisterRtpHeaderExtension(
+  ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
       TransmissionOffset::kUri, kTransmissionTimeOffsetExtensionId));
-  ASSERT_TRUE(rtp_sender()->RegisterRtpHeaderExtension(
+  ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
       AbsoluteSendTime::kUri, kAbsoluteSendTimeExtensionId));
-  ASSERT_TRUE(rtp_sender()->RegisterRtpHeaderExtension(
+  ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
       TransportSequenceNumber::kUri, kTransportSequenceNumberExtensionId));
 
   const size_t kPayloadPacketSize = 1234;
@@ -1337,8 +1136,8 @@
   packet->set_allow_retransmission(true);
   packet->SetPayloadSize(kPayloadPacketSize);
   packet->set_packet_type(RtpPacketMediaType::kVideo);
-  rtp_sender_context_->packet_history_.PutRtpPacket(
-      std::move(packet), clock_->TimeInMilliseconds());
+  packet_history_->PutRtpPacket(std::move(packet),
+                                clock_->TimeInMilliseconds());
 
   // Payload padding not available without RTX, only generate plain padding on
   // the media SSRC.
@@ -1350,7 +1149,7 @@
       (kPaddingBytesRequested + kMaxPaddingSize - 1) / kMaxPaddingSize;
   size_t padding_bytes_generated = 0;
   std::vector<std::unique_ptr<RtpPacketToSend>> padding_packets =
-      rtp_sender()->GeneratePadding(kPaddingBytesRequested, true);
+      rtp_sender_->GeneratePadding(kPaddingBytesRequested, true);
   EXPECT_EQ(padding_packets.size(), kExpectedNumPaddingPackets);
   for (auto& packet : padding_packets) {
     EXPECT_EQ(packet->packet_type(), RtpPacketMediaType::kPadding);
@@ -1367,7 +1166,7 @@
             kExpectedNumPaddingPackets * kMaxPaddingSize);
 }
 
-TEST_P(RtpSenderTest, SupportsPadding) {
+TEST_F(RtpSenderTest, SupportsPadding) {
   bool kSendingMediaStats[] = {true, false};
   bool kEnableRedundantPayloads[] = {true, false};
   absl::string_view kBweExtensionUris[] = {
@@ -1376,35 +1175,35 @@
   const int kExtensionsId = 7;
 
   for (bool sending_media : kSendingMediaStats) {
-    rtp_sender()->SetSendingMediaStatus(sending_media);
+    rtp_sender_->SetSendingMediaStatus(sending_media);
     for (bool redundant_payloads : kEnableRedundantPayloads) {
       int rtx_mode = kRtxRetransmitted;
       if (redundant_payloads) {
         rtx_mode |= kRtxRedundantPayloads;
       }
-      rtp_sender()->SetRtxStatus(rtx_mode);
+      rtp_sender_->SetRtxStatus(rtx_mode);
 
       for (auto extension_uri : kBweExtensionUris) {
-        EXPECT_FALSE(rtp_sender()->SupportsPadding());
-        rtp_sender()->RegisterRtpHeaderExtension(extension_uri, kExtensionsId);
+        EXPECT_FALSE(rtp_sender_->SupportsPadding());
+        rtp_sender_->RegisterRtpHeaderExtension(extension_uri, kExtensionsId);
         if (!sending_media) {
-          EXPECT_FALSE(rtp_sender()->SupportsPadding());
+          EXPECT_FALSE(rtp_sender_->SupportsPadding());
         } else {
-          EXPECT_TRUE(rtp_sender()->SupportsPadding());
+          EXPECT_TRUE(rtp_sender_->SupportsPadding());
           if (redundant_payloads) {
-            EXPECT_TRUE(rtp_sender()->SupportsRtxPayloadPadding());
+            EXPECT_TRUE(rtp_sender_->SupportsRtxPayloadPadding());
           } else {
-            EXPECT_FALSE(rtp_sender()->SupportsRtxPayloadPadding());
+            EXPECT_FALSE(rtp_sender_->SupportsRtxPayloadPadding());
           }
         }
-        rtp_sender()->DeregisterRtpHeaderExtension(extension_uri);
-        EXPECT_FALSE(rtp_sender()->SupportsPadding());
+        rtp_sender_->DeregisterRtpHeaderExtension(extension_uri);
+        EXPECT_FALSE(rtp_sender_->SupportsPadding());
       }
     }
   }
 }
 
-TEST_P(RtpSenderTest, SetsCaptureTimeOnRtxRetransmissions) {
+TEST_F(RtpSenderTest, SetsCaptureTimeOnRtxRetransmissions) {
   EnableRtx();
 
   // Put a packet in the packet history, with current time as capture time.
@@ -1413,8 +1212,7 @@
       BuildRtpPacket(kPayload, kMarkerBit, start_time_ms,
                      /*capture_time_ms=*/start_time_ms);
   packet->set_allow_retransmission(true);
-  rtp_sender_context_->packet_history_.PutRtpPacket(std::move(packet),
-                                                    start_time_ms);
+  packet_history_->PutRtpPacket(std::move(packet), start_time_ms);
 
   // Advance time, request an RTX retransmission. Capture timestamp should be
   // preserved.
@@ -1423,10 +1221,10 @@
   EXPECT_CALL(mock_paced_sender_,
               EnqueuePackets(ElementsAre(Pointee(Property(
                   &RtpPacketToSend::capture_time_ms, start_time_ms)))));
-  EXPECT_GT(rtp_sender()->ReSendPacket(kSeqNum), 0);
+  EXPECT_GT(rtp_sender_->ReSendPacket(kSeqNum), 0);
 }
 
-TEST_P(RtpSenderTestWithoutPacer, ClearHistoryOnSequenceNumberCange) {
+TEST_F(RtpSenderTest, ClearHistoryOnSequenceNumberCange) {
   EnableRtx();
 
   // Put a packet in the packet history.
@@ -1434,21 +1232,21 @@
   std::unique_ptr<RtpPacketToSend> packet =
       BuildRtpPacket(kPayload, kMarkerBit, now_ms, now_ms);
   packet->set_allow_retransmission(true);
-  rtp_sender_context_->packet_history_.PutRtpPacket(std::move(packet), now_ms);
+  packet_history_->PutRtpPacket(std::move(packet), now_ms);
 
-  EXPECT_TRUE(rtp_sender_context_->packet_history_.GetPacketState(kSeqNum));
+  EXPECT_TRUE(packet_history_->GetPacketState(kSeqNum));
 
   // Update the sequence number of the RTP module, verify packet has been
   // removed.
-  rtp_sender()->SetSequenceNumber(rtp_sender()->SequenceNumber() - 1);
-  EXPECT_FALSE(rtp_sender_context_->packet_history_.GetPacketState(kSeqNum));
+  rtp_sender_->SetSequenceNumber(rtp_sender_->SequenceNumber() - 1);
+  EXPECT_FALSE(packet_history_->GetPacketState(kSeqNum));
 }
 
-TEST_P(RtpSenderTest, IgnoresNackAfterDisablingMedia) {
+TEST_F(RtpSenderTest, IgnoresNackAfterDisablingMedia) {
   const int64_t kRtt = 10;
 
   EnableRtx();
-  rtp_sender_context_->packet_history_.SetRtt(kRtt);
+  packet_history_->SetRtt(kRtt);
 
   // Put a packet in the history.
   const int64_t start_time_ms = clock_->TimeInMilliseconds();
@@ -1456,24 +1254,23 @@
       BuildRtpPacket(kPayload, kMarkerBit, start_time_ms,
                      /*capture_time_ms=*/start_time_ms);
   packet->set_allow_retransmission(true);
-  rtp_sender_context_->packet_history_.PutRtpPacket(std::move(packet),
-                                                    start_time_ms);
+  packet_history_->PutRtpPacket(std::move(packet), start_time_ms);
 
   // Disable media sending and try to retransmit the packet, it should fail.
-  rtp_sender()->SetSendingMediaStatus(false);
+  rtp_sender_->SetSendingMediaStatus(false);
   time_controller_.AdvanceTime(TimeDelta::Millis(kRtt));
-  EXPECT_LT(rtp_sender()->ReSendPacket(kSeqNum), 0);
+  EXPECT_LT(rtp_sender_->ReSendPacket(kSeqNum), 0);
 }
 
-TEST_P(RtpSenderTest, DoesntFecProtectRetransmissions) {
+TEST_F(RtpSenderTest, DoesntFecProtectRetransmissions) {
   // Set up retranmission without RTX, so that a plain copy of the old packet is
   // re-sent instead.
   const int64_t kRtt = 10;
-  rtp_sender()->SetSendingMediaStatus(true);
-  rtp_sender()->SetRtxStatus(kRtxOff);
-  rtp_sender_context_->packet_history_.SetStorePacketsStatus(
+  rtp_sender_->SetSendingMediaStatus(true);
+  rtp_sender_->SetRtxStatus(kRtxOff);
+  packet_history_->SetStorePacketsStatus(
       RtpPacketHistory::StorageMode::kStoreAndCull, 10);
-  rtp_sender_context_->packet_history_.SetRtt(kRtt);
+  packet_history_->SetRtt(kRtt);
 
   // Put a fec protected packet in the history.
   const int64_t start_time_ms = clock_->TimeInMilliseconds();
@@ -1482,8 +1279,7 @@
                      /*capture_time_ms=*/start_time_ms);
   packet->set_allow_retransmission(true);
   packet->set_fec_protect_packet(true);
-  rtp_sender_context_->packet_history_.PutRtpPacket(std::move(packet),
-                                                    start_time_ms);
+  packet_history_->PutRtpPacket(std::move(packet), start_time_ms);
 
   // Re-send packet, the retransmitted packet should not have the FEC protection
   // flag set.
@@ -1492,14 +1288,14 @@
                   Property(&RtpPacketToSend::fec_protect_packet, false)))));
 
   time_controller_.AdvanceTime(TimeDelta::Millis(kRtt));
-  EXPECT_GT(rtp_sender()->ReSendPacket(kSeqNum), 0);
+  EXPECT_GT(rtp_sender_->ReSendPacket(kSeqNum), 0);
 }
 
-TEST_P(RtpSenderTest, MarksPacketsWithKeyframeStatus) {
+TEST_F(RtpSenderTest, MarksPacketsWithKeyframeStatus) {
   FieldTrialBasedConfig field_trials;
   RTPSenderVideo::Config video_config;
   video_config.clock = clock_;
-  video_config.rtp_sender = rtp_sender();
+  video_config.rtp_sender = rtp_sender_.get();
   video_config.field_trials = &field_trials;
   RTPSenderVideo rtp_sender_video(video_config);
 
@@ -1542,14 +1338,4 @@
   }
 }
 
-INSTANTIATE_TEST_SUITE_P(WithAndWithoutOverhead,
-                         RtpSenderTest,
-                         ::testing::Values(TestConfig{false},
-                                           TestConfig{true}));
-
-INSTANTIATE_TEST_SUITE_P(WithAndWithoutOverhead,
-                         RtpSenderTestWithoutPacer,
-                         ::testing::Values(TestConfig{false},
-                                           TestConfig{true}));
-
 }  // namespace webrtc