Chromium Code Reviews| Index: webrtc/modules/congestion_controller/transport_feedback_adapter_unittest.cc |
| diff --git a/webrtc/modules/congestion_controller/transport_feedback_adapter_unittest.cc b/webrtc/modules/congestion_controller/transport_feedback_adapter_unittest.cc |
| index 22e8b59b95480a202bdb676f1fb8fe836d367943..ce6231177cb134aceea465123c670c3d175bcd65 100644 |
| --- a/webrtc/modules/congestion_controller/transport_feedback_adapter_unittest.cc |
| +++ b/webrtc/modules/congestion_controller/transport_feedback_adapter_unittest.cc |
| @@ -38,6 +38,14 @@ const PacedPacketInfo kPacingInfo4(4, 22, 10000); |
| namespace test { |
| +class MockTransportFeedbackAdapterObserver : |
| + public webrtc::TransportFeedbackAdapterObserver { |
| + public: |
| + MOCK_METHOD2(OnPacketAdded, void(uint32_t ssrc, uint16_t seq_num)); |
| + MOCK_METHOD1(OnNewTransportFeedbackVector, |
| + void(const std::vector<PacketFeedback>& packet_feedback_vector)); |
| +}; |
| + |
| class TransportFeedbackAdapterTest : public ::testing::Test { |
| public: |
| TransportFeedbackAdapterTest() : clock_(0) {} |
| @@ -58,17 +66,60 @@ class TransportFeedbackAdapterTest : public ::testing::Test { |
| int64_t now_ms) {} |
| void OnSentPacket(const PacketFeedback& packet_feedback) { |
| - adapter_->AddPacket(packet_feedback.sequence_number, |
| + adapter_->AddPacket(kSsrc, packet_feedback.sequence_number, |
| packet_feedback.payload_size, |
| packet_feedback.pacing_info); |
| adapter_->OnSentPacket(packet_feedback.sequence_number, |
| packet_feedback.send_time_ms); |
| } |
| + static constexpr uint32_t kSsrc = 8492; |
| + |
| SimulatedClock clock_; |
| std::unique_ptr<TransportFeedbackAdapter> adapter_; |
| }; |
| +TEST_F(TransportFeedbackAdapterTest, ObserverSanity) { |
| + MockTransportFeedbackAdapterObserver mock; |
| + adapter_->RegisterTransportFeedbackAdapterObserver(&mock); |
| + |
| + std::vector<PacketFeedback> packets = { |
|
minyue-webrtc
2017/03/22 07:51:39
const
elad.alon_webrtc.org
2017/03/22 09:36:30
Done.
|
| + PacketFeedback(100, 200, 0, 1000, kPacingInfo0), |
| + PacketFeedback(110, 210, 1, 2000, kPacingInfo0), |
| + PacketFeedback(120, 220, 2, 3000, kPacingInfo0) |
| + }; |
| + |
| + rtcp::TransportFeedback feedback; |
| + feedback.SetBase(packets[0].sequence_number, |
| + packets[0].arrival_time_ms * 1000); |
| + |
| + for (const PacketFeedback& packet : packets) { |
| + EXPECT_CALL(mock, OnPacketAdded(kSsrc, packet.sequence_number)); |
| + OnSentPacket(packet); |
| + EXPECT_TRUE(feedback.AddReceivedPacket(packet.sequence_number, |
| + packet.arrival_time_ms * 1000)); |
| + } |
| + |
| + EXPECT_CALL(mock, OnNewTransportFeedbackVector(_)); |
| + adapter_->OnTransportFeedback(feedback); |
| + |
| + adapter_->DeRegisterTransportFeedbackAdapterObserver(&mock); |
| +} |
| + |
| +TEST_F(TransportFeedbackAdapterTest, ObserverDoubleRegistrationDeathTest) { |
| + MockTransportFeedbackAdapterObserver mock; |
| + adapter_->RegisterTransportFeedbackAdapterObserver(&mock); |
| + EXPECT_DEATH(adapter_->RegisterTransportFeedbackAdapterObserver(&mock), ""); |
| + adapter_->DeRegisterTransportFeedbackAdapterObserver(&mock); |
| +} |
| + |
| +TEST_F(TransportFeedbackAdapterTest, ObserverMissingDeRegistrationDeathTest) { |
| + MockTransportFeedbackAdapterObserver mock; |
| + adapter_->RegisterTransportFeedbackAdapterObserver(&mock); |
| + EXPECT_DEATH(adapter_.reset(), ""); |
| + adapter_->DeRegisterTransportFeedbackAdapterObserver(&mock); |
| +} |
| + |
| TEST_F(TransportFeedbackAdapterTest, AdaptsFeedbackAndPopulatesSendTimes) { |
| std::vector<PacketFeedback> packets; |
| packets.push_back(PacketFeedback(100, 200, 0, 1500, kPacingInfo0)); |