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

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

Issue 2638083002: Attach TransportFeedbackPacketLossTracker to ANA (PLR only) (Closed)
Patch Set: CR response 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 MockTransportFeedbackAdapterObserver :
42 public webrtc::TransportFeedbackAdapterObserver {
43 public:
44 MOCK_METHOD2(OnPacketAdded, void(uint32_t ssrc, uint16_t seq_num));
45 MOCK_METHOD1(OnNewTransportFeedbackVector,
46 void(const std::vector<PacketFeedback>& packet_feedback_vector));
47 };
48
41 class TransportFeedbackAdapterTest : public ::testing::Test { 49 class TransportFeedbackAdapterTest : public ::testing::Test {
42 public: 50 public:
43 TransportFeedbackAdapterTest() : clock_(0) {} 51 TransportFeedbackAdapterTest() : clock_(0) {}
44 52
45 virtual ~TransportFeedbackAdapterTest() {} 53 virtual ~TransportFeedbackAdapterTest() {}
46 54
47 virtual void SetUp() { 55 virtual void SetUp() {
48 adapter_.reset(new TransportFeedbackAdapter(&clock_)); 56 adapter_.reset(new TransportFeedbackAdapter(&clock_));
49 } 57 }
50 58
51 virtual void TearDown() { adapter_.reset(); } 59 virtual void TearDown() { adapter_.reset(); }
52 60
53 protected: 61 protected:
54 void OnReceivedEstimatedBitrate(uint32_t bitrate) {} 62 void OnReceivedEstimatedBitrate(uint32_t bitrate) {}
55 63
56 void OnReceivedRtcpReceiverReport(const ReportBlockList& report_blocks, 64 void OnReceivedRtcpReceiverReport(const ReportBlockList& report_blocks,
57 int64_t rtt, 65 int64_t rtt,
58 int64_t now_ms) {} 66 int64_t now_ms) {}
59 67
60 void OnSentPacket(const PacketFeedback& packet_feedback) { 68 void OnSentPacket(const PacketFeedback& packet_feedback) {
61 adapter_->AddPacket(packet_feedback.sequence_number, 69 adapter_->AddPacket(kSsrc, packet_feedback.sequence_number,
62 packet_feedback.payload_size, 70 packet_feedback.payload_size,
63 packet_feedback.pacing_info); 71 packet_feedback.pacing_info);
64 adapter_->OnSentPacket(packet_feedback.sequence_number, 72 adapter_->OnSentPacket(packet_feedback.sequence_number,
65 packet_feedback.send_time_ms); 73 packet_feedback.send_time_ms);
66 } 74 }
67 75
76 static constexpr uint32_t kSsrc = 8492;
77
68 SimulatedClock clock_; 78 SimulatedClock clock_;
69 std::unique_ptr<TransportFeedbackAdapter> adapter_; 79 std::unique_ptr<TransportFeedbackAdapter> adapter_;
70 }; 80 };
71 81
82 TEST_F(TransportFeedbackAdapterTest, ObserverSanity) {
83 MockTransportFeedbackAdapterObserver mock;
84 adapter_->RegisterTransportFeedbackAdapterObserver(&mock);
85
86 const std::vector<PacketFeedback> packets = {
87 PacketFeedback(100, 200, 0, 1000, kPacingInfo0),
88 PacketFeedback(110, 210, 1, 2000, kPacingInfo0),
89 PacketFeedback(120, 220, 2, 3000, kPacingInfo0)
90 };
91
92 rtcp::TransportFeedback feedback;
93 feedback.SetBase(packets[0].sequence_number,
94 packets[0].arrival_time_ms * 1000);
95
96 for (const PacketFeedback& packet : packets) {
97 EXPECT_CALL(mock, OnPacketAdded(kSsrc, packet.sequence_number)).Times(1);
98 OnSentPacket(packet);
99 EXPECT_TRUE(feedback.AddReceivedPacket(packet.sequence_number,
100 packet.arrival_time_ms * 1000));
101 }
102
103 EXPECT_CALL(mock, OnNewTransportFeedbackVector(_)).Times(1);
104 adapter_->OnTransportFeedback(feedback);
105
106 adapter_->DeRegisterTransportFeedbackAdapterObserver(&mock);
107
108 // After deregistration, the observer no longers gets indications.
109 EXPECT_CALL(mock, OnPacketAdded(_, _)).Times(0);
110 const PacketFeedback new_packet(130, 230, 3, 4000, kPacingInfo0);
111 OnSentPacket(new_packet);
112
113 rtcp::TransportFeedback second_feedback;
114 second_feedback.SetBase(new_packet.sequence_number,
115 new_packet.arrival_time_ms * 1000);
116 EXPECT_TRUE(feedback.AddReceivedPacket(new_packet.sequence_number,
117 new_packet.arrival_time_ms * 1000));
118 EXPECT_CALL(mock, OnNewTransportFeedbackVector(_)).Times(0);
119 adapter_->OnTransportFeedback(second_feedback);
120 }
121
122 #if RTC_DCHECK_IS_ON && GTEST_HAS_DEATH_TEST && !defined(WEBRTC_ANDROID)
123 TEST_F(TransportFeedbackAdapterTest, ObserverDoubleRegistrationDeathTest) {
stefan-webrtc 2017/03/22 12:03:01 Not sure about the value of these tests, but if yo
elad.alon_webrtc.org 2017/03/22 14:34:47 I've added them on the basis of reviewers' request
124 MockTransportFeedbackAdapterObserver mock;
125 adapter_->RegisterTransportFeedbackAdapterObserver(&mock);
126 EXPECT_DEATH(adapter_->RegisterTransportFeedbackAdapterObserver(&mock), "");
127 adapter_->DeRegisterTransportFeedbackAdapterObserver(&mock);
128 }
129
130 TEST_F(TransportFeedbackAdapterTest, ObserverMissingDeRegistrationDeathTest) {
131 MockTransportFeedbackAdapterObserver mock;
132 adapter_->RegisterTransportFeedbackAdapterObserver(&mock);
133 EXPECT_DEATH(adapter_.reset(), "");
134 adapter_->DeRegisterTransportFeedbackAdapterObserver(&mock);
135 }
136 #endif
137
72 TEST_F(TransportFeedbackAdapterTest, AdaptsFeedbackAndPopulatesSendTimes) { 138 TEST_F(TransportFeedbackAdapterTest, AdaptsFeedbackAndPopulatesSendTimes) {
73 std::vector<PacketFeedback> packets; 139 std::vector<PacketFeedback> packets;
74 packets.push_back(PacketFeedback(100, 200, 0, 1500, kPacingInfo0)); 140 packets.push_back(PacketFeedback(100, 200, 0, 1500, kPacingInfo0));
75 packets.push_back(PacketFeedback(110, 210, 1, 1500, kPacingInfo0)); 141 packets.push_back(PacketFeedback(110, 210, 1, 1500, kPacingInfo0));
76 packets.push_back(PacketFeedback(120, 220, 2, 1500, kPacingInfo0)); 142 packets.push_back(PacketFeedback(120, 220, 2, 1500, kPacingInfo0));
77 packets.push_back(PacketFeedback(130, 230, 3, 1500, kPacingInfo1)); 143 packets.push_back(PacketFeedback(130, 230, 3, 1500, kPacingInfo1));
78 packets.push_back(PacketFeedback(140, 240, 4, 1500, kPacingInfo1)); 144 packets.push_back(PacketFeedback(140, 240, 4, 1500, kPacingInfo1));
79 145
80 for (const PacketFeedback& packet : packets) 146 for (const PacketFeedback& packet : packets)
81 OnSentPacket(packet); 147 OnSentPacket(packet);
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 adapter_->OnTransportFeedback(*feedback.get()); 383 adapter_->OnTransportFeedback(*feedback.get());
318 { 384 {
319 std::vector<PacketFeedback> expected_packets; 385 std::vector<PacketFeedback> expected_packets;
320 expected_packets.push_back(packet_feedback); 386 expected_packets.push_back(packet_feedback);
321 ComparePacketFeedbackVectors(expected_packets, 387 ComparePacketFeedbackVectors(expected_packets,
322 adapter_->GetTransportFeedbackVector()); 388 adapter_->GetTransportFeedbackVector());
323 } 389 }
324 } 390 }
325 } // namespace test 391 } // namespace test
326 } // namespace webrtc 392 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698