1 /* 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 3 * 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 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10 11 #include "testing/gtest/include/gtest/gtest.h" 12 13 #include "webrtc/base/constructormagic.h" 14 #include "webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_unittest_helper.h" 15 16 namespace webrtc { 17 18 class RemoteBitrateEstimatorSingleTest : public RemoteBitrateEstimatorTest { 19 public: 20 static const uint32_t kRemoteBitrateEstimatorMinBitrateBps = 30000; 21 22 RemoteBitrateEstimatorSingleTest() {} 23 virtual void SetUp() { 24 bitrate_estimator_.reset(RemoteBitrateEstimatorFactory().Create( 25 bitrate_observer_.get(), 26 &clock_, 27 kMimdControl, 28 kRemoteBitrateEstimatorMinBitrateBps)); 29 } 30 protected: 31 DISALLOW_COPY_AND_ASSIGN(RemoteBitrateEstimatorSingleTest); 32 }; 33 34 TEST_F(RemoteBitrateEstimatorSingleTest, InitialBehavior) { 35 InitialBehaviorTestHelper(498075); 36 } 37 38 TEST_F(RemoteBitrateEstimatorSingleTest, RateIncreaseReordering) { 39 RateIncreaseReorderingTestHelper(498136); 40 } 41 42 TEST_F(RemoteBitrateEstimatorSingleTest, RateIncreaseRtpTimestamps) { 43 RateIncreaseRtpTimestampsTestHelper(); 44 } 45 46 // Verify that the time it takes for the estimator to reduce the bitrate when 47 // the capacity is tightened stays the same. 48 TEST_F(RemoteBitrateEstimatorSingleTest, CapacityDropOneStream) { 49 CapacityDropTestHelper(1, false, 956214, 367); 50 } 51 52 // Verify that the time it takes for the estimator to reduce the bitrate when 53 // the capacity is tightened stays the same. This test also verifies that we 54 // handle wrap-arounds in this scenario. 55 TEST_F(RemoteBitrateEstimatorSingleTest, CapacityDropOneStreamWrap) { 56 CapacityDropTestHelper(1, true, 956214, 367); 57 } 58 59 // Verify that the time it takes for the estimator to reduce the bitrate when 60 // the capacity is tightened stays the same. This test also verifies that we 61 // handle wrap-arounds in this scenario. This is a multi-stream test. 62 TEST_F(RemoteBitrateEstimatorSingleTest, CapacityDropTwoStreamsWrap) { 63 CapacityDropTestHelper(2, true, 927088, 267); 64 } 65 66 // Verify that the time it takes for the estimator to reduce the bitrate when 67 // the capacity is tightened stays the same. This test also verifies that we 68 // handle wrap-arounds in this scenario. This is a multi-stream test. 69 TEST_F(RemoteBitrateEstimatorSingleTest, CapacityDropThreeStreamsWrap) { 70 CapacityDropTestHelper(3, true, 920944, 333); 71 } 72 73 TEST_F(RemoteBitrateEstimatorSingleTest, CapacityDropThirteenStreamsWrap) { 74 CapacityDropTestHelper(13, true, 938944, 300); 75 } 76 77 TEST_F(RemoteBitrateEstimatorSingleTest, CapacityDropNineteenStreamsWrap) { 78 CapacityDropTestHelper(19, true, 926718, 300); 79 } 80 81 TEST_F(RemoteBitrateEstimatorSingleTest, CapacityDropThirtyStreamsWrap) { 82 CapacityDropTestHelper(30, true, 927016, 300); 83 } 84 } // namespace webrtc 85