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

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

Issue 2820353002: Fix crash when all acks in a feedback message arrive too late. (Closed)
Patch Set: Add test. 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
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2016 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
11 #include "webrtc/test/gtest.h" 11 #include "webrtc/test/gtest.h"
12 #include "webrtc/base/constructormagic.h" 12 #include "webrtc/base/constructormagic.h"
13 #include "webrtc/modules/pacing/paced_sender.h" 13 #include "webrtc/modules/pacing/paced_sender.h"
14 #include "webrtc/modules/congestion_controller/delay_based_bwe.h" 14 #include "webrtc/modules/congestion_controller/delay_based_bwe.h"
15 #include "webrtc/modules/congestion_controller/delay_based_bwe_unittest_helper.h " 15 #include "webrtc/modules/congestion_controller/delay_based_bwe_unittest_helper.h "
16 #include "webrtc/system_wrappers/include/clock.h" 16 #include "webrtc/system_wrappers/include/clock.h"
17 #include "webrtc/test/field_trial.h" 17 #include "webrtc/test/field_trial.h"
18 18
19 namespace webrtc { 19 namespace webrtc {
20 20
21 namespace { 21 namespace {
22 constexpr int kNumProbesCluster0 = 5; 22 constexpr int kNumProbesCluster0 = 5;
23 constexpr int kNumProbesCluster1 = 8; 23 constexpr int kNumProbesCluster1 = 8;
24 const PacedPacketInfo kPacingInfo0(0, kNumProbesCluster0, 2000); 24 const PacedPacketInfo kPacingInfo0(0, kNumProbesCluster0, 2000);
25 const PacedPacketInfo kPacingInfo1(1, kNumProbesCluster1, 4000); 25 const PacedPacketInfo kPacingInfo1(1, kNumProbesCluster1, 4000);
26 } // namespace 26 } // namespace
27 27
28 TEST_F(DelayBasedBweTest, NoCrashEmptyFeedback) {
29 std::vector<PacketFeedback> packet_feedback_vector;
30 bitrate_estimator_->IncomingPacketFeedbackVector(packet_feedback_vector);
31 }
32
33 TEST_F(DelayBasedBweTest, NoCrashOnlyLostFeedback) {
34 std::vector<PacketFeedback> packet_feedback_vector;
35 packet_feedback_vector.push_back(
36 PacketFeedback(-1, -1, 0, 1500, PacedPacketInfo()));
37 packet_feedback_vector.push_back(
38 PacketFeedback(-1, -1, 1, 1500, PacedPacketInfo()));
39 bitrate_estimator_->IncomingPacketFeedbackVector(packet_feedback_vector);
40 }
41
28 TEST_F(DelayBasedBweTest, ProbeDetection) { 42 TEST_F(DelayBasedBweTest, ProbeDetection) {
29 int64_t now_ms = clock_.TimeInMilliseconds(); 43 int64_t now_ms = clock_.TimeInMilliseconds();
30 uint16_t seq_num = 0; 44 uint16_t seq_num = 0;
31 45
32 // First burst sent at 8 * 1000 / 10 = 800 kbps. 46 // First burst sent at 8 * 1000 / 10 = 800 kbps.
33 for (int i = 0; i < kNumProbesCluster0; ++i) { 47 for (int i = 0; i < kNumProbesCluster0; ++i) {
34 clock_.AdvanceTimeMilliseconds(10); 48 clock_.AdvanceTimeMilliseconds(10);
35 now_ms = clock_.TimeInMilliseconds(); 49 now_ms = clock_.TimeInMilliseconds();
36 IncomingFeedback(now_ms, now_ms, seq_num++, 1000, kPacingInfo0); 50 IncomingFeedback(now_ms, now_ms, seq_num++, 1000, kPacingInfo0);
37 } 51 }
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 178
165 TEST_F(DelayBasedBweTest, TestLongTimeoutAndWrap) { 179 TEST_F(DelayBasedBweTest, TestLongTimeoutAndWrap) {
166 // Simulate a client leaving and rejoining the call after some multiple of 180 // Simulate a client leaving and rejoining the call after some multiple of
167 // 64 seconds later. This will cause a zero difference in abs send times due 181 // 64 seconds later. This will cause a zero difference in abs send times due
168 // to the wrap, but a big difference in arrival time, if streams aren't 182 // to the wrap, but a big difference in arrival time, if streams aren't
169 // properly timed out. 183 // properly timed out.
170 TestWrappingHelper(10 * 64); 184 TestWrappingHelper(10 * 64);
171 } 185 }
172 186
173 } // namespace webrtc 187 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698