Updating bitrate controller tests to test naming conventions.

The test is now named 'bitrate_controller_unittests'.
This CL also enables it on the bots. The test is excluded on ASAN since
it fails when compiled with projects generated with GYP_DEFINES='asan=1' (see issue 555).

BUG=None
TEST=bitrate_controller_unittests was tested in Debug+Release on Linux, Mac and Windows + TSAN and memcheck.

Review URL: https://webrtc-codereview.appspot.com/612004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@2333 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
kjellander@webrtc.org 2012-05-31 13:55:01 +00:00
parent baaf2434a7
commit 2e84c112f5
6 changed files with 93 additions and 118 deletions

View File

@ -29,7 +29,19 @@
'include/bitrate_controller.h',
'send_side_bandwidth_estimation.cc',
'send_side_bandwidth_estimation.h',
], # source
],
},
{
'target_name': 'bitrate_controller_unittests',
'type': 'executable',
'dependencies': [
'bitrate_controller',
'<(webrtc_root)/../test/test.gyp:test_support_main',
'<(webrtc_root)/../testing/gtest.gyp:gtest',
],
'sources': [
'bitrate_controller_unittest.cc',
],
},
],
}

View File

@ -23,21 +23,21 @@ using webrtc::BitrateController;
class TestBitrateObserver: public BitrateObserver {
public:
TestBitrateObserver()
: last_bitrate(0),
last_fraction_loss(0),
last_rtt(0) {
: last_bitrate_(0),
last_fraction_loss_(0),
last_rtt_(0) {
}
virtual void OnNetworkChanged(const uint32_t bitrate,
const uint8_t fraction_loss,
const uint32_t rtt) {
last_bitrate = bitrate;
last_fraction_loss = fraction_loss;
last_rtt = rtt;
last_bitrate_ = bitrate;
last_fraction_loss_ = fraction_loss;
last_rtt_ = rtt;
}
uint32_t last_bitrate;
uint8_t last_fraction_loss;
uint32_t last_rtt;
uint32_t last_bitrate_;
uint8_t last_fraction_loss_;
uint32_t last_rtt_;
};
class BitrateControllerTest : public ::testing::Test {
@ -74,42 +74,42 @@ TEST_F(BitrateControllerTest, OneBitrateObserverOneRtcpObserver) {
// Test start bitrate.
bandwidth_observer_->OnReceivedRtcpReceiverReport(1, 0, 50, 1, 1);
EXPECT_EQ(bitrate_observer.last_bitrate, 0u);
EXPECT_EQ(bitrate_observer.last_fraction_loss, 0);
EXPECT_EQ(bitrate_observer.last_rtt, 0u);
EXPECT_EQ(0u, bitrate_observer.last_bitrate_);
EXPECT_EQ(0, bitrate_observer.last_fraction_loss_);
EXPECT_EQ(0u, bitrate_observer.last_rtt_);
// Test bitrate increase 8% per second.
bandwidth_observer_->OnReceivedRtcpReceiverReport(1, 0, 50, 21, 1001);
EXPECT_EQ(bitrate_observer.last_bitrate, 217000u);
EXPECT_EQ(bitrate_observer.last_fraction_loss, 0);
EXPECT_EQ(bitrate_observer.last_rtt, 50u);
EXPECT_EQ(217000u, bitrate_observer.last_bitrate_);
EXPECT_EQ(0, bitrate_observer.last_fraction_loss_);
EXPECT_EQ(50u, bitrate_observer.last_rtt_);
bandwidth_observer_->OnReceivedRtcpReceiverReport(1, 0, 50, 41, 2001);
EXPECT_EQ(bitrate_observer.last_bitrate, 235360u);
EXPECT_EQ(235360u, bitrate_observer.last_bitrate_);
bandwidth_observer_->OnReceivedRtcpReceiverReport(1, 0, 50, 61, 3001);
EXPECT_EQ(bitrate_observer.last_bitrate, 255189u);
EXPECT_EQ(255189u, bitrate_observer.last_bitrate_);
bandwidth_observer_->OnReceivedRtcpReceiverReport(1, 0, 50, 801, 4001);
EXPECT_EQ(bitrate_observer.last_bitrate, 276604u);
EXPECT_EQ(276604u, bitrate_observer.last_bitrate_);
bandwidth_observer_->OnReceivedRtcpReceiverReport(1, 0, 50, 101, 5001);
EXPECT_EQ(bitrate_observer.last_bitrate, 299732u);
EXPECT_EQ(299732u, bitrate_observer.last_bitrate_);
bandwidth_observer_->OnReceivedRtcpReceiverReport(1, 0, 50, 121, 6001);
EXPECT_EQ(bitrate_observer.last_bitrate, 300000u); // Max cap.
EXPECT_EQ(300000u, bitrate_observer.last_bitrate_); // Max cap.
bandwidth_observer_->OnReceivedRtcpReceiverReport(1, 0, 50, 141, 7001);
EXPECT_EQ(bitrate_observer.last_bitrate, 300000u); // Max cap.
EXPECT_EQ(300000u, bitrate_observer.last_bitrate_); // Max cap.
// Test that a low REMB trigger immediately.
bandwidth_observer_->OnReceivedEstimatedBitrate(250000);
EXPECT_EQ(bitrate_observer.last_bitrate, 250000u);
EXPECT_EQ(bitrate_observer.last_fraction_loss, 0);
EXPECT_EQ(bitrate_observer.last_rtt, 50u);
EXPECT_EQ(250000u, bitrate_observer.last_bitrate_);
EXPECT_EQ(0, bitrate_observer.last_fraction_loss_);
EXPECT_EQ(50u, bitrate_observer.last_rtt_);
bandwidth_observer_->OnReceivedEstimatedBitrate(1000);
EXPECT_EQ(bitrate_observer.last_bitrate, 100000u); // Min cap.
EXPECT_EQ(100000u, bitrate_observer.last_bitrate_); // Min cap.
controller_->RemoveBitrateObserver(&bitrate_observer);
}
@ -126,53 +126,53 @@ TEST_F(BitrateControllerTest, OneBitrateObserverTwoRtcpObservers) {
// Test start bitrate.
bandwidth_observer_->OnReceivedRtcpReceiverReport(1, 0, 50, 1, 1);
second_bandwidth_observer->OnReceivedRtcpReceiverReport(1, 0, 100, 1, 1);
EXPECT_EQ(bitrate_observer.last_bitrate, 0u);
EXPECT_EQ(bitrate_observer.last_fraction_loss, 0);
EXPECT_EQ(bitrate_observer.last_rtt, 0u);
EXPECT_EQ(0u, bitrate_observer.last_bitrate_);
EXPECT_EQ(0, bitrate_observer.last_fraction_loss_);
EXPECT_EQ(0u, bitrate_observer.last_rtt_);
// Test bitrate increase 8% per second.
bandwidth_observer_->OnReceivedRtcpReceiverReport(1, 0, 50, 21, 501);
second_bandwidth_observer->OnReceivedRtcpReceiverReport(1, 0, 100, 21, 1001);
EXPECT_EQ(bitrate_observer.last_bitrate, 217000u);
EXPECT_EQ(bitrate_observer.last_fraction_loss, 0);
EXPECT_EQ(bitrate_observer.last_rtt, 100u);
EXPECT_EQ(217000u, bitrate_observer.last_bitrate_);
EXPECT_EQ(0, bitrate_observer.last_fraction_loss_);
EXPECT_EQ(100u, bitrate_observer.last_rtt_);
// Extra report should not change estimate.
second_bandwidth_observer->OnReceivedRtcpReceiverReport(1, 0, 100, 31, 1501);
EXPECT_EQ(bitrate_observer.last_bitrate, 217000u);
EXPECT_EQ(217000u, bitrate_observer.last_bitrate_);
bandwidth_observer_->OnReceivedRtcpReceiverReport(1, 0, 50, 41, 2001);
EXPECT_EQ(bitrate_observer.last_bitrate, 235360u);
EXPECT_EQ(235360u, bitrate_observer.last_bitrate_);
// Second report should not change estimate.
second_bandwidth_observer->OnReceivedRtcpReceiverReport(1, 0, 100, 41, 2001);
EXPECT_EQ(bitrate_observer.last_bitrate, 235360u);
EXPECT_EQ(235360u, bitrate_observer.last_bitrate_);
// Reports from only one bandwidth observer is ok.
second_bandwidth_observer->OnReceivedRtcpReceiverReport(1, 0, 50, 61, 3001);
EXPECT_EQ(bitrate_observer.last_bitrate, 255189u);
EXPECT_EQ(255189u, bitrate_observer.last_bitrate_);
second_bandwidth_observer->OnReceivedRtcpReceiverReport(1, 0, 50, 81, 4001);
EXPECT_EQ(bitrate_observer.last_bitrate, 276604u);
EXPECT_EQ(276604u, bitrate_observer.last_bitrate_);
second_bandwidth_observer->OnReceivedRtcpReceiverReport(1, 0, 50, 101, 5001);
EXPECT_EQ(bitrate_observer.last_bitrate, 299732u);
EXPECT_EQ(299732u, bitrate_observer.last_bitrate_);
second_bandwidth_observer->OnReceivedRtcpReceiverReport(1, 0, 50, 121, 6001);
EXPECT_EQ(bitrate_observer.last_bitrate, 300000u); // Max cap.
EXPECT_EQ(300000u, bitrate_observer.last_bitrate_); // Max cap.
second_bandwidth_observer->OnReceivedRtcpReceiverReport(1, 0, 50, 141, 7001);
EXPECT_EQ(bitrate_observer.last_bitrate, 300000u); // Max cap.
EXPECT_EQ(300000u, bitrate_observer.last_bitrate_); // Max cap.
// Test that a low REMB trigger immediately.
// We don't care which bandwidth observer that delivers the REMB.
second_bandwidth_observer->OnReceivedEstimatedBitrate(250000);
EXPECT_EQ(bitrate_observer.last_bitrate, 250000u);
EXPECT_EQ(bitrate_observer.last_fraction_loss, 0);
EXPECT_EQ(bitrate_observer.last_rtt, 50u);
EXPECT_EQ(250000u, bitrate_observer.last_bitrate_);
EXPECT_EQ(0, bitrate_observer.last_fraction_loss_);
EXPECT_EQ(50u, bitrate_observer.last_rtt_);
bandwidth_observer_->OnReceivedEstimatedBitrate(1000);
EXPECT_EQ(bitrate_observer.last_bitrate, 100000u); // Min cap.
EXPECT_EQ(100000u, bitrate_observer.last_bitrate_); // Min cap.
controller_->RemoveBitrateObserver(&bitrate_observer);
delete second_bandwidth_observer;
}
@ -191,72 +191,70 @@ TEST_F(BitrateControllerTest, TwoBitrateObserversOneRtcpObserver) {
// Test bitrate increase 8% per second, distributed equally.
bandwidth_observer_->OnReceivedRtcpReceiverReport(1, 0, 50, 21, 1001);
EXPECT_EQ(bitrate_observer_1.last_bitrate, 100000u);
EXPECT_EQ(bitrate_observer_1.last_fraction_loss, 0);
EXPECT_EQ(bitrate_observer_1.last_rtt, 50u);
EXPECT_EQ(100000u, bitrate_observer_1.last_bitrate_);
EXPECT_EQ(0, bitrate_observer_1.last_fraction_loss_);
EXPECT_EQ(50u, bitrate_observer_1.last_rtt_);
EXPECT_EQ(bitrate_observer_2.last_bitrate, 200000u);
EXPECT_EQ(bitrate_observer_2.last_fraction_loss, 0);
EXPECT_EQ(bitrate_observer_2.last_rtt, 50u);
EXPECT_EQ(200000u, bitrate_observer_2.last_bitrate_);
EXPECT_EQ(0, bitrate_observer_2.last_fraction_loss_);
EXPECT_EQ(50u, bitrate_observer_2.last_rtt_);
bandwidth_observer_->OnReceivedRtcpReceiverReport(1, 0, 50, 41, 2001);
EXPECT_EQ(bitrate_observer_1.last_bitrate, 112500u);
EXPECT_EQ(bitrate_observer_2.last_bitrate, 212500u);
EXPECT_EQ(112500u, bitrate_observer_1.last_bitrate_);
EXPECT_EQ(212500u, bitrate_observer_2.last_bitrate_);
bandwidth_observer_->OnReceivedRtcpReceiverReport(1, 0, 50, 61, 3001);
EXPECT_EQ(bitrate_observer_1.last_bitrate, 126000u);
EXPECT_EQ(bitrate_observer_2.last_bitrate, 226000u);
EXPECT_EQ(126000u, bitrate_observer_1.last_bitrate_);
EXPECT_EQ(226000u, bitrate_observer_2.last_bitrate_);
bandwidth_observer_->OnReceivedRtcpReceiverReport(1, 0, 50, 81, 4001);
EXPECT_EQ(bitrate_observer_1.last_bitrate, 140580u);
EXPECT_EQ(bitrate_observer_2.last_bitrate, 240580u);
EXPECT_EQ(140580u, bitrate_observer_1.last_bitrate_);
EXPECT_EQ(240580u, bitrate_observer_2.last_bitrate_);
// Check that the bitrate sum honor our REMB.
bandwidth_observer_->OnReceivedRtcpReceiverReport(1, 0, 50, 101, 5001);
EXPECT_EQ(bitrate_observer_1.last_bitrate, 150000u);
EXPECT_EQ(bitrate_observer_2.last_bitrate, 250000u);
EXPECT_EQ(150000u, bitrate_observer_1.last_bitrate_);
EXPECT_EQ(250000u, bitrate_observer_2.last_bitrate_);
// Remove REMB cap, higher than sum of max.
bandwidth_observer_->OnReceivedEstimatedBitrate(700000);
bandwidth_observer_->OnReceivedRtcpReceiverReport(1, 0, 50, 121, 6001);
EXPECT_EQ(bitrate_observer_1.last_bitrate, 166500u);
EXPECT_EQ(bitrate_observer_2.last_bitrate, 266500u);
EXPECT_EQ(166500u, bitrate_observer_1.last_bitrate_);
EXPECT_EQ(266500u, bitrate_observer_2.last_bitrate_);
bandwidth_observer_->OnReceivedRtcpReceiverReport(1, 0, 50, 141, 7001);
EXPECT_EQ(bitrate_observer_1.last_bitrate, 184320u);
EXPECT_EQ(bitrate_observer_2.last_bitrate, 284320u);
EXPECT_EQ(184320u, bitrate_observer_1.last_bitrate_);
EXPECT_EQ(284320u, bitrate_observer_2.last_bitrate_);
bandwidth_observer_->OnReceivedRtcpReceiverReport(1, 0, 50, 161, 8001);
EXPECT_EQ(bitrate_observer_1.last_bitrate, 207130u);
EXPECT_EQ(bitrate_observer_2.last_bitrate, 300000u); // Max cap.
EXPECT_EQ(207130u, bitrate_observer_1.last_bitrate_);
EXPECT_EQ(300000u, bitrate_observer_2.last_bitrate_); // Max cap.
bandwidth_observer_->OnReceivedRtcpReceiverReport(1, 0, 50, 181, 9001);
EXPECT_EQ(bitrate_observer_1.last_bitrate, 248700u);
EXPECT_EQ(bitrate_observer_2.last_bitrate, 300000u);
EXPECT_EQ(248700u, bitrate_observer_1.last_bitrate_);
EXPECT_EQ(300000u, bitrate_observer_2.last_bitrate_);
bandwidth_observer_->OnReceivedRtcpReceiverReport(1, 0, 50, 201, 10001);
EXPECT_EQ(bitrate_observer_1.last_bitrate, 293596u);
EXPECT_EQ(bitrate_observer_2.last_bitrate, 300000u);
EXPECT_EQ(293596u, bitrate_observer_1.last_bitrate_);
EXPECT_EQ(300000u, bitrate_observer_2.last_bitrate_);
bandwidth_observer_->OnReceivedRtcpReceiverReport(1, 0, 50, 221, 11001);
EXPECT_EQ(bitrate_observer_1.last_bitrate, 300000u); // Max cap.
EXPECT_EQ(bitrate_observer_2.last_bitrate, 300000u);
EXPECT_EQ(300000u, bitrate_observer_1.last_bitrate_); // Max cap.
EXPECT_EQ(300000u, bitrate_observer_2.last_bitrate_);
// Test that a low REMB trigger immediately.
bandwidth_observer_->OnReceivedEstimatedBitrate(350000);
EXPECT_EQ(bitrate_observer_1.last_bitrate, 125000u);
EXPECT_EQ(bitrate_observer_1.last_fraction_loss, 0);
EXPECT_EQ(bitrate_observer_1.last_rtt, 50u);
EXPECT_EQ(bitrate_observer_2.last_bitrate, 225000u);
EXPECT_EQ(bitrate_observer_2.last_fraction_loss, 0);
EXPECT_EQ(bitrate_observer_2.last_rtt, 50u);
EXPECT_EQ(125000u, bitrate_observer_1.last_bitrate_);
EXPECT_EQ(0, bitrate_observer_1.last_fraction_loss_);
EXPECT_EQ(50u, bitrate_observer_1.last_rtt_);
EXPECT_EQ(225000u, bitrate_observer_2.last_bitrate_);
EXPECT_EQ(0, bitrate_observer_2.last_fraction_loss_);
EXPECT_EQ(50u, bitrate_observer_2.last_rtt_);
bandwidth_observer_->OnReceivedEstimatedBitrate(1000);
EXPECT_EQ(bitrate_observer_1.last_bitrate, 100000u); // Min cap.
EXPECT_EQ(bitrate_observer_2.last_bitrate, 200000u); // Min cap.
EXPECT_EQ(100000u, bitrate_observer_1.last_bitrate_); // Min cap.
EXPECT_EQ(200000u, bitrate_observer_2.last_bitrate_); // Min cap.
controller_->RemoveBitrateObserver(&bitrate_observer_1);
controller_->RemoveBitrateObserver(&bitrate_observer_2);
}

View File

@ -1,37 +0,0 @@
# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
#
# Use of this source code is governed by a BSD-style license
# that can be found in the LICENSE file in the root of the source
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS. All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.
{
'targets': [
{
'target_name': 'test_bitrate_controller',
'type': 'executable',
'dependencies': [
'bitrate_controller',
'<(webrtc_root)/../test/test.gyp:test_support_main',
'<(webrtc_root)/../testing/gtest.gyp:gtest',
],
'include_dirs': [
'../include',
'../',
'../../../system_wrappers/interface',
],
'sources': [
'test_bitrate_controller.cc',
],
},
],
}
# Local Variables:
# tab-width:2
# indent-tabs-mode:nil
# End:
# vim: set expandtab tabstop=2 shiftwidth=2:

View File

@ -46,7 +46,6 @@
'audio_coding/codecs/iSAC/isac_test.gypi',
'audio_coding/codecs/iSAC/isacfix_test.gypi',
'audio_processing/apm_tests.gypi',
'bitrate_controller/test/test_bitrate_controller.gypi',
'rtp_rtcp/source/rtp_rtcp_tests.gypi',
'rtp_rtcp/test/test_bwe/test_bwe.gypi',
'rtp_rtcp/test/testFec/test_fec.gypi',

View File

@ -68,6 +68,7 @@ NORMAL_TESTS = {
'audio_coding_unittests': (True, True, True),
'audio_conference_mixer_unittests':(True, True, True),
'audioproc_unittest': (True, True, True),
'bitrate_controller_unittests': (True, True, True),
'cng_unittests': (True, True, True),
'g711_unittests': (True, True, True),
'g722_unittests': (True, True, True),

View File

@ -92,6 +92,7 @@ NORMAL_TESTS = {
'audio_conference_mixer_unittests':(True, True, True),
'audio_device_test_api': (False, True, False), # no audio devices
'audioproc_unittest': (True, True, True),
'bitrate_controller_unittests': (True, True, True),
'cng_unittests': (True, True, True),
'g711_unittests': (True, True, True),
'g722_unittests': (True, True, True),
@ -143,6 +144,7 @@ TSAN_DISABLED_TESTS = [
]
ASAN_DISABLED_TESTS = [
'audio_coding_module_test', # Issue 281
'bitrate_controller_unittests', # Issue 555
'neteq_unittests', # Issue 282
]