Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(253)

Side by Side Diff: webrtc/modules/congestion_controller/transport_feedback_adapter_unittest.cc

Issue 2638083002: Attach TransportFeedbackPacketLossTracker to ANA (PLR only) (Closed)
Patch Set: Fix UT Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 20 matching lines...) Expand all
31 namespace { 31 namespace {
32 const PacedPacketInfo kPacingInfo0(0, 5, 2000); 32 const PacedPacketInfo kPacingInfo0(0, 5, 2000);
33 const PacedPacketInfo kPacingInfo1(1, 8, 4000); 33 const PacedPacketInfo kPacingInfo1(1, 8, 4000);
34 const PacedPacketInfo kPacingInfo2(2, 14, 7000); 34 const PacedPacketInfo kPacingInfo2(2, 14, 7000);
35 const PacedPacketInfo kPacingInfo3(3, 20, 10000); 35 const PacedPacketInfo kPacingInfo3(3, 20, 10000);
36 const PacedPacketInfo kPacingInfo4(4, 22, 10000); 36 const PacedPacketInfo kPacingInfo4(4, 22, 10000);
37 } 37 }
38 38
39 namespace test { 39 namespace test {
40 40
41 class MockPacketFeedbackObserver : public webrtc::PacketFeedbackObserver {
42 public:
43 MOCK_METHOD2(OnPacketAdded, void(uint32_t ssrc, uint16_t seq_num));
44 MOCK_METHOD1(OnPacketFeedbackVector,
45 void(const std::vector<PacketFeedback>& packet_feedback_vector));
46 };
47
41 class TransportFeedbackAdapterTest : public ::testing::Test { 48 class TransportFeedbackAdapterTest : public ::testing::Test {
42 public: 49 public:
43 TransportFeedbackAdapterTest() : clock_(0) {} 50 TransportFeedbackAdapterTest() : clock_(0) {}
44 51
45 virtual ~TransportFeedbackAdapterTest() {} 52 virtual ~TransportFeedbackAdapterTest() {}
46 53
47 virtual void SetUp() { 54 virtual void SetUp() {
48 adapter_.reset(new TransportFeedbackAdapter(&clock_)); 55 adapter_.reset(new TransportFeedbackAdapter(&clock_));
49 } 56 }
50 57
51 virtual void TearDown() { adapter_.reset(); } 58 virtual void TearDown() { adapter_.reset(); }
52 59
53 protected: 60 protected:
54 void OnReceivedEstimatedBitrate(uint32_t bitrate) {} 61 void OnReceivedEstimatedBitrate(uint32_t bitrate) {}
55 62
56 void OnReceivedRtcpReceiverReport(const ReportBlockList& report_blocks, 63 void OnReceivedRtcpReceiverReport(const ReportBlockList& report_blocks,
57 int64_t rtt, 64 int64_t rtt,
58 int64_t now_ms) {} 65 int64_t now_ms) {}
59 66
60 void OnSentPacket(const PacketFeedback& packet_feedback) { 67 void OnSentPacket(const PacketFeedback& packet_feedback) {
61 adapter_->AddPacket(packet_feedback.sequence_number, 68 adapter_->AddPacket(kSsrc, packet_feedback.sequence_number,
62 packet_feedback.payload_size, 69 packet_feedback.payload_size,
63 packet_feedback.pacing_info); 70 packet_feedback.pacing_info);
64 adapter_->OnSentPacket(packet_feedback.sequence_number, 71 adapter_->OnSentPacket(packet_feedback.sequence_number,
65 packet_feedback.send_time_ms); 72 packet_feedback.send_time_ms);
66 } 73 }
67 74
75 static constexpr uint32_t kSsrc = 8492;
76
68 SimulatedClock clock_; 77 SimulatedClock clock_;
69 std::unique_ptr<TransportFeedbackAdapter> adapter_; 78 std::unique_ptr<TransportFeedbackAdapter> adapter_;
70 }; 79 };
71 80
81 TEST_F(TransportFeedbackAdapterTest, ObserverSanity) {
82 MockPacketFeedbackObserver mock;
83 adapter_->RegisterPacketFeedbackObserver(&mock);
84
85 const std::vector<PacketFeedback> packets = {
86 PacketFeedback(100, 200, 0, 1000, kPacingInfo0),
87 PacketFeedback(110, 210, 1, 2000, kPacingInfo0),
88 PacketFeedback(120, 220, 2, 3000, kPacingInfo0)
89 };
90
91 rtcp::TransportFeedback feedback;
92 feedback.SetBase(packets[0].sequence_number,
93 packets[0].arrival_time_ms * 1000);
94
95 for (const PacketFeedback& packet : packets) {
96 EXPECT_CALL(mock, OnPacketAdded(kSsrc, packet.sequence_number)).Times(1);
97 OnSentPacket(packet);
98 EXPECT_TRUE(feedback.AddReceivedPacket(packet.sequence_number,
99 packet.arrival_time_ms * 1000));
100 }
101
102 EXPECT_CALL(mock, OnPacketFeedbackVector(_)).Times(1);
103 adapter_->OnTransportFeedback(feedback);
104
105 adapter_->DeRegisterPacketFeedbackObserver(&mock);
106
107 // After deregistration, the observer no longers gets indications.
108 EXPECT_CALL(mock, OnPacketAdded(_, _)).Times(0);
109 const PacketFeedback new_packet(130, 230, 3, 4000, kPacingInfo0);
110 OnSentPacket(new_packet);
111
112 rtcp::TransportFeedback second_feedback;
113 second_feedback.SetBase(new_packet.sequence_number,
114 new_packet.arrival_time_ms * 1000);
115 EXPECT_TRUE(feedback.AddReceivedPacket(new_packet.sequence_number,
116 new_packet.arrival_time_ms * 1000));
117 EXPECT_CALL(mock, OnPacketFeedbackVector(_)).Times(0);
118 adapter_->OnTransportFeedback(second_feedback);
119 }
120
121 #if RTC_DCHECK_IS_ON && GTEST_HAS_DEATH_TEST && !defined(WEBRTC_ANDROID)
122 TEST_F(TransportFeedbackAdapterTest, ObserverDoubleRegistrationDeathTest) {
123 MockPacketFeedbackObserver mock;
124 adapter_->RegisterPacketFeedbackObserver(&mock);
125 EXPECT_DEATH(adapter_->RegisterPacketFeedbackObserver(&mock), "");
126 adapter_->DeRegisterPacketFeedbackObserver(&mock);
127 }
128
129 TEST_F(TransportFeedbackAdapterTest, ObserverMissingDeRegistrationDeathTest) {
130 MockPacketFeedbackObserver mock;
131 adapter_->RegisterPacketFeedbackObserver(&mock);
132 EXPECT_DEATH(adapter_.reset(), "");
133 adapter_->DeRegisterPacketFeedbackObserver(&mock);
134 }
135 #endif
136
72 TEST_F(TransportFeedbackAdapterTest, AdaptsFeedbackAndPopulatesSendTimes) { 137 TEST_F(TransportFeedbackAdapterTest, AdaptsFeedbackAndPopulatesSendTimes) {
73 std::vector<PacketFeedback> packets; 138 std::vector<PacketFeedback> packets;
74 packets.push_back(PacketFeedback(100, 200, 0, 1500, kPacingInfo0)); 139 packets.push_back(PacketFeedback(100, 200, 0, 1500, kPacingInfo0));
75 packets.push_back(PacketFeedback(110, 210, 1, 1500, kPacingInfo0)); 140 packets.push_back(PacketFeedback(110, 210, 1, 1500, kPacingInfo0));
76 packets.push_back(PacketFeedback(120, 220, 2, 1500, kPacingInfo0)); 141 packets.push_back(PacketFeedback(120, 220, 2, 1500, kPacingInfo0));
77 packets.push_back(PacketFeedback(130, 230, 3, 1500, kPacingInfo1)); 142 packets.push_back(PacketFeedback(130, 230, 3, 1500, kPacingInfo1));
78 packets.push_back(PacketFeedback(140, 240, 4, 1500, kPacingInfo1)); 143 packets.push_back(PacketFeedback(140, 240, 4, 1500, kPacingInfo1));
79 144
80 for (const PacketFeedback& packet : packets) 145 for (const PacketFeedback& packet : packets)
81 OnSentPacket(packet); 146 OnSentPacket(packet);
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 adapter_->OnTransportFeedback(*feedback.get()); 382 adapter_->OnTransportFeedback(*feedback.get());
318 { 383 {
319 std::vector<PacketFeedback> expected_packets; 384 std::vector<PacketFeedback> expected_packets;
320 expected_packets.push_back(packet_feedback); 385 expected_packets.push_back(packet_feedback);
321 ComparePacketFeedbackVectors(expected_packets, 386 ComparePacketFeedbackVectors(expected_packets,
322 adapter_->GetTransportFeedbackVector()); 387 adapter_->GetTransportFeedbackVector());
323 } 388 }
324 } 389 }
325 } // namespace test 390 } // namespace test
326 } // namespace webrtc 391 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698