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

Side by Side Diff: webrtc/modules/rtp_rtcp/source/rtp_packet_history_unittest.cc

Issue 1414563003: Remove time constraint on first retransmit of a packet. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Updated unit tests Created 5 years, 2 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/rtp_rtcp/source/rtp_packet_history.cc ('k') | 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) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 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 * This file includes unit tests for the RTPPacketHistory. 10 * This file includes unit tests for the RTPPacketHistory.
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 154
155 size_t len_out = kMaxPacketLength; 155 size_t len_out = kMaxPacketLength;
156 int64_t time; 156 int64_t time;
157 EXPECT_TRUE(hist_->GetPacketAndSetSendTime(kSeqNum, 0, false, packet_out_, 157 EXPECT_TRUE(hist_->GetPacketAndSetSendTime(kSeqNum, 0, false, packet_out_,
158 &len_out, &time)); 158 &len_out, &time));
159 EXPECT_EQ(len, len_out); 159 EXPECT_EQ(len, len_out);
160 EXPECT_EQ(capture_time_ms, time); 160 EXPECT_EQ(capture_time_ms, time);
161 } 161 }
162 162
163 TEST_F(RtpPacketHistoryTest, MinResendTime) { 163 TEST_F(RtpPacketHistoryTest, MinResendTime) {
164 static const int64_t kMinRetransmitIntervalMs = 100;
165
164 hist_->SetStorePacketsStatus(true, 10); 166 hist_->SetStorePacketsStatus(true, 10);
165 size_t len = 0; 167 size_t len = 0;
166 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); 168 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds();
167 CreateRtpPacket(kSeqNum, kSsrc, kPayload, kTimestamp, packet_, &len); 169 CreateRtpPacket(kSeqNum, kSsrc, kPayload, kTimestamp, packet_, &len);
168 EXPECT_EQ(0, hist_->PutRTPPacket(packet_, len, capture_time_ms, 170 EXPECT_EQ(0, hist_->PutRTPPacket(packet_, len, capture_time_ms,
169 kAllowRetransmission)); 171 kAllowRetransmission));
170 172
173 // First transmission: TimeToSendPacket() call from pacer.
171 int64_t time; 174 int64_t time;
172 len = kMaxPacketLength; 175 len = kMaxPacketLength;
173 EXPECT_TRUE(hist_->GetPacketAndSetSendTime(kSeqNum, 100, false, packet_, &len, 176 EXPECT_TRUE(
174 &time)); 177 hist_->GetPacketAndSetSendTime(kSeqNum, 0, false, packet_, &len, &time));
175 fake_clock_.AdvanceTimeMilliseconds(100); 178
179 fake_clock_.AdvanceTimeMilliseconds(kMinRetransmitIntervalMs);
176 // Time has elapsed. 180 // Time has elapsed.
177 len = kMaxPacketLength; 181 len = kMaxPacketLength;
178 EXPECT_TRUE(hist_->GetPacketAndSetSendTime(kSeqNum, 100, false, packet_, &len, 182 EXPECT_TRUE(hist_->GetPacketAndSetSendTime(kSeqNum, kMinRetransmitIntervalMs,
179 &time)); 183 true, packet_, &len, &time));
180 EXPECT_GT(len, 0u); 184 EXPECT_GT(len, 0u);
181 EXPECT_EQ(capture_time_ms, time); 185 EXPECT_EQ(capture_time_ms, time);
182 186
187 fake_clock_.AdvanceTimeMilliseconds(kMinRetransmitIntervalMs - 1);
183 // Time has not elapsed. Packet should be found, but no bytes copied. 188 // Time has not elapsed. Packet should be found, but no bytes copied.
184 len = kMaxPacketLength; 189 len = kMaxPacketLength;
185 EXPECT_FALSE(hist_->GetPacketAndSetSendTime(kSeqNum, 101, false, packet_, 190 EXPECT_FALSE(hist_->GetPacketAndSetSendTime(kSeqNum, kMinRetransmitIntervalMs,
186 &len, &time)); 191 true, packet_, &len, &time));
192 }
193
194 TEST_F(RtpPacketHistoryTest, EarlyFirstResend) {
195 static const int64_t kMinRetransmitIntervalMs = 100;
196
197 hist_->SetStorePacketsStatus(true, 10);
198 size_t len = 0;
199 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds();
200 CreateRtpPacket(kSeqNum, kSsrc, kPayload, kTimestamp, packet_, &len);
201 EXPECT_EQ(0, hist_->PutRTPPacket(packet_, len, capture_time_ms,
202 kAllowRetransmission));
203
204 // First transmission: TimeToSendPacket() call from pacer.
205 int64_t time;
206 len = kMaxPacketLength;
207 EXPECT_TRUE(
208 hist_->GetPacketAndSetSendTime(kSeqNum, 0, false, packet_, &len, &time));
209
210 fake_clock_.AdvanceTimeMilliseconds(kMinRetransmitIntervalMs - 1);
211 // Time has not elapsed, but this is the first retransmission request so
212 // allow anyway.
213 len = kMaxPacketLength;
214 EXPECT_TRUE(hist_->GetPacketAndSetSendTime(kSeqNum, kMinRetransmitIntervalMs,
215 true, packet_, &len, &time));
216 EXPECT_GT(len, 0u);
217 EXPECT_EQ(capture_time_ms, time);
218
219 fake_clock_.AdvanceTimeMilliseconds(kMinRetransmitIntervalMs - 1);
220 // Time has not elapsed. Packet should be found, but no bytes copied.
221 len = kMaxPacketLength;
222 EXPECT_FALSE(hist_->GetPacketAndSetSendTime(kSeqNum, kMinRetransmitIntervalMs,
223 true, packet_, &len, &time));
187 } 224 }
188 225
189 TEST_F(RtpPacketHistoryTest, DynamicExpansion) { 226 TEST_F(RtpPacketHistoryTest, DynamicExpansion) {
190 hist_->SetStorePacketsStatus(true, 10); 227 hist_->SetStorePacketsStatus(true, 10);
191 size_t len; 228 size_t len;
192 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); 229 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds();
193 int64_t time; 230 int64_t time;
194 231
195 // Add 4 packets, and then send them. 232 // Add 4 packets, and then send them.
196 for (int i = 0; i < 4; ++i) { 233 for (int i = 0; i < 4; ++i) {
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
246 283
247 // Retransmit all packets currently in buffer. 284 // Retransmit all packets currently in buffer.
248 for (size_t i = 1; i < kMaxHistoryCapacity + 1; ++i) { 285 for (size_t i = 1; i < kMaxHistoryCapacity + 1; ++i) {
249 len = kMaxPacketLength; 286 len = kMaxPacketLength;
250 EXPECT_TRUE(hist_->GetPacketAndSetSendTime(kSeqNum + i, 100, false, packet_, 287 EXPECT_TRUE(hist_->GetPacketAndSetSendTime(kSeqNum + i, 100, false, packet_,
251 &len, &time)); 288 &len, &time));
252 } 289 }
253 } 290 }
254 291
255 } // namespace webrtc 292 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtp_packet_history.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698