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

Side by Side Diff: media/cast/audio_sender/audio_encoder_unittest.cc

Issue 145443005: Fixes for memory and threading issues in cast (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix compile Created 6 years, 11 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <sstream> 5 #include <sstream>
6 #include <string> 6 #include <string>
7 7
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/bind_helpers.h" 9 #include "base/bind_helpers.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 return out.str(); 83 return out.str();
84 } 84 }
85 }; 85 };
86 86
87 } // namespace 87 } // namespace
88 88
89 class AudioEncoderTest : public ::testing::TestWithParam<TestScenario> { 89 class AudioEncoderTest : public ::testing::TestWithParam<TestScenario> {
90 public: 90 public:
91 AudioEncoderTest() { 91 AudioEncoderTest() {
92 InitializeMediaLibraryForTesting(); 92 InitializeMediaLibraryForTesting();
93 testing_clock_.Advance( 93 testing_clock_ = new base::SimpleTestTickClock();
94 testing_clock_->Advance(
94 base::TimeDelta::FromMilliseconds(kStartMillisecond)); 95 base::TimeDelta::FromMilliseconds(kStartMillisecond));
95 } 96 }
96 97
97 virtual void SetUp() { 98 virtual void SetUp() {
98 task_runner_ = new test::FakeTaskRunner(&testing_clock_); 99 task_runner_ = new test::FakeTaskRunner(testing_clock_);
99 cast_environment_ = new CastEnvironment(&testing_clock_, task_runner_, 100 cast_environment_ = new CastEnvironment(
101 scoped_ptr<base::TickClock>(testing_clock_).Pass(), task_runner_,
100 task_runner_, task_runner_, task_runner_, task_runner_, task_runner_, 102 task_runner_, task_runner_, task_runner_, task_runner_, task_runner_,
101 GetDefaultCastSenderLoggingConfig()); 103 GetDefaultCastSenderLoggingConfig());
102 } 104 }
103 105
104 virtual ~AudioEncoderTest() {} 106 virtual ~AudioEncoderTest() {}
105 107
106 void RunTestForCodec(transport::AudioCodec codec) { 108 void RunTestForCodec(transport::AudioCodec codec) {
107 const TestScenario& scenario = GetParam(); 109 const TestScenario& scenario = GetParam();
108 SCOPED_TRACE(::testing::Message() 110 SCOPED_TRACE(::testing::Message()
109 << "Durations: " << scenario.ToString()); 111 << "Durations: " << scenario.ToString());
110 112
111 CreateObjectsForCodec(codec); 113 CreateObjectsForCodec(codec);
112 114
113 receiver_->SetRecordedTimeLowerBound(testing_clock_.NowTicks()); 115 receiver_->SetRecordedTimeLowerBound(testing_clock_->NowTicks());
114 for (size_t i = 0; i < scenario.num_durations; ++i) { 116 for (size_t i = 0; i < scenario.num_durations; ++i) {
115 const base::TimeDelta duration = 117 const base::TimeDelta duration =
116 base::TimeDelta::FromMilliseconds(scenario.durations_in_ms[i]); 118 base::TimeDelta::FromMilliseconds(scenario.durations_in_ms[i]);
117 receiver_->SetRecordedTimeUpperBound( 119 receiver_->SetRecordedTimeUpperBound(
118 testing_clock_.NowTicks() + duration); 120 testing_clock_->NowTicks() + duration);
119 121
120 const scoped_ptr<AudioBus> bus( 122 const scoped_ptr<AudioBus> bus(
121 audio_bus_factory_->NextAudioBus(duration)); 123 audio_bus_factory_->NextAudioBus(duration));
122 124
123 const int last_count = release_callback_count_; 125 const int last_count = release_callback_count_;
124 audio_encoder_->InsertAudio( 126 audio_encoder_->InsertAudio(
125 bus.get(), testing_clock_.NowTicks(), 127 bus.get(), testing_clock_->NowTicks(),
126 base::Bind(&AudioEncoderTest::IncrementReleaseCallbackCounter, 128 base::Bind(&AudioEncoderTest::IncrementReleaseCallbackCounter,
127 base::Unretained(this))); 129 base::Unretained(this)));
128 task_runner_->RunTasks(); 130 task_runner_->RunTasks();
129 EXPECT_EQ(1, release_callback_count_ - last_count) 131 EXPECT_EQ(1, release_callback_count_ - last_count)
130 << "Release callback was not invoked once."; 132 << "Release callback was not invoked once.";
131 133
132 testing_clock_.Advance(duration); 134 testing_clock_->Advance(duration);
133 } 135 }
134 136
135 DVLOG(1) << "Received " << receiver_->frames_received() 137 DVLOG(1) << "Received " << receiver_->frames_received()
136 << " frames for this test run: " << scenario.ToString(); 138 << " frames for this test run: " << scenario.ToString();
137 } 139 }
138 140
139 private: 141 private:
140 void CreateObjectsForCodec(transport::AudioCodec codec) { 142 void CreateObjectsForCodec(transport::AudioCodec codec) {
141 AudioSenderConfig audio_config; 143 AudioSenderConfig audio_config;
142 audio_config.codec = codec; 144 audio_config.codec = codec;
(...skipping 13 matching lines...) Expand all
156 cast_environment_, audio_config, 158 cast_environment_, audio_config,
157 base::Bind(&TestEncodedAudioFrameReceiver::FrameEncoded, 159 base::Bind(&TestEncodedAudioFrameReceiver::FrameEncoded,
158 base::Unretained(receiver_.get()))); 160 base::Unretained(receiver_.get())));
159 release_callback_count_ = 0; 161 release_callback_count_ = 0;
160 } 162 }
161 163
162 void IncrementReleaseCallbackCounter() { 164 void IncrementReleaseCallbackCounter() {
163 ++release_callback_count_; 165 ++release_callback_count_;
164 } 166 }
165 167
166 base::SimpleTestTickClock testing_clock_; 168 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment.
167 scoped_refptr<test::FakeTaskRunner> task_runner_; 169 scoped_refptr<test::FakeTaskRunner> task_runner_;
168 scoped_ptr<TestAudioBusFactory> audio_bus_factory_; 170 scoped_ptr<TestAudioBusFactory> audio_bus_factory_;
169 scoped_ptr<TestEncodedAudioFrameReceiver> receiver_; 171 scoped_ptr<TestEncodedAudioFrameReceiver> receiver_;
170 scoped_refptr<AudioEncoder> audio_encoder_; 172 scoped_refptr<AudioEncoder> audio_encoder_;
171 scoped_refptr<CastEnvironment> cast_environment_; 173 scoped_refptr<CastEnvironment> cast_environment_;
172 int release_callback_count_; 174 int release_callback_count_;
173 175
174 DISALLOW_COPY_AND_ASSIGN(AudioEncoderTest); 176 DISALLOW_COPY_AND_ASSIGN(AudioEncoderTest);
175 }; 177 };
176 178
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 TestScenario(kManyCalls_3Millis, arraysize(kManyCalls_3Millis)), 227 TestScenario(kManyCalls_3Millis, arraysize(kManyCalls_3Millis)),
226 TestScenario(kManyCalls_10Millis, arraysize(kManyCalls_10Millis)), 228 TestScenario(kManyCalls_10Millis, arraysize(kManyCalls_10Millis)),
227 TestScenario(kManyCalls_Mixed1, arraysize(kManyCalls_Mixed1)), 229 TestScenario(kManyCalls_Mixed1, arraysize(kManyCalls_Mixed1)),
228 TestScenario(kManyCalls_Mixed2, arraysize(kManyCalls_Mixed2)), 230 TestScenario(kManyCalls_Mixed2, arraysize(kManyCalls_Mixed2)),
229 TestScenario(kManyCalls_Mixed3, arraysize(kManyCalls_Mixed3)), 231 TestScenario(kManyCalls_Mixed3, arraysize(kManyCalls_Mixed3)),
230 TestScenario(kManyCalls_Mixed4, arraysize(kManyCalls_Mixed4)), 232 TestScenario(kManyCalls_Mixed4, arraysize(kManyCalls_Mixed4)),
231 TestScenario(kManyCalls_Mixed5, arraysize(kManyCalls_Mixed5)))); 233 TestScenario(kManyCalls_Mixed5, arraysize(kManyCalls_Mixed5))));
232 234
233 } // namespace cast 235 } // namespace cast
234 } // namespace media 236 } // namespace media
OLDNEW
« no previous file with comments | « media/cast/audio_receiver/audio_receiver_unittest.cc ('k') | media/cast/audio_sender/audio_sender_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698