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

Side by Side Diff: webrtc/call/bitrate_estimator_tests.cc

Issue 1402403008: Changed FakeVoiceEngine into a MockVoiceEngine. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: unneeded include Created 5 years, 1 month 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/audio/audio_send_stream_unittest.cc ('k') | webrtc/call/call_unittest.cc » ('j') | 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) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 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 #include <functional> 10 #include <functional>
11 #include <list> 11 #include <list>
12 #include <string> 12 #include <string>
13 13
14 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
15 15
16 #include "webrtc/base/checks.h" 16 #include "webrtc/base/checks.h"
17 #include "webrtc/base/scoped_ptr.h" 17 #include "webrtc/base/scoped_ptr.h"
18 #include "webrtc/base/thread_annotations.h" 18 #include "webrtc/base/thread_annotations.h"
19 #include "webrtc/call.h" 19 #include "webrtc/call.h"
20 #include "webrtc/system_wrappers/include/critical_section_wrapper.h" 20 #include "webrtc/system_wrappers/include/critical_section_wrapper.h"
21 #include "webrtc/system_wrappers/include/event_wrapper.h" 21 #include "webrtc/system_wrappers/include/event_wrapper.h"
22 #include "webrtc/system_wrappers/include/trace.h" 22 #include "webrtc/system_wrappers/include/trace.h"
23 #include "webrtc/test/call_test.h" 23 #include "webrtc/test/call_test.h"
24 #include "webrtc/test/direct_transport.h" 24 #include "webrtc/test/direct_transport.h"
25 #include "webrtc/test/encoder_settings.h" 25 #include "webrtc/test/encoder_settings.h"
26 #include "webrtc/test/fake_decoder.h" 26 #include "webrtc/test/fake_decoder.h"
27 #include "webrtc/test/fake_encoder.h" 27 #include "webrtc/test/fake_encoder.h"
28 #include "webrtc/test/fake_voice_engine.h" 28 #include "webrtc/test/mock_voice_engine.h"
29 #include "webrtc/test/frame_generator_capturer.h" 29 #include "webrtc/test/frame_generator_capturer.h"
30 30
31 namespace webrtc { 31 namespace webrtc {
32 namespace { 32 namespace {
33 // Note: If you consider to re-use this class, think twice and instead consider 33 // Note: If you consider to re-use this class, think twice and instead consider
34 // writing tests that don't depend on the trace system. 34 // writing tests that don't depend on the trace system.
35 class TraceObserver { 35 class TraceObserver {
36 public: 36 public:
37 TraceObserver() { 37 TraceObserver() {
38 Trace::set_level_filter(kTraceTerseInfo); 38 Trace::set_level_filter(kTraceTerseInfo);
39 39
40 Trace::CreateTrace(); 40 Trace::CreateTrace();
41 Trace::SetTraceCallback(&callback_); 41 Trace::SetTraceCallback(&callback_);
42 42
43 // Call webrtc trace to initialize the tracer that would otherwise trigger a 43 // Call webrtc trace to initialize the tracer that would otherwise trigger a
44 // data-race if left to be initialized by multiple threads (i.e. threads 44 // data-race if left to be initialized by multiple threads (i.e. threads
45 // spawned by test::DirectTransport members in BitrateEstimatorTest). 45 // spawned by test::DirectTransport members in BitrateEstimatorTest).
46 WEBRTC_TRACE(kTraceStateInfo, 46 WEBRTC_TRACE(kTraceStateInfo, kTraceUtility, -1,
47 kTraceUtility,
48 -1,
49 "Instantiate without data races."); 47 "Instantiate without data races.");
50 } 48 }
51 49
52 ~TraceObserver() { 50 ~TraceObserver() {
53 Trace::SetTraceCallback(nullptr); 51 Trace::SetTraceCallback(nullptr);
54 Trace::ReturnTrace(); 52 Trace::ReturnTrace();
55 } 53 }
56 54
57 void PushExpectedLogLine(const std::string& expected_log_line) { 55 void PushExpectedLogLine(const std::string& expected_log_line) {
58 callback_.PushExpectedLogLine(expected_log_line); 56 callback_.PushExpectedLogLine(expected_log_line);
59 } 57 }
60 58
61 EventTypeWrapper Wait() { 59 EventTypeWrapper Wait() { return callback_.Wait(); }
62 return callback_.Wait();
63 }
64 60
65 private: 61 private:
66 class Callback : public TraceCallback { 62 class Callback : public TraceCallback {
67 public: 63 public:
68 Callback() : done_(EventWrapper::Create()) {} 64 Callback() : done_(EventWrapper::Create()) {}
69 65
70 void Print(TraceLevel level, const char* message, int length) override { 66 void Print(TraceLevel level, const char* message, int length) override {
71 rtc::CritScope lock(&crit_sect_); 67 rtc::CritScope lock(&crit_sect_);
72 std::string msg(message); 68 std::string msg(message);
73 if (msg.find("BitrateEstimator") != std::string::npos) { 69 if (msg.find("BitrateEstimator") != std::string::npos) {
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 }; 107 };
112 } // namespace 108 } // namespace
113 109
114 static const int kTOFExtensionId = 4; 110 static const int kTOFExtensionId = 4;
115 static const int kASTExtensionId = 5; 111 static const int kASTExtensionId = 5;
116 112
117 class BitrateEstimatorTest : public test::CallTest { 113 class BitrateEstimatorTest : public test::CallTest {
118 public: 114 public:
119 BitrateEstimatorTest() : receive_config_(nullptr) {} 115 BitrateEstimatorTest() : receive_config_(nullptr) {}
120 116
121 virtual ~BitrateEstimatorTest() { 117 virtual ~BitrateEstimatorTest() { EXPECT_TRUE(streams_.empty()); }
122 EXPECT_TRUE(streams_.empty());
123 }
124 118
125 virtual void SetUp() { 119 virtual void SetUp() {
120 EXPECT_CALL(mock_voice_engine_, GetEventLog())
121 .WillRepeatedly(testing::Return(nullptr));
122
126 Call::Config config; 123 Call::Config config;
127 config.voice_engine = &fake_voice_engine_; 124 config.voice_engine = &mock_voice_engine_;
128 receiver_call_.reset(Call::Create(config)); 125 receiver_call_.reset(Call::Create(config));
129 sender_call_.reset(Call::Create(config)); 126 sender_call_.reset(Call::Create(config));
130 127
131 send_transport_.reset(new test::DirectTransport(sender_call_.get())); 128 send_transport_.reset(new test::DirectTransport(sender_call_.get()));
132 send_transport_->SetReceiver(receiver_call_->Receiver()); 129 send_transport_->SetReceiver(receiver_call_->Receiver());
133 receive_transport_.reset(new test::DirectTransport(receiver_call_.get())); 130 receive_transport_.reset(new test::DirectTransport(receiver_call_.get()));
134 receive_transport_->SetReceiver(sender_call_->Receiver()); 131 receive_transport_->SetReceiver(sender_call_->Receiver());
135 132
136 send_config_ = VideoSendStream::Config(send_transport_.get()); 133 send_config_ = VideoSendStream::Config(send_transport_.get());
137 send_config_.rtp.ssrcs.push_back(kSendSsrcs[0]); 134 send_config_.rtp.ssrcs.push_back(kSendSsrcs[0]);
138 // Encoders will be set separately per stream. 135 // Encoders will be set separately per stream.
139 send_config_.encoder_settings.encoder = nullptr; 136 send_config_.encoder_settings.encoder = nullptr;
140 send_config_.encoder_settings.payload_name = "FAKE"; 137 send_config_.encoder_settings.payload_name = "FAKE";
141 send_config_.encoder_settings.payload_type = kFakeSendPayloadType; 138 send_config_.encoder_settings.payload_type = kFakeSendPayloadType;
142 encoder_config_.streams = test::CreateVideoStreams(1); 139 encoder_config_.streams = test::CreateVideoStreams(1);
143 140
144 receive_config_ = VideoReceiveStream::Config(receive_transport_.get()); 141 receive_config_ = VideoReceiveStream::Config(receive_transport_.get());
145 // receive_config_.decoders will be set by every stream separately. 142 // receive_config_.decoders will be set by every stream separately.
146 receive_config_.rtp.remote_ssrc = send_config_.rtp.ssrcs[0]; 143 receive_config_.rtp.remote_ssrc = send_config_.rtp.ssrcs[0];
147 receive_config_.rtp.local_ssrc = kReceiverLocalSsrc; 144 receive_config_.rtp.local_ssrc = kReceiverLocalSsrc;
148 receive_config_.rtp.remb = true; 145 receive_config_.rtp.remb = true;
149 receive_config_.rtp.extensions.push_back( 146 receive_config_.rtp.extensions.push_back(
150 RtpExtension(RtpExtension::kTOffset, kTOFExtensionId)); 147 RtpExtension(RtpExtension::kTOffset, kTOFExtensionId));
151 receive_config_.rtp.extensions.push_back( 148 receive_config_.rtp.extensions.push_back(
152 RtpExtension(RtpExtension::kAbsSendTime, kASTExtensionId)); 149 RtpExtension(RtpExtension::kAbsSendTime, kASTExtensionId));
153 } 150 }
154 151
155 virtual void TearDown() { 152 virtual void TearDown() {
156 std::for_each(streams_.begin(), streams_.end(), 153 std::for_each(streams_.begin(), streams_.end(),
157 std::mem_fun(&Stream::StopSending)); 154 std::mem_fun(&Stream::StopSending));
158 155
159 send_transport_->StopSending(); 156 send_transport_->StopSending();
160 receive_transport_->StopSending(); 157 receive_transport_->StopSending();
161 158
162 while (!streams_.empty()) { 159 while (!streams_.empty()) {
163 delete streams_.back(); 160 delete streams_.back();
164 streams_.pop_back(); 161 streams_.pop_back();
165 } 162 }
166 163
167 receiver_call_.reset(); 164 receiver_call_.reset();
(...skipping 12 matching lines...) Expand all
180 video_receive_stream_(nullptr), 177 video_receive_stream_(nullptr),
181 frame_generator_capturer_(), 178 frame_generator_capturer_(),
182 fake_encoder_(Clock::GetRealTimeClock()), 179 fake_encoder_(Clock::GetRealTimeClock()),
183 fake_decoder_() { 180 fake_decoder_() {
184 test_->send_config_.rtp.ssrcs[0]++; 181 test_->send_config_.rtp.ssrcs[0]++;
185 test_->send_config_.encoder_settings.encoder = &fake_encoder_; 182 test_->send_config_.encoder_settings.encoder = &fake_encoder_;
186 send_stream_ = test_->sender_call_->CreateVideoSendStream( 183 send_stream_ = test_->sender_call_->CreateVideoSendStream(
187 test_->send_config_, test_->encoder_config_); 184 test_->send_config_, test_->encoder_config_);
188 RTC_DCHECK_EQ(1u, test_->encoder_config_.streams.size()); 185 RTC_DCHECK_EQ(1u, test_->encoder_config_.streams.size());
189 frame_generator_capturer_.reset(test::FrameGeneratorCapturer::Create( 186 frame_generator_capturer_.reset(test::FrameGeneratorCapturer::Create(
190 send_stream_->Input(), 187 send_stream_->Input(), test_->encoder_config_.streams[0].width,
191 test_->encoder_config_.streams[0].width, 188 test_->encoder_config_.streams[0].height, 30,
192 test_->encoder_config_.streams[0].height,
193 30,
194 Clock::GetRealTimeClock())); 189 Clock::GetRealTimeClock()));
195 send_stream_->Start(); 190 send_stream_->Start();
196 frame_generator_capturer_->Start(); 191 frame_generator_capturer_->Start();
197 192
198 if (receive_audio) { 193 if (receive_audio) {
199 AudioReceiveStream::Config receive_config; 194 AudioReceiveStream::Config receive_config;
200 receive_config.rtp.remote_ssrc = test_->send_config_.rtp.ssrcs[0]; 195 receive_config.rtp.remote_ssrc = test_->send_config_.rtp.ssrcs[0];
201 // Bogus non-default id to prevent hitting a RTC_DCHECK when creating 196 // Bogus non-default id to prevent hitting a RTC_DCHECK when creating
202 // the AudioReceiveStream. Every receive stream has to correspond to 197 // the AudioReceiveStream. Every receive stream has to correspond to
203 // an underlying channel id. 198 // an underlying channel id.
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
255 BitrateEstimatorTest* test_; 250 BitrateEstimatorTest* test_;
256 bool is_sending_receiving_; 251 bool is_sending_receiving_;
257 VideoSendStream* send_stream_; 252 VideoSendStream* send_stream_;
258 AudioReceiveStream* audio_receive_stream_; 253 AudioReceiveStream* audio_receive_stream_;
259 VideoReceiveStream* video_receive_stream_; 254 VideoReceiveStream* video_receive_stream_;
260 rtc::scoped_ptr<test::FrameGeneratorCapturer> frame_generator_capturer_; 255 rtc::scoped_ptr<test::FrameGeneratorCapturer> frame_generator_capturer_;
261 test::FakeEncoder fake_encoder_; 256 test::FakeEncoder fake_encoder_;
262 test::FakeDecoder fake_decoder_; 257 test::FakeDecoder fake_decoder_;
263 }; 258 };
264 259
265 test::FakeVoiceEngine fake_voice_engine_; 260 test::MockVoiceEngine mock_voice_engine_;
266 TraceObserver receiver_trace_; 261 TraceObserver receiver_trace_;
267 rtc::scoped_ptr<test::DirectTransport> send_transport_; 262 rtc::scoped_ptr<test::DirectTransport> send_transport_;
268 rtc::scoped_ptr<test::DirectTransport> receive_transport_; 263 rtc::scoped_ptr<test::DirectTransport> receive_transport_;
269 rtc::scoped_ptr<Call> sender_call_; 264 rtc::scoped_ptr<Call> sender_call_;
270 rtc::scoped_ptr<Call> receiver_call_; 265 rtc::scoped_ptr<Call> receiver_call_;
271 VideoReceiveStream::Config receive_config_; 266 VideoReceiveStream::Config receive_config_;
272 std::vector<Stream*> streams_; 267 std::vector<Stream*> streams_;
273 }; 268 };
274 269
275 static const char* kAbsSendTimeLog = 270 static const char* kAbsSendTimeLog =
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
357 RtpExtension(RtpExtension::kTOffset, kTOFExtensionId); 352 RtpExtension(RtpExtension::kTOffset, kTOFExtensionId);
358 receiver_trace_.PushExpectedLogLine( 353 receiver_trace_.PushExpectedLogLine(
359 "WrappingBitrateEstimator: Switching to transmission time offset RBE."); 354 "WrappingBitrateEstimator: Switching to transmission time offset RBE.");
360 receiver_trace_.PushExpectedLogLine(kSingleStreamLog); 355 receiver_trace_.PushExpectedLogLine(kSingleStreamLog);
361 streams_.push_back(new Stream(this, false)); 356 streams_.push_back(new Stream(this, false));
362 streams_[0]->StopSending(); 357 streams_[0]->StopSending();
363 streams_[1]->StopSending(); 358 streams_[1]->StopSending();
364 EXPECT_EQ(kEventSignaled, receiver_trace_.Wait()); 359 EXPECT_EQ(kEventSignaled, receiver_trace_.Wait());
365 } 360 }
366 } // namespace webrtc 361 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/audio/audio_send_stream_unittest.cc ('k') | webrtc/call/call_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698