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

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

Issue 2774623006: Let PacketRouter separate send and receive modules. (Closed)
Patch Set: Eliminate std::remove. Created 3 years, 8 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 | « webrtc/modules/pacing/packet_router.cc ('k') | webrtc/test/mock_voe_channel_proxy.h » ('j') | 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 21 matching lines...) Expand all
32 PacketRouterTest() : packet_router_(new PacketRouter()) {} 32 PacketRouterTest() : packet_router_(new PacketRouter()) {}
33 protected: 33 protected:
34 static const int kProbeMinProbes = 5; 34 static const int kProbeMinProbes = 5;
35 static const int kProbeMinBytes = 1000; 35 static const int kProbeMinBytes = 1000;
36 const std::unique_ptr<PacketRouter> packet_router_; 36 const std::unique_ptr<PacketRouter> packet_router_;
37 }; 37 };
38 38
39 TEST_F(PacketRouterTest, TimeToSendPacket) { 39 TEST_F(PacketRouterTest, TimeToSendPacket) {
40 MockRtpRtcp rtp_1; 40 MockRtpRtcp rtp_1;
41 MockRtpRtcp rtp_2; 41 MockRtpRtcp rtp_2;
42 packet_router_->AddRtpModule(&rtp_1); 42 packet_router_->AddSendRtpModule(&rtp_1);
43 packet_router_->AddRtpModule(&rtp_2); 43 packet_router_->AddSendRtpModule(&rtp_2);
44 44
45 const uint16_t kSsrc1 = 1234; 45 const uint16_t kSsrc1 = 1234;
46 uint16_t sequence_number = 17; 46 uint16_t sequence_number = 17;
47 uint64_t timestamp = 7890; 47 uint64_t timestamp = 7890;
48 bool retransmission = false; 48 bool retransmission = false;
49 49
50 // Send on the first module by letting rtp_1 be sending with correct ssrc. 50 // Send on the first module by letting rtp_1 be sending with correct ssrc.
51 EXPECT_CALL(rtp_1, SendingMedia()).Times(1).WillOnce(Return(true)); 51 EXPECT_CALL(rtp_1, SendingMedia()).Times(1).WillOnce(Return(true));
52 EXPECT_CALL(rtp_1, SSRC()).Times(1).WillOnce(Return(kSsrc1)); 52 EXPECT_CALL(rtp_1, SSRC()).Times(1).WillOnce(Return(kSsrc1));
53 EXPECT_CALL(rtp_1, TimeToSendPacket( 53 EXPECT_CALL(rtp_1, TimeToSendPacket(
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 EXPECT_CALL(rtp_1, SendingMedia()).Times(1).WillOnce(Return(true)); 91 EXPECT_CALL(rtp_1, SendingMedia()).Times(1).WillOnce(Return(true));
92 EXPECT_CALL(rtp_1, SSRC()).Times(1).WillOnce(Return(kSsrc1)); 92 EXPECT_CALL(rtp_1, SSRC()).Times(1).WillOnce(Return(kSsrc1));
93 EXPECT_CALL(rtp_2, SendingMedia()).Times(1).WillOnce(Return(true)); 93 EXPECT_CALL(rtp_2, SendingMedia()).Times(1).WillOnce(Return(true));
94 EXPECT_CALL(rtp_2, SSRC()).Times(1).WillOnce(Return(kSsrc2)); 94 EXPECT_CALL(rtp_2, SSRC()).Times(1).WillOnce(Return(kSsrc2));
95 EXPECT_CALL(rtp_1, TimeToSendPacket(_, _, _, _, _)).Times(0); 95 EXPECT_CALL(rtp_1, TimeToSendPacket(_, _, _, _, _)).Times(0);
96 EXPECT_CALL(rtp_2, TimeToSendPacket(_, _, _, _, _)).Times(0); 96 EXPECT_CALL(rtp_2, TimeToSendPacket(_, _, _, _, _)).Times(0);
97 EXPECT_TRUE(packet_router_->TimeToSendPacket( 97 EXPECT_TRUE(packet_router_->TimeToSendPacket(
98 kSsrc1 + kSsrc2, sequence_number, timestamp, retransmission, 98 kSsrc1 + kSsrc2, sequence_number, timestamp, retransmission,
99 PacedPacketInfo(1, kProbeMinProbes, kProbeMinBytes))); 99 PacedPacketInfo(1, kProbeMinProbes, kProbeMinBytes)));
100 100
101 packet_router_->RemoveRtpModule(&rtp_1); 101 packet_router_->RemoveSendRtpModule(&rtp_1);
102 102
103 // rtp_1 has been removed, try sending a packet on that ssrc and make sure 103 // rtp_1 has been removed, try sending a packet on that ssrc and make sure
104 // it is dropped as expected by not expecting any calls to rtp_1. 104 // it is dropped as expected by not expecting any calls to rtp_1.
105 EXPECT_CALL(rtp_2, SendingMedia()).Times(1).WillOnce(Return(true)); 105 EXPECT_CALL(rtp_2, SendingMedia()).Times(1).WillOnce(Return(true));
106 EXPECT_CALL(rtp_2, SSRC()).Times(1).WillOnce(Return(kSsrc2)); 106 EXPECT_CALL(rtp_2, SSRC()).Times(1).WillOnce(Return(kSsrc2));
107 EXPECT_CALL(rtp_2, TimeToSendPacket(_, _, _, _, _)).Times(0); 107 EXPECT_CALL(rtp_2, TimeToSendPacket(_, _, _, _, _)).Times(0);
108 EXPECT_TRUE(packet_router_->TimeToSendPacket( 108 EXPECT_TRUE(packet_router_->TimeToSendPacket(
109 kSsrc1, sequence_number, timestamp, retransmission, 109 kSsrc1, sequence_number, timestamp, retransmission,
110 PacedPacketInfo(PacedPacketInfo::kNotAProbe, kProbeMinBytes, 110 PacedPacketInfo(PacedPacketInfo::kNotAProbe, kProbeMinBytes,
111 kProbeMinBytes))); 111 kProbeMinBytes)));
112 112
113 packet_router_->RemoveRtpModule(&rtp_2); 113 packet_router_->RemoveSendRtpModule(&rtp_2);
114 } 114 }
115 115
116 TEST_F(PacketRouterTest, TimeToSendPadding) { 116 TEST_F(PacketRouterTest, TimeToSendPadding) {
117 const uint16_t kSsrc1 = 1234; 117 const uint16_t kSsrc1 = 1234;
118 const uint16_t kSsrc2 = 4567; 118 const uint16_t kSsrc2 = 4567;
119 119
120 MockRtpRtcp rtp_1; 120 MockRtpRtcp rtp_1;
121 EXPECT_CALL(rtp_1, RtxSendStatus()).WillOnce(Return(kRtxOff)); 121 EXPECT_CALL(rtp_1, RtxSendStatus()).WillOnce(Return(kRtxOff));
122 EXPECT_CALL(rtp_1, SSRC()).WillRepeatedly(Return(kSsrc1)); 122 EXPECT_CALL(rtp_1, SSRC()).WillRepeatedly(Return(kSsrc1));
123 MockRtpRtcp rtp_2; 123 MockRtpRtcp rtp_2;
124 // rtp_2 will be prioritized for padding. 124 // rtp_2 will be prioritized for padding.
125 EXPECT_CALL(rtp_2, RtxSendStatus()).WillOnce(Return(kRtxRedundantPayloads)); 125 EXPECT_CALL(rtp_2, RtxSendStatus()).WillOnce(Return(kRtxRedundantPayloads));
126 EXPECT_CALL(rtp_2, SSRC()).WillRepeatedly(Return(kSsrc2)); 126 EXPECT_CALL(rtp_2, SSRC()).WillRepeatedly(Return(kSsrc2));
127 packet_router_->AddRtpModule(&rtp_1); 127 packet_router_->AddSendRtpModule(&rtp_1);
128 packet_router_->AddRtpModule(&rtp_2); 128 packet_router_->AddSendRtpModule(&rtp_2);
129 129
130 // Default configuration, sending padding on all modules sending media, 130 // Default configuration, sending padding on all modules sending media,
131 // ordered by priority (based on rtx mode). 131 // ordered by priority (based on rtx mode).
132 const size_t requested_padding_bytes = 1000; 132 const size_t requested_padding_bytes = 1000;
133 const size_t sent_padding_bytes = 890; 133 const size_t sent_padding_bytes = 890;
134 EXPECT_CALL(rtp_2, SendingMedia()).Times(1).WillOnce(Return(true)); 134 EXPECT_CALL(rtp_2, SendingMedia()).Times(1).WillOnce(Return(true));
135 EXPECT_CALL(rtp_2, HasBweExtensions()).Times(1).WillOnce(Return(true)); 135 EXPECT_CALL(rtp_2, HasBweExtensions()).Times(1).WillOnce(Return(true));
136 EXPECT_CALL(rtp_2, 136 EXPECT_CALL(rtp_2,
137 TimeToSendPadding(requested_padding_bytes, 137 TimeToSendPadding(requested_padding_bytes,
138 Field(&PacedPacketInfo::probe_cluster_id, 111))) 138 Field(&PacedPacketInfo::probe_cluster_id, 111)))
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 EXPECT_CALL(rtp_2, HasBweExtensions()).Times(1).WillOnce(Return(true)); 184 EXPECT_CALL(rtp_2, HasBweExtensions()).Times(1).WillOnce(Return(true));
185 EXPECT_CALL(rtp_2, TimeToSendPadding(requested_padding_bytes, _)) 185 EXPECT_CALL(rtp_2, TimeToSendPadding(requested_padding_bytes, _))
186 .Times(1) 186 .Times(1)
187 .WillOnce(Return(sent_padding_bytes)); 187 .WillOnce(Return(sent_padding_bytes));
188 EXPECT_EQ(sent_padding_bytes, 188 EXPECT_EQ(sent_padding_bytes,
189 packet_router_->TimeToSendPadding( 189 packet_router_->TimeToSendPadding(
190 requested_padding_bytes, 190 requested_padding_bytes,
191 PacedPacketInfo(PacedPacketInfo::kNotAProbe, kProbeMinBytes, 191 PacedPacketInfo(PacedPacketInfo::kNotAProbe, kProbeMinBytes,
192 kProbeMinBytes))); 192 kProbeMinBytes)));
193 193
194 packet_router_->RemoveRtpModule(&rtp_1); 194 packet_router_->RemoveSendRtpModule(&rtp_1);
195 195
196 // rtp_1 has been removed, try sending padding and make sure rtp_1 isn't asked 196 // rtp_1 has been removed, try sending padding and make sure rtp_1 isn't asked
197 // to send by not expecting any calls. Instead verify rtp_2 is called. 197 // to send by not expecting any calls. Instead verify rtp_2 is called.
198 EXPECT_CALL(rtp_2, SendingMedia()).Times(1).WillOnce(Return(true)); 198 EXPECT_CALL(rtp_2, SendingMedia()).Times(1).WillOnce(Return(true));
199 EXPECT_CALL(rtp_2, HasBweExtensions()).Times(1).WillOnce(Return(true)); 199 EXPECT_CALL(rtp_2, HasBweExtensions()).Times(1).WillOnce(Return(true));
200 EXPECT_CALL(rtp_2, TimeToSendPadding(requested_padding_bytes, _)).Times(1); 200 EXPECT_CALL(rtp_2, TimeToSendPadding(requested_padding_bytes, _)).Times(1);
201 EXPECT_EQ(0u, 201 EXPECT_EQ(0u,
202 packet_router_->TimeToSendPadding( 202 packet_router_->TimeToSendPadding(
203 requested_padding_bytes, 203 requested_padding_bytes,
204 PacedPacketInfo(PacedPacketInfo::kNotAProbe, kProbeMinBytes, 204 PacedPacketInfo(PacedPacketInfo::kNotAProbe, kProbeMinBytes,
205 kProbeMinBytes))); 205 kProbeMinBytes)));
206 206
207 packet_router_->RemoveRtpModule(&rtp_2); 207 packet_router_->RemoveSendRtpModule(&rtp_2);
208 } 208 }
209 209
210 TEST_F(PacketRouterTest, SenderOnlyFunctionsRespectSendingMedia) { 210 TEST_F(PacketRouterTest, SenderOnlyFunctionsRespectSendingMedia) {
211 MockRtpRtcp rtp; 211 MockRtpRtcp rtp;
212 packet_router_->AddRtpModule(&rtp); 212 packet_router_->AddSendRtpModule(&rtp);
213 static const uint16_t kSsrc = 1234; 213 static const uint16_t kSsrc = 1234;
214 EXPECT_CALL(rtp, SSRC()).WillRepeatedly(Return(kSsrc)); 214 EXPECT_CALL(rtp, SSRC()).WillRepeatedly(Return(kSsrc));
215 EXPECT_CALL(rtp, SendingMedia()).WillRepeatedly(Return(false)); 215 EXPECT_CALL(rtp, SendingMedia()).WillRepeatedly(Return(false));
216 216
217 // Verify that TimeToSendPacket does not end up in a receiver. 217 // Verify that TimeToSendPacket does not end up in a receiver.
218 EXPECT_CALL(rtp, TimeToSendPacket(_, _, _, _, _)).Times(0); 218 EXPECT_CALL(rtp, TimeToSendPacket(_, _, _, _, _)).Times(0);
219 EXPECT_TRUE(packet_router_->TimeToSendPacket( 219 EXPECT_TRUE(packet_router_->TimeToSendPacket(
220 kSsrc, 1, 1, false, PacedPacketInfo(PacedPacketInfo::kNotAProbe, 220 kSsrc, 1, 1, false, PacedPacketInfo(PacedPacketInfo::kNotAProbe,
221 kProbeMinBytes, kProbeMinBytes))); 221 kProbeMinBytes, kProbeMinBytes)));
222 // Verify that TimeToSendPadding does not end up in a receiver. 222 // Verify that TimeToSendPadding does not end up in a receiver.
223 EXPECT_CALL(rtp, TimeToSendPadding(_, _)).Times(0); 223 EXPECT_CALL(rtp, TimeToSendPadding(_, _)).Times(0);
224 EXPECT_EQ(0u, 224 EXPECT_EQ(0u,
225 packet_router_->TimeToSendPadding( 225 packet_router_->TimeToSendPadding(
226 200, PacedPacketInfo(PacedPacketInfo::kNotAProbe, 226 200, PacedPacketInfo(PacedPacketInfo::kNotAProbe,
227 kProbeMinBytes, kProbeMinBytes))); 227 kProbeMinBytes, kProbeMinBytes)));
228 228
229 packet_router_->RemoveRtpModule(&rtp); 229 packet_router_->RemoveSendRtpModule(&rtp);
230 } 230 }
231 231
232 TEST_F(PacketRouterTest, AllocateSequenceNumbers) { 232 TEST_F(PacketRouterTest, AllocateSequenceNumbers) {
233 const uint16_t kStartSeq = 0xFFF0; 233 const uint16_t kStartSeq = 0xFFF0;
234 const size_t kNumPackets = 32; 234 const size_t kNumPackets = 32;
235 235
236 packet_router_->SetTransportWideSequenceNumber(kStartSeq - 1); 236 packet_router_->SetTransportWideSequenceNumber(kStartSeq - 1);
237 237
238 for (size_t i = 0; i < kNumPackets; ++i) { 238 for (size_t i = 0; i < kNumPackets; ++i) {
239 uint16_t seq = packet_router_->AllocateSequenceNumber(); 239 uint16_t seq = packet_router_->AllocateSequenceNumber();
240 uint32_t expected_unwrapped_seq = static_cast<uint32_t>(kStartSeq) + i; 240 uint32_t expected_unwrapped_seq = static_cast<uint32_t>(kStartSeq) + i;
241 EXPECT_EQ(static_cast<uint16_t>(expected_unwrapped_seq & 0xFFFF), seq); 241 EXPECT_EQ(static_cast<uint16_t>(expected_unwrapped_seq & 0xFFFF), seq);
242 } 242 }
243 } 243 }
244 244
245 TEST_F(PacketRouterTest, SendFeedback) { 245 TEST_F(PacketRouterTest, SendFeedback) {
246 MockRtpRtcp rtp_1; 246 MockRtpRtcp rtp_1;
247 MockRtpRtcp rtp_2; 247 MockRtpRtcp rtp_2;
248 packet_router_->AddRtpModule(&rtp_1); 248 packet_router_->AddSendRtpModule(&rtp_1);
249 packet_router_->AddRtpModule(&rtp_2); 249 packet_router_->AddReceiveRtpModule(&rtp_2);
250 250
251 rtcp::TransportFeedback feedback; 251 rtcp::TransportFeedback feedback;
252 EXPECT_CALL(rtp_1, SendFeedbackPacket(_)).Times(1); 252 EXPECT_CALL(rtp_1, SendFeedbackPacket(_)).Times(1);
253 packet_router_->SendFeedback(&feedback); 253 packet_router_->SendFeedback(&feedback);
254 packet_router_->RemoveRtpModule(&rtp_1); 254 packet_router_->RemoveSendRtpModule(&rtp_1);
255 EXPECT_CALL(rtp_2, SendFeedbackPacket(_)).Times(1); 255 EXPECT_CALL(rtp_2, SendFeedbackPacket(_)).Times(1);
256 packet_router_->SendFeedback(&feedback); 256 packet_router_->SendFeedback(&feedback);
257 packet_router_->RemoveRtpModule(&rtp_2); 257 packet_router_->RemoveReceiveRtpModule(&rtp_2);
258 } 258 }
259 } // namespace webrtc 259 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/pacing/packet_router.cc ('k') | webrtc/test/mock_voe_channel_proxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698