| Index: webrtc/audio/audio_send_stream_unittest.cc
|
| diff --git a/webrtc/audio/audio_send_stream_unittest.cc b/webrtc/audio/audio_send_stream_unittest.cc
|
| index 8dc6da7a8232ca5a37b90be6665a62e091e6c608..aa978c91af3d3e014150931a337ce20eefb076d9 100644
|
| --- a/webrtc/audio/audio_send_stream_unittest.cc
|
| +++ b/webrtc/audio/audio_send_stream_unittest.cc
|
| @@ -16,8 +16,12 @@
|
| #include "webrtc/audio/audio_send_stream.h"
|
| #include "webrtc/audio/audio_state.h"
|
| #include "webrtc/audio/conversion.h"
|
| +#include "webrtc/call/congestion_controller.h"
|
| +#include "webrtc/modules/bitrate_controller/include/bitrate_controller.h"
|
| +#include "webrtc/modules/pacing/paced_sender.h"
|
| #include "webrtc/test/mock_voe_channel_proxy.h"
|
| #include "webrtc/test/mock_voice_engine.h"
|
| +#include "webrtc/video_engine/call_stats.h"
|
|
|
| namespace webrtc {
|
| namespace test {
|
| @@ -31,6 +35,7 @@ const uint32_t kSsrc = 1234;
|
| const char* kCName = "foo_name";
|
| const int kAudioLevelId = 2;
|
| const int kAbsSendTimeId = 3;
|
| +const int kTransportSequenceNumberId = 4;
|
| const int kEchoDelayMedian = 254;
|
| const int kEchoDelayStdDev = -3;
|
| const int kEchoReturnLoss = -65;
|
| @@ -42,7 +47,12 @@ const CodecInst kCodecInst = {-121, "codec_name_send", 48000, -231, -451, -671};
|
| const ReportBlock kReportBlock = {456, 780, 123, 567, 890, 132, 143, 13354};
|
|
|
| struct ConfigHelper {
|
| - ConfigHelper() : stream_config_(nullptr) {
|
| + ConfigHelper()
|
| + : stream_config_(nullptr),
|
| + process_thread_(ProcessThread::Create("AudioTestThread")),
|
| + congestion_controller_(process_thread_.get(),
|
| + &call_stats_,
|
| + &bitrate_observer_) {
|
| using testing::Invoke;
|
| using testing::StrEq;
|
|
|
| @@ -65,6 +75,18 @@ struct ConfigHelper {
|
| SetSendAbsoluteSenderTimeStatus(true, kAbsSendTimeId)).Times(1);
|
| EXPECT_CALL(*channel_proxy_,
|
| SetSendAudioLevelIndicationStatus(true, kAudioLevelId)).Times(1);
|
| + EXPECT_CALL(*channel_proxy_, EnableSendTransportSequenceNumber(
|
| + kTransportSequenceNumberId))
|
| + .Times(1);
|
| + EXPECT_CALL(*channel_proxy_,
|
| + SetCongestionControlObjects(
|
| + congestion_controller_.pacer(),
|
| + congestion_controller_.GetTransportFeedbackObserver(),
|
| + congestion_controller_.packet_router()))
|
| + .Times(1);
|
| + EXPECT_CALL(*channel_proxy_,
|
| + SetCongestionControlObjects(nullptr, nullptr, nullptr))
|
| + .Times(1);
|
| return channel_proxy_;
|
| }));
|
| stream_config_.voe_channel_id = kChannelId;
|
| @@ -74,10 +96,15 @@ struct ConfigHelper {
|
| RtpExtension(RtpExtension::kAudioLevel, kAudioLevelId));
|
| stream_config_.rtp.extensions.push_back(
|
| RtpExtension(RtpExtension::kAbsSendTime, kAbsSendTimeId));
|
| + stream_config_.rtp.extensions.push_back(RtpExtension(
|
| + RtpExtension::kTransportSequenceNumber, kTransportSequenceNumberId));
|
| }
|
|
|
| AudioSendStream::Config& config() { return stream_config_; }
|
| rtc::scoped_refptr<AudioState> audio_state() { return audio_state_; }
|
| + CongestionController* congestion_controller() {
|
| + return &congestion_controller_;
|
| + }
|
|
|
| void SetupMockForGetStats() {
|
| using testing::DoAll;
|
| @@ -113,10 +140,21 @@ struct ConfigHelper {
|
| }
|
|
|
| private:
|
| + class NullBitrateObserver : public BitrateObserver {
|
| + public:
|
| + virtual void OnNetworkChanged(uint32_t bitrate_bps,
|
| + uint8_t fraction_loss,
|
| + int64_t rtt_ms) {}
|
| + };
|
| +
|
| testing::StrictMock<MockVoiceEngine> voice_engine_;
|
| rtc::scoped_refptr<AudioState> audio_state_;
|
| AudioSendStream::Config stream_config_;
|
| testing::StrictMock<MockVoEChannelProxy>* channel_proxy_ = nullptr;
|
| + CallStats call_stats_;
|
| + NullBitrateObserver bitrate_observer_;
|
| + rtc::scoped_ptr<ProcessThread> process_thread_;
|
| + CongestionController congestion_controller_;
|
| };
|
| } // namespace
|
|
|
| @@ -139,12 +177,14 @@ TEST(AudioSendStreamTest, ConfigToString) {
|
|
|
| TEST(AudioSendStreamTest, ConstructDestruct) {
|
| ConfigHelper helper;
|
| - internal::AudioSendStream send_stream(helper.config(), helper.audio_state());
|
| + internal::AudioSendStream send_stream(helper.config(), helper.audio_state(),
|
| + helper.congestion_controller());
|
| }
|
|
|
| TEST(AudioSendStreamTest, GetStats) {
|
| ConfigHelper helper;
|
| - internal::AudioSendStream send_stream(helper.config(), helper.audio_state());
|
| + internal::AudioSendStream send_stream(helper.config(), helper.audio_state(),
|
| + helper.congestion_controller());
|
| helper.SetupMockForGetStats();
|
| AudioSendStream::Stats stats = send_stream.GetStats();
|
| EXPECT_EQ(kSsrc, stats.local_ssrc);
|
| @@ -171,7 +211,8 @@ TEST(AudioSendStreamTest, GetStats) {
|
|
|
| TEST(AudioSendStreamTest, GetStatsTypingNoiseDetected) {
|
| ConfigHelper helper;
|
| - internal::AudioSendStream send_stream(helper.config(), helper.audio_state());
|
| + internal::AudioSendStream send_stream(helper.config(), helper.audio_state(),
|
| + helper.congestion_controller());
|
| helper.SetupMockForGetStats();
|
| EXPECT_FALSE(send_stream.GetStats().typing_noise_detected);
|
|
|
|
|