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

Side by Side Diff: webrtc/modules/pacing/packet_router_unittest.cc

Issue 2991093002: Remove PacketRouterTest fixture (Closed)
Patch Set: Rebased Created 3 years, 4 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 17 matching lines...) Expand all
28 using ::testing::ReturnPointee; 28 using ::testing::ReturnPointee;
29 using ::testing::SaveArg; 29 using ::testing::SaveArg;
30 30
31 namespace webrtc { 31 namespace webrtc {
32 32
33 // TODO(eladalon): Restructure and/or replace the existing monolithic tests 33 // TODO(eladalon): Restructure and/or replace the existing monolithic tests
34 // (only some of the test are monolithic) according to the new 34 // (only some of the test are monolithic) according to the new
35 // guidelines - small tests for one thing at a time. 35 // guidelines - small tests for one thing at a time.
36 // (I'm not removing any tests during CL, so as to demonstrate no regressions.) 36 // (I'm not removing any tests during CL, so as to demonstrate no regressions.)
37 37
38 namespace {
39 constexpr int kProbeMinProbes = 5;
40 constexpr int kProbeMinBytes = 1000;
41
38 class MockRtpRtcpWithRembTracking : public MockRtpRtcp { 42 class MockRtpRtcpWithRembTracking : public MockRtpRtcp {
39 public: 43 public:
40 MockRtpRtcpWithRembTracking() { 44 MockRtpRtcpWithRembTracking() {
41 ON_CALL(*this, SetREMBStatus(_)).WillByDefault(SaveArg<0>(&remb_)); 45 ON_CALL(*this, SetREMBStatus(_)).WillByDefault(SaveArg<0>(&remb_));
42 ON_CALL(*this, REMB()).WillByDefault(ReturnPointee(&remb_)); 46 ON_CALL(*this, REMB()).WillByDefault(ReturnPointee(&remb_));
43 } 47 }
44 48
45 private: 49 private:
46 bool remb_ = false; 50 bool remb_ = false;
47 }; 51 };
52 } // namespace
48 53
49 class PacketRouterTest : public ::testing::Test { 54 TEST(PacketRouterTest, TimeToSendPacket) {
50 public: 55 PacketRouter packet_router;
51 PacketRouterTest() : packet_router_(new PacketRouter()) {}
52 protected:
53 static constexpr int kProbeMinProbes = 5;
54 static constexpr int kProbeMinBytes = 1000;
55 const std::unique_ptr<PacketRouter> packet_router_;
56 };
57
58 TEST_F(PacketRouterTest, TimeToSendPacket) {
59 NiceMock<MockRtpRtcp> rtp_1; 56 NiceMock<MockRtpRtcp> rtp_1;
60 NiceMock<MockRtpRtcp> rtp_2; 57 NiceMock<MockRtpRtcp> rtp_2;
61 packet_router_->AddSendRtpModule(&rtp_1, false); 58
62 packet_router_->AddSendRtpModule(&rtp_2, false); 59 packet_router.AddSendRtpModule(&rtp_1, false);
60 packet_router.AddSendRtpModule(&rtp_2, false);
63 61
64 const uint16_t kSsrc1 = 1234; 62 const uint16_t kSsrc1 = 1234;
65 uint16_t sequence_number = 17; 63 uint16_t sequence_number = 17;
66 uint64_t timestamp = 7890; 64 uint64_t timestamp = 7890;
67 bool retransmission = false; 65 bool retransmission = false;
68 66
69 // Send on the first module by letting rtp_1 be sending with correct ssrc. 67 // Send on the first module by letting rtp_1 be sending with correct ssrc.
70 EXPECT_CALL(rtp_1, SendingMedia()).Times(1).WillOnce(Return(true)); 68 EXPECT_CALL(rtp_1, SendingMedia()).Times(1).WillOnce(Return(true));
71 EXPECT_CALL(rtp_1, SSRC()).Times(1).WillOnce(Return(kSsrc1)); 69 EXPECT_CALL(rtp_1, SSRC()).Times(1).WillOnce(Return(kSsrc1));
72 EXPECT_CALL(rtp_1, TimeToSendPacket( 70 EXPECT_CALL(rtp_1, TimeToSendPacket(
73 kSsrc1, sequence_number, timestamp, retransmission, 71 kSsrc1, sequence_number, timestamp, retransmission,
74 Field(&PacedPacketInfo::probe_cluster_id, 1))) 72 Field(&PacedPacketInfo::probe_cluster_id, 1)))
75 .Times(1) 73 .Times(1)
76 .WillOnce(Return(true)); 74 .WillOnce(Return(true));
77 EXPECT_CALL(rtp_2, TimeToSendPacket(_, _, _, _, _)).Times(0); 75 EXPECT_CALL(rtp_2, TimeToSendPacket(_, _, _, _, _)).Times(0);
78 EXPECT_TRUE(packet_router_->TimeToSendPacket( 76 EXPECT_TRUE(packet_router.TimeToSendPacket(
79 kSsrc1, sequence_number, timestamp, retransmission, 77 kSsrc1, sequence_number, timestamp, retransmission,
80 PacedPacketInfo(1, kProbeMinProbes, kProbeMinBytes))); 78 PacedPacketInfo(1, kProbeMinProbes, kProbeMinBytes)));
81 79
82 // Send on the second module by letting rtp_2 be sending, but not rtp_1. 80 // Send on the second module by letting rtp_2 be sending, but not rtp_1.
83 ++sequence_number; 81 ++sequence_number;
84 timestamp += 30; 82 timestamp += 30;
85 retransmission = true; 83 retransmission = true;
86 const uint16_t kSsrc2 = 4567; 84 const uint16_t kSsrc2 = 4567;
87 EXPECT_CALL(rtp_1, SendingMedia()).Times(1).WillOnce(Return(false)); 85 EXPECT_CALL(rtp_1, SendingMedia()).Times(1).WillOnce(Return(false));
88 EXPECT_CALL(rtp_2, SendingMedia()).Times(1).WillOnce(Return(true)); 86 EXPECT_CALL(rtp_2, SendingMedia()).Times(1).WillOnce(Return(true));
89 EXPECT_CALL(rtp_2, SSRC()).Times(1).WillOnce(Return(kSsrc2)); 87 EXPECT_CALL(rtp_2, SSRC()).Times(1).WillOnce(Return(kSsrc2));
90 EXPECT_CALL(rtp_1, TimeToSendPacket(_, _, _, _, _)).Times(0); 88 EXPECT_CALL(rtp_1, TimeToSendPacket(_, _, _, _, _)).Times(0);
91 EXPECT_CALL(rtp_2, TimeToSendPacket( 89 EXPECT_CALL(rtp_2, TimeToSendPacket(
92 kSsrc2, sequence_number, timestamp, retransmission, 90 kSsrc2, sequence_number, timestamp, retransmission,
93 Field(&PacedPacketInfo::probe_cluster_id, 2))) 91 Field(&PacedPacketInfo::probe_cluster_id, 2)))
94 .Times(1) 92 .Times(1)
95 .WillOnce(Return(true)); 93 .WillOnce(Return(true));
96 EXPECT_TRUE(packet_router_->TimeToSendPacket( 94 EXPECT_TRUE(packet_router.TimeToSendPacket(
97 kSsrc2, sequence_number, timestamp, retransmission, 95 kSsrc2, sequence_number, timestamp, retransmission,
98 PacedPacketInfo(2, kProbeMinProbes, kProbeMinBytes))); 96 PacedPacketInfo(2, kProbeMinProbes, kProbeMinBytes)));
99 97
100 // No module is sending, hence no packet should be sent. 98 // No module is sending, hence no packet should be sent.
101 EXPECT_CALL(rtp_1, SendingMedia()).Times(1).WillOnce(Return(false)); 99 EXPECT_CALL(rtp_1, SendingMedia()).Times(1).WillOnce(Return(false));
102 EXPECT_CALL(rtp_1, TimeToSendPacket(_, _, _, _, _)).Times(0); 100 EXPECT_CALL(rtp_1, TimeToSendPacket(_, _, _, _, _)).Times(0);
103 EXPECT_CALL(rtp_2, SendingMedia()).Times(1).WillOnce(Return(false)); 101 EXPECT_CALL(rtp_2, SendingMedia()).Times(1).WillOnce(Return(false));
104 EXPECT_CALL(rtp_2, TimeToSendPacket(_, _, _, _, _)).Times(0); 102 EXPECT_CALL(rtp_2, TimeToSendPacket(_, _, _, _, _)).Times(0);
105 EXPECT_TRUE(packet_router_->TimeToSendPacket( 103 EXPECT_TRUE(packet_router.TimeToSendPacket(
106 kSsrc1, sequence_number, timestamp, retransmission, 104 kSsrc1, sequence_number, timestamp, retransmission,
107 PacedPacketInfo(1, kProbeMinProbes, kProbeMinBytes))); 105 PacedPacketInfo(1, kProbeMinProbes, kProbeMinBytes)));
108 106
109 // Add a packet with incorrect ssrc and test it's dropped in the router. 107 // Add a packet with incorrect ssrc and test it's dropped in the router.
110 EXPECT_CALL(rtp_1, SendingMedia()).Times(1).WillOnce(Return(true)); 108 EXPECT_CALL(rtp_1, SendingMedia()).Times(1).WillOnce(Return(true));
111 EXPECT_CALL(rtp_1, SSRC()).Times(1).WillOnce(Return(kSsrc1)); 109 EXPECT_CALL(rtp_1, SSRC()).Times(1).WillOnce(Return(kSsrc1));
112 EXPECT_CALL(rtp_2, SendingMedia()).Times(1).WillOnce(Return(true)); 110 EXPECT_CALL(rtp_2, SendingMedia()).Times(1).WillOnce(Return(true));
113 EXPECT_CALL(rtp_2, SSRC()).Times(1).WillOnce(Return(kSsrc2)); 111 EXPECT_CALL(rtp_2, SSRC()).Times(1).WillOnce(Return(kSsrc2));
114 EXPECT_CALL(rtp_1, TimeToSendPacket(_, _, _, _, _)).Times(0); 112 EXPECT_CALL(rtp_1, TimeToSendPacket(_, _, _, _, _)).Times(0);
115 EXPECT_CALL(rtp_2, TimeToSendPacket(_, _, _, _, _)).Times(0); 113 EXPECT_CALL(rtp_2, TimeToSendPacket(_, _, _, _, _)).Times(0);
116 EXPECT_TRUE(packet_router_->TimeToSendPacket( 114 EXPECT_TRUE(packet_router.TimeToSendPacket(
117 kSsrc1 + kSsrc2, sequence_number, timestamp, retransmission, 115 kSsrc1 + kSsrc2, sequence_number, timestamp, retransmission,
118 PacedPacketInfo(1, kProbeMinProbes, kProbeMinBytes))); 116 PacedPacketInfo(1, kProbeMinProbes, kProbeMinBytes)));
119 117
120 packet_router_->RemoveSendRtpModule(&rtp_1); 118 packet_router.RemoveSendRtpModule(&rtp_1);
121 119
122 // rtp_1 has been removed, try sending a packet on that ssrc and make sure 120 // rtp_1 has been removed, try sending a packet on that ssrc and make sure
123 // it is dropped as expected by not expecting any calls to rtp_1. 121 // it is dropped as expected by not expecting any calls to rtp_1.
124 EXPECT_CALL(rtp_2, SendingMedia()).Times(1).WillOnce(Return(true)); 122 EXPECT_CALL(rtp_2, SendingMedia()).Times(1).WillOnce(Return(true));
125 EXPECT_CALL(rtp_2, SSRC()).Times(1).WillOnce(Return(kSsrc2)); 123 EXPECT_CALL(rtp_2, SSRC()).Times(1).WillOnce(Return(kSsrc2));
126 EXPECT_CALL(rtp_2, TimeToSendPacket(_, _, _, _, _)).Times(0); 124 EXPECT_CALL(rtp_2, TimeToSendPacket(_, _, _, _, _)).Times(0);
127 EXPECT_TRUE(packet_router_->TimeToSendPacket( 125 EXPECT_TRUE(packet_router.TimeToSendPacket(
128 kSsrc1, sequence_number, timestamp, retransmission, 126 kSsrc1, sequence_number, timestamp, retransmission,
129 PacedPacketInfo(PacedPacketInfo::kNotAProbe, kProbeMinBytes, 127 PacedPacketInfo(PacedPacketInfo::kNotAProbe, kProbeMinBytes,
130 kProbeMinBytes))); 128 kProbeMinBytes)));
131 129
132 packet_router_->RemoveSendRtpModule(&rtp_2); 130 packet_router.RemoveSendRtpModule(&rtp_2);
133 } 131 }
134 132
135 TEST_F(PacketRouterTest, TimeToSendPadding) { 133 TEST(PacketRouterTest, TimeToSendPadding) {
134 PacketRouter packet_router;
135
136 const uint16_t kSsrc1 = 1234; 136 const uint16_t kSsrc1 = 1234;
137 const uint16_t kSsrc2 = 4567; 137 const uint16_t kSsrc2 = 4567;
138 138
139 NiceMock<MockRtpRtcp> rtp_1; 139 NiceMock<MockRtpRtcp> rtp_1;
140 EXPECT_CALL(rtp_1, RtxSendStatus()).WillOnce(Return(kRtxOff)); 140 EXPECT_CALL(rtp_1, RtxSendStatus()).WillOnce(Return(kRtxOff));
141 EXPECT_CALL(rtp_1, SSRC()).WillRepeatedly(Return(kSsrc1)); 141 EXPECT_CALL(rtp_1, SSRC()).WillRepeatedly(Return(kSsrc1));
142 NiceMock<MockRtpRtcp> rtp_2; 142 NiceMock<MockRtpRtcp> rtp_2;
143 // rtp_2 will be prioritized for padding. 143 // rtp_2 will be prioritized for padding.
144 EXPECT_CALL(rtp_2, RtxSendStatus()).WillOnce(Return(kRtxRedundantPayloads)); 144 EXPECT_CALL(rtp_2, RtxSendStatus()).WillOnce(Return(kRtxRedundantPayloads));
145 EXPECT_CALL(rtp_2, SSRC()).WillRepeatedly(Return(kSsrc2)); 145 EXPECT_CALL(rtp_2, SSRC()).WillRepeatedly(Return(kSsrc2));
146 packet_router_->AddSendRtpModule(&rtp_1, false); 146 packet_router.AddSendRtpModule(&rtp_1, false);
147 packet_router_->AddSendRtpModule(&rtp_2, false); 147 packet_router.AddSendRtpModule(&rtp_2, false);
148 148
149 // Default configuration, sending padding on all modules sending media, 149 // Default configuration, sending padding on all modules sending media,
150 // ordered by priority (based on rtx mode). 150 // ordered by priority (based on rtx mode).
151 const size_t requested_padding_bytes = 1000; 151 const size_t requested_padding_bytes = 1000;
152 const size_t sent_padding_bytes = 890; 152 const size_t sent_padding_bytes = 890;
153 EXPECT_CALL(rtp_2, SendingMedia()).Times(1).WillOnce(Return(true)); 153 EXPECT_CALL(rtp_2, SendingMedia()).Times(1).WillOnce(Return(true));
154 EXPECT_CALL(rtp_2, HasBweExtensions()).Times(1).WillOnce(Return(true)); 154 EXPECT_CALL(rtp_2, HasBweExtensions()).Times(1).WillOnce(Return(true));
155 EXPECT_CALL(rtp_2, 155 EXPECT_CALL(rtp_2,
156 TimeToSendPadding(requested_padding_bytes, 156 TimeToSendPadding(requested_padding_bytes,
157 Field(&PacedPacketInfo::probe_cluster_id, 111))) 157 Field(&PacedPacketInfo::probe_cluster_id, 111)))
158 .Times(1) 158 .Times(1)
159 .WillOnce(Return(sent_padding_bytes)); 159 .WillOnce(Return(sent_padding_bytes));
160 EXPECT_CALL(rtp_1, SendingMedia()).Times(1).WillOnce(Return(true)); 160 EXPECT_CALL(rtp_1, SendingMedia()).Times(1).WillOnce(Return(true));
161 EXPECT_CALL(rtp_1, HasBweExtensions()).Times(1).WillOnce(Return(true)); 161 EXPECT_CALL(rtp_1, HasBweExtensions()).Times(1).WillOnce(Return(true));
162 EXPECT_CALL(rtp_1, 162 EXPECT_CALL(rtp_1,
163 TimeToSendPadding(requested_padding_bytes - sent_padding_bytes, 163 TimeToSendPadding(requested_padding_bytes - sent_padding_bytes,
164 Field(&PacedPacketInfo::probe_cluster_id, 111))) 164 Field(&PacedPacketInfo::probe_cluster_id, 111)))
165 .Times(1) 165 .Times(1)
166 .WillOnce(Return(requested_padding_bytes - sent_padding_bytes)); 166 .WillOnce(Return(requested_padding_bytes - sent_padding_bytes));
167 EXPECT_EQ(requested_padding_bytes, 167 EXPECT_EQ(requested_padding_bytes,
168 packet_router_->TimeToSendPadding( 168 packet_router.TimeToSendPadding(
169 requested_padding_bytes, 169 requested_padding_bytes,
170 PacedPacketInfo(111, kProbeMinBytes, kProbeMinBytes))); 170 PacedPacketInfo(111, kProbeMinBytes, kProbeMinBytes)));
171 171
172 // Let only the lower priority module be sending and verify the padding 172 // Let only the lower priority module be sending and verify the padding
173 // request is routed there. 173 // request is routed there.
174 EXPECT_CALL(rtp_2, SendingMedia()).Times(1).WillOnce(Return(false)); 174 EXPECT_CALL(rtp_2, SendingMedia()).Times(1).WillOnce(Return(false));
175 EXPECT_CALL(rtp_2, TimeToSendPadding(requested_padding_bytes, _)).Times(0); 175 EXPECT_CALL(rtp_2, TimeToSendPadding(requested_padding_bytes, _)).Times(0);
176 EXPECT_CALL(rtp_1, SendingMedia()).Times(1).WillOnce(Return(true)); 176 EXPECT_CALL(rtp_1, SendingMedia()).Times(1).WillOnce(Return(true));
177 EXPECT_CALL(rtp_1, HasBweExtensions()).Times(1).WillOnce(Return(true)); 177 EXPECT_CALL(rtp_1, HasBweExtensions()).Times(1).WillOnce(Return(true));
178 EXPECT_CALL(rtp_1, TimeToSendPadding(_, _)) 178 EXPECT_CALL(rtp_1, TimeToSendPadding(_, _))
179 .Times(1) 179 .Times(1)
180 .WillOnce(Return(sent_padding_bytes)); 180 .WillOnce(Return(sent_padding_bytes));
181 EXPECT_EQ(sent_padding_bytes, 181 EXPECT_EQ(sent_padding_bytes,
182 packet_router_->TimeToSendPadding( 182 packet_router.TimeToSendPadding(
183 requested_padding_bytes, 183 requested_padding_bytes,
184 PacedPacketInfo(PacedPacketInfo::kNotAProbe, kProbeMinBytes, 184 PacedPacketInfo(PacedPacketInfo::kNotAProbe, kProbeMinBytes,
185 kProbeMinBytes))); 185 kProbeMinBytes)));
186 186
187 // No sending module at all. 187 // No sending module at all.
188 EXPECT_CALL(rtp_1, SendingMedia()).Times(1).WillOnce(Return(false)); 188 EXPECT_CALL(rtp_1, SendingMedia()).Times(1).WillOnce(Return(false));
189 EXPECT_CALL(rtp_1, TimeToSendPadding(requested_padding_bytes, _)).Times(0); 189 EXPECT_CALL(rtp_1, TimeToSendPadding(requested_padding_bytes, _)).Times(0);
190 EXPECT_CALL(rtp_2, SendingMedia()).Times(1).WillOnce(Return(false)); 190 EXPECT_CALL(rtp_2, SendingMedia()).Times(1).WillOnce(Return(false));
191 EXPECT_CALL(rtp_2, TimeToSendPadding(_, _)).Times(0); 191 EXPECT_CALL(rtp_2, TimeToSendPadding(_, _)).Times(0);
192 EXPECT_EQ(0u, 192 EXPECT_EQ(0u,
193 packet_router_->TimeToSendPadding( 193 packet_router.TimeToSendPadding(
194 requested_padding_bytes, 194 requested_padding_bytes,
195 PacedPacketInfo(PacedPacketInfo::kNotAProbe, kProbeMinBytes, 195 PacedPacketInfo(PacedPacketInfo::kNotAProbe, kProbeMinBytes,
196 kProbeMinBytes))); 196 kProbeMinBytes)));
197 197
198 // Only one module has BWE extensions. 198 // Only one module has BWE extensions.
199 EXPECT_CALL(rtp_1, SendingMedia()).Times(1).WillOnce(Return(true)); 199 EXPECT_CALL(rtp_1, SendingMedia()).Times(1).WillOnce(Return(true));
200 EXPECT_CALL(rtp_1, HasBweExtensions()).Times(1).WillOnce(Return(false)); 200 EXPECT_CALL(rtp_1, HasBweExtensions()).Times(1).WillOnce(Return(false));
201 EXPECT_CALL(rtp_1, TimeToSendPadding(requested_padding_bytes, _)).Times(0); 201 EXPECT_CALL(rtp_1, TimeToSendPadding(requested_padding_bytes, _)).Times(0);
202 EXPECT_CALL(rtp_2, SendingMedia()).Times(1).WillOnce(Return(true)); 202 EXPECT_CALL(rtp_2, SendingMedia()).Times(1).WillOnce(Return(true));
203 EXPECT_CALL(rtp_2, HasBweExtensions()).Times(1).WillOnce(Return(true)); 203 EXPECT_CALL(rtp_2, HasBweExtensions()).Times(1).WillOnce(Return(true));
204 EXPECT_CALL(rtp_2, TimeToSendPadding(requested_padding_bytes, _)) 204 EXPECT_CALL(rtp_2, TimeToSendPadding(requested_padding_bytes, _))
205 .Times(1) 205 .Times(1)
206 .WillOnce(Return(sent_padding_bytes)); 206 .WillOnce(Return(sent_padding_bytes));
207 EXPECT_EQ(sent_padding_bytes, 207 EXPECT_EQ(sent_padding_bytes,
208 packet_router_->TimeToSendPadding( 208 packet_router.TimeToSendPadding(
209 requested_padding_bytes, 209 requested_padding_bytes,
210 PacedPacketInfo(PacedPacketInfo::kNotAProbe, kProbeMinBytes, 210 PacedPacketInfo(PacedPacketInfo::kNotAProbe, kProbeMinBytes,
211 kProbeMinBytes))); 211 kProbeMinBytes)));
212 212
213 packet_router_->RemoveSendRtpModule(&rtp_1); 213 packet_router.RemoveSendRtpModule(&rtp_1);
214 214
215 // rtp_1 has been removed, try sending padding and make sure rtp_1 isn't asked 215 // rtp_1 has been removed, try sending padding and make sure rtp_1 isn't asked
216 // to send by not expecting any calls. Instead verify rtp_2 is called. 216 // to send by not expecting any calls. Instead verify rtp_2 is called.
217 EXPECT_CALL(rtp_2, SendingMedia()).Times(1).WillOnce(Return(true)); 217 EXPECT_CALL(rtp_2, SendingMedia()).Times(1).WillOnce(Return(true));
218 EXPECT_CALL(rtp_2, HasBweExtensions()).Times(1).WillOnce(Return(true)); 218 EXPECT_CALL(rtp_2, HasBweExtensions()).Times(1).WillOnce(Return(true));
219 EXPECT_CALL(rtp_2, TimeToSendPadding(requested_padding_bytes, _)).Times(1); 219 EXPECT_CALL(rtp_2, TimeToSendPadding(requested_padding_bytes, _)).Times(1);
220 EXPECT_EQ(0u, 220 EXPECT_EQ(0u,
221 packet_router_->TimeToSendPadding( 221 packet_router.TimeToSendPadding(
222 requested_padding_bytes, 222 requested_padding_bytes,
223 PacedPacketInfo(PacedPacketInfo::kNotAProbe, kProbeMinBytes, 223 PacedPacketInfo(PacedPacketInfo::kNotAProbe, kProbeMinBytes,
224 kProbeMinBytes))); 224 kProbeMinBytes)));
225 225
226 packet_router_->RemoveSendRtpModule(&rtp_2); 226 packet_router.RemoveSendRtpModule(&rtp_2);
227 } 227 }
228 228
229 TEST_F(PacketRouterTest, SenderOnlyFunctionsRespectSendingMedia) { 229 TEST(PacketRouterTest, SenderOnlyFunctionsRespectSendingMedia) {
230 PacketRouter packet_router;
230 NiceMock<MockRtpRtcp> rtp; 231 NiceMock<MockRtpRtcp> rtp;
231 packet_router_->AddSendRtpModule(&rtp, false); 232 packet_router.AddSendRtpModule(&rtp, false);
232 static const uint16_t kSsrc = 1234; 233 static const uint16_t kSsrc = 1234;
233 EXPECT_CALL(rtp, SSRC()).WillRepeatedly(Return(kSsrc)); 234 EXPECT_CALL(rtp, SSRC()).WillRepeatedly(Return(kSsrc));
234 EXPECT_CALL(rtp, SendingMedia()).WillRepeatedly(Return(false)); 235 EXPECT_CALL(rtp, SendingMedia()).WillRepeatedly(Return(false));
235 236
236 // Verify that TimeToSendPacket does not end up in a receiver. 237 // Verify that TimeToSendPacket does not end up in a receiver.
237 EXPECT_CALL(rtp, TimeToSendPacket(_, _, _, _, _)).Times(0); 238 EXPECT_CALL(rtp, TimeToSendPacket(_, _, _, _, _)).Times(0);
238 EXPECT_TRUE(packet_router_->TimeToSendPacket( 239 EXPECT_TRUE(packet_router.TimeToSendPacket(
239 kSsrc, 1, 1, false, PacedPacketInfo(PacedPacketInfo::kNotAProbe, 240 kSsrc, 1, 1, false, PacedPacketInfo(PacedPacketInfo::kNotAProbe,
240 kProbeMinBytes, kProbeMinBytes))); 241 kProbeMinBytes, kProbeMinBytes)));
241 // Verify that TimeToSendPadding does not end up in a receiver. 242 // Verify that TimeToSendPadding does not end up in a receiver.
242 EXPECT_CALL(rtp, TimeToSendPadding(_, _)).Times(0); 243 EXPECT_CALL(rtp, TimeToSendPadding(_, _)).Times(0);
243 EXPECT_EQ(0u, 244 EXPECT_EQ(0u,
244 packet_router_->TimeToSendPadding( 245 packet_router.TimeToSendPadding(
245 200, PacedPacketInfo(PacedPacketInfo::kNotAProbe, 246 200, PacedPacketInfo(PacedPacketInfo::kNotAProbe,
246 kProbeMinBytes, kProbeMinBytes))); 247 kProbeMinBytes, kProbeMinBytes)));
247 248
248 packet_router_->RemoveSendRtpModule(&rtp); 249 packet_router.RemoveSendRtpModule(&rtp);
249 } 250 }
250 251
251 TEST_F(PacketRouterTest, AllocateSequenceNumbers) { 252 TEST(PacketRouterTest, AllocateSequenceNumbers) {
253 PacketRouter packet_router;
254
252 const uint16_t kStartSeq = 0xFFF0; 255 const uint16_t kStartSeq = 0xFFF0;
253 const size_t kNumPackets = 32; 256 const size_t kNumPackets = 32;
254 257
255 packet_router_->SetTransportWideSequenceNumber(kStartSeq - 1); 258 packet_router.SetTransportWideSequenceNumber(kStartSeq - 1);
256 259
257 for (size_t i = 0; i < kNumPackets; ++i) { 260 for (size_t i = 0; i < kNumPackets; ++i) {
258 uint16_t seq = packet_router_->AllocateSequenceNumber(); 261 uint16_t seq = packet_router.AllocateSequenceNumber();
259 uint32_t expected_unwrapped_seq = static_cast<uint32_t>(kStartSeq) + i; 262 uint32_t expected_unwrapped_seq = static_cast<uint32_t>(kStartSeq) + i;
260 EXPECT_EQ(static_cast<uint16_t>(expected_unwrapped_seq & 0xFFFF), seq); 263 EXPECT_EQ(static_cast<uint16_t>(expected_unwrapped_seq & 0xFFFF), seq);
261 } 264 }
262 } 265 }
263 266
264 TEST_F(PacketRouterTest, SendTransportFeedback) { 267 TEST(PacketRouterTest, SendTransportFeedback) {
268 PacketRouter packet_router;
265 NiceMock<MockRtpRtcp> rtp_1; 269 NiceMock<MockRtpRtcp> rtp_1;
266 NiceMock<MockRtpRtcp> rtp_2; 270 NiceMock<MockRtpRtcp> rtp_2;
267 packet_router_->AddSendRtpModule(&rtp_1, false); 271
268 packet_router_->AddReceiveRtpModule(&rtp_2, false); 272 packet_router.AddSendRtpModule(&rtp_1, false);
273 packet_router.AddReceiveRtpModule(&rtp_2, false);
269 274
270 rtcp::TransportFeedback feedback; 275 rtcp::TransportFeedback feedback;
271 EXPECT_CALL(rtp_1, SendFeedbackPacket(_)).Times(1).WillOnce(Return(true)); 276 EXPECT_CALL(rtp_1, SendFeedbackPacket(_)).Times(1).WillOnce(Return(true));
272 packet_router_->SendTransportFeedback(&feedback); 277 packet_router.SendTransportFeedback(&feedback);
273 packet_router_->RemoveSendRtpModule(&rtp_1); 278 packet_router.RemoveSendRtpModule(&rtp_1);
274 EXPECT_CALL(rtp_2, SendFeedbackPacket(_)).Times(1).WillOnce(Return(true)); 279 EXPECT_CALL(rtp_2, SendFeedbackPacket(_)).Times(1).WillOnce(Return(true));
275 packet_router_->SendTransportFeedback(&feedback); 280 packet_router.SendTransportFeedback(&feedback);
276 packet_router_->RemoveReceiveRtpModule(&rtp_2); 281 packet_router.RemoveReceiveRtpModule(&rtp_2);
277 } 282 }
278 283
279 #if RTC_DCHECK_IS_ON && GTEST_HAS_DEATH_TEST && !defined(WEBRTC_ANDROID) 284 #if RTC_DCHECK_IS_ON && GTEST_HAS_DEATH_TEST && !defined(WEBRTC_ANDROID)
280 TEST_F(PacketRouterTest, DoubleRegistrationOfSendModuleDisallowed) { 285 TEST(PacketRouterTest, DoubleRegistrationOfSendModuleDisallowed) {
286 PacketRouter packet_router;
281 NiceMock<MockRtpRtcp> module; 287 NiceMock<MockRtpRtcp> module;
282 288
283 constexpr bool remb_candidate = false; // Value irrelevant. 289 constexpr bool remb_candidate = false; // Value irrelevant.
284 packet_router_->AddSendRtpModule(&module, remb_candidate); 290 packet_router.AddSendRtpModule(&module, remb_candidate);
285 EXPECT_DEATH(packet_router_->AddSendRtpModule(&module, remb_candidate), ""); 291 EXPECT_DEATH(packet_router.AddSendRtpModule(&module, remb_candidate), "");
286 292
287 // Test tear-down 293 // Test tear-down
288 packet_router_->RemoveSendRtpModule(&module); 294 packet_router.RemoveSendRtpModule(&module);
289 } 295 }
290 296
291 TEST_F(PacketRouterTest, DoubleRegistrationOfReceiveModuleDisallowed) { 297 TEST(PacketRouterTest, DoubleRegistrationOfReceiveModuleDisallowed) {
298 PacketRouter packet_router;
292 NiceMock<MockRtpRtcp> module; 299 NiceMock<MockRtpRtcp> module;
293 300
294 constexpr bool remb_candidate = false; // Value irrelevant. 301 constexpr bool remb_candidate = false; // Value irrelevant.
295 packet_router_->AddReceiveRtpModule(&module, remb_candidate); 302 packet_router.AddReceiveRtpModule(&module, remb_candidate);
296 EXPECT_DEATH(packet_router_->AddReceiveRtpModule(&module, remb_candidate), 303 EXPECT_DEATH(packet_router.AddReceiveRtpModule(&module, remb_candidate), "");
297 "");
298 304
299 // Test tear-down 305 // Test tear-down
300 packet_router_->RemoveReceiveRtpModule(&module); 306 packet_router.RemoveReceiveRtpModule(&module);
301 } 307 }
302 308
303 TEST_F(PacketRouterTest, RemovalOfNeverAddedSendModuleDisallowed) { 309 TEST(PacketRouterTest, RemovalOfNeverAddedSendModuleDisallowed) {
310 PacketRouter packet_router;
304 NiceMock<MockRtpRtcp> module; 311 NiceMock<MockRtpRtcp> module;
305 312
306 EXPECT_DEATH(packet_router_->RemoveSendRtpModule(&module), ""); 313 EXPECT_DEATH(packet_router.RemoveSendRtpModule(&module), "");
307 } 314 }
308 315
309 TEST_F(PacketRouterTest, RemovalOfNeverAddedReceiveModuleDisallowed) { 316 TEST(PacketRouterTest, RemovalOfNeverAddedReceiveModuleDisallowed) {
317 PacketRouter packet_router;
310 NiceMock<MockRtpRtcp> module; 318 NiceMock<MockRtpRtcp> module;
311 319
312 EXPECT_DEATH(packet_router_->RemoveReceiveRtpModule(&module), ""); 320 EXPECT_DEATH(packet_router.RemoveReceiveRtpModule(&module), "");
313 } 321 }
314 #endif // RTC_DCHECK_IS_ON && GTEST_HAS_DEATH_TEST && !defined(WEBRTC_ANDROID) 322 #endif // RTC_DCHECK_IS_ON && GTEST_HAS_DEATH_TEST && !defined(WEBRTC_ANDROID)
315 323
316 // TODO(eladalon): Remove this test; it should be covered by: 324 // TODO(eladalon): Remove this test; it should be covered by:
317 // 1. SendCandidatePreferredOverReceiveCandidate_SendModuleAddedFirst 325 // 1. SendCandidatePreferredOverReceiveCandidate_SendModuleAddedFirst
318 // 2. SendCandidatePreferredOverReceiveCandidate_ReceiveModuleAddedFirst 326 // 2. SendCandidatePreferredOverReceiveCandidate_ReceiveModuleAddedFirst
319 // 3. LowerEstimateToSendRemb 327 // 3. LowerEstimateToSendRemb
320 // (Not removing in this CL to prove it doesn't break this test.) 328 // (Not removing in this CL to prove it doesn't break this test.)
321 TEST(PacketRouterRembTest, PreferSendModuleOverReceiveModule) { 329 TEST(PacketRouterRembTest, PreferSendModuleOverReceiveModule) {
322 rtc::ScopedFakeClock clock; 330 rtc::ScopedFakeClock clock;
(...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after
698 EXPECT_CALL(receive_module, SetREMBData(bitrate_estimate, ssrcs)).Times(1); 706 EXPECT_CALL(receive_module, SetREMBData(bitrate_estimate, ssrcs)).Times(1);
699 707
700 clock.AdvanceTime(rtc::TimeDelta::FromMilliseconds(1000)); 708 clock.AdvanceTime(rtc::TimeDelta::FromMilliseconds(1000));
701 packet_router.OnReceiveBitrateChanged(ssrcs, bitrate_estimate); 709 packet_router.OnReceiveBitrateChanged(ssrcs, bitrate_estimate);
702 710
703 // Test tear-down 711 // Test tear-down
704 packet_router.RemoveReceiveRtpModule(&receive_module); 712 packet_router.RemoveReceiveRtpModule(&receive_module);
705 } 713 }
706 714
707 } // namespace webrtc 715 } // namespace webrtc
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698