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

Side by Side Diff: media/audio/linux/alsa_output_unittest.cc

Issue 542002: Retry 35837 linux: grab device name before closing it (Closed)
Patch Set: Created 10 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
« no previous file with comments | « media/audio/linux/alsa_output.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 "base/logging.h" 5 #include "base/logging.h"
6 #include "base/string_util.h" 6 #include "base/string_util.h"
7 #include "media/audio/linux/alsa_output.h" 7 #include "media/audio/linux/alsa_output.h"
8 #include "media/audio/linux/alsa_wrapper.h" 8 #include "media/audio/linux/alsa_wrapper.h"
9 #include "media/audio/linux/audio_manager_linux.h" 9 #include "media/audio/linux/audio_manager_linux.h"
10 #include "testing/gmock/include/gmock/gmock.h" 10 #include "testing/gmock/include/gmock/gmock.h"
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 Return(0))); 220 Return(0)));
221 EXPECT_CALL(mock_alsa_wrapper_, 221 EXPECT_CALL(mock_alsa_wrapper_,
222 PcmSetParams(_, _, _, _, _, _, 222 PcmSetParams(_, _, _, _, _, _,
223 AlsaPcmOutputStream::kMinLatencyMicros)) 223 AlsaPcmOutputStream::kMinLatencyMicros))
224 .WillOnce(Return(0)); 224 .WillOnce(Return(0));
225 225
226 ASSERT_TRUE(test_stream_->Open(kMinLatencyPacketSize)); 226 ASSERT_TRUE(test_stream_->Open(kMinLatencyPacketSize));
227 message_loop_.RunAllPending(); 227 message_loop_.RunAllPending();
228 228
229 // Now close it and test that everything was released. 229 // Now close it and test that everything was released.
230 EXPECT_CALL(mock_alsa_wrapper_, PcmClose(kFakeHandle)) .WillOnce(Return(0)); 230 EXPECT_CALL(mock_alsa_wrapper_, PcmClose(kFakeHandle)).WillOnce(Return(0));
231 EXPECT_CALL(mock_alsa_wrapper_, PcmName(kFakeHandle))
232 .WillOnce(Return(kTestDeviceName));
231 EXPECT_CALL(mock_manager_, ReleaseStream(test_stream_.get())); 233 EXPECT_CALL(mock_manager_, ReleaseStream(test_stream_.get()));
232 test_stream_->Close(); 234 test_stream_->Close();
233 message_loop_.RunAllPending(); 235 message_loop_.RunAllPending();
234 236
235 Mock::VerifyAndClear(&mock_alsa_wrapper_); 237 Mock::VerifyAndClear(&mock_alsa_wrapper_);
236 Mock::VerifyAndClear(&mock_manager_); 238 Mock::VerifyAndClear(&mock_manager_);
237 239
238 // Test that having more packets ends up with a latency based on packet size. 240 // Test that having more packets ends up with a latency based on packet size.
239 const int kOverMinLatencyPacketSize = 241 const int kOverMinLatencyPacketSize =
240 (kPacketFramesInMinLatency + 1) * kTestBytesPerFrame; 242 (kPacketFramesInMinLatency + 1) * kTestBytesPerFrame;
(...skipping 10 matching lines...) Expand all
251 EXPECT_CALL(mock_alsa_wrapper_, 253 EXPECT_CALL(mock_alsa_wrapper_,
252 PcmSetParams(_, _, _, _, _, _, expected_micros)) 254 PcmSetParams(_, _, _, _, _, _, expected_micros))
253 .WillOnce(Return(0)); 255 .WillOnce(Return(0));
254 256
255 ASSERT_TRUE(test_stream_->Open(kOverMinLatencyPacketSize)); 257 ASSERT_TRUE(test_stream_->Open(kOverMinLatencyPacketSize));
256 message_loop_.RunAllPending(); 258 message_loop_.RunAllPending();
257 259
258 // Now close it and test that everything was released. 260 // Now close it and test that everything was released.
259 EXPECT_CALL(mock_alsa_wrapper_, PcmClose(kFakeHandle)) 261 EXPECT_CALL(mock_alsa_wrapper_, PcmClose(kFakeHandle))
260 .WillOnce(Return(0)); 262 .WillOnce(Return(0));
263 EXPECT_CALL(mock_alsa_wrapper_, PcmName(kFakeHandle))
264 .WillOnce(Return(kTestDeviceName));
261 EXPECT_CALL(mock_manager_, ReleaseStream(test_stream_.get())); 265 EXPECT_CALL(mock_manager_, ReleaseStream(test_stream_.get()));
262 test_stream_->Close(); 266 test_stream_->Close();
263 message_loop_.RunAllPending(); 267 message_loop_.RunAllPending();
264 268
265 Mock::VerifyAndClear(&mock_alsa_wrapper_); 269 Mock::VerifyAndClear(&mock_alsa_wrapper_);
266 Mock::VerifyAndClear(&mock_manager_); 270 Mock::VerifyAndClear(&mock_manager_);
267 } 271 }
268 272
269 TEST_F(AlsaPcmOutputStreamTest, OpenClose) { 273 TEST_F(AlsaPcmOutputStreamTest, OpenClose) {
270 int64 expected_micros = 2 * 274 int64 expected_micros = 2 *
(...skipping 25 matching lines...) Expand all
296 EXPECT_EQ(AlsaPcmOutputStream::kIsOpened, 300 EXPECT_EQ(AlsaPcmOutputStream::kIsOpened,
297 test_stream_->shared_data_.state()); 301 test_stream_->shared_data_.state());
298 EXPECT_EQ(kFakeHandle, test_stream_->playback_handle_); 302 EXPECT_EQ(kFakeHandle, test_stream_->playback_handle_);
299 EXPECT_EQ(kTestFramesPerPacket, test_stream_->frames_per_packet_); 303 EXPECT_EQ(kTestFramesPerPacket, test_stream_->frames_per_packet_);
300 EXPECT_TRUE(test_stream_->packet_.get()); 304 EXPECT_TRUE(test_stream_->packet_.get());
301 EXPECT_FALSE(test_stream_->stop_stream_); 305 EXPECT_FALSE(test_stream_->stop_stream_);
302 306
303 // Now close it and test that everything was released. 307 // Now close it and test that everything was released.
304 EXPECT_CALL(mock_alsa_wrapper_, PcmClose(kFakeHandle)) 308 EXPECT_CALL(mock_alsa_wrapper_, PcmClose(kFakeHandle))
305 .WillOnce(Return(0)); 309 .WillOnce(Return(0));
310 EXPECT_CALL(mock_alsa_wrapper_, PcmName(kFakeHandle))
311 .WillOnce(Return(kTestDeviceName));
306 EXPECT_CALL(mock_manager_, ReleaseStream(test_stream_.get())); 312 EXPECT_CALL(mock_manager_, ReleaseStream(test_stream_.get()));
307 test_stream_->Close(); 313 test_stream_->Close();
308 message_loop_.RunAllPending(); 314 message_loop_.RunAllPending();
309 315
310 EXPECT_TRUE(test_stream_->playback_handle_ == NULL); 316 EXPECT_TRUE(test_stream_->playback_handle_ == NULL);
311 EXPECT_FALSE(test_stream_->packet_.get()); 317 EXPECT_FALSE(test_stream_->packet_.get());
312 EXPECT_TRUE(test_stream_->stop_stream_); 318 EXPECT_TRUE(test_stream_->stop_stream_);
313 } 319 }
314 320
315 TEST_F(AlsaPcmOutputStreamTest, PcmOpenFailed) { 321 TEST_F(AlsaPcmOutputStreamTest, PcmOpenFailed) {
(...skipping 23 matching lines...) Expand all
339 } 345 }
340 346
341 TEST_F(AlsaPcmOutputStreamTest, PcmSetParamsFailed) { 347 TEST_F(AlsaPcmOutputStreamTest, PcmSetParamsFailed) {
342 EXPECT_CALL(mock_alsa_wrapper_, PcmOpen(_, _, _, _)) 348 EXPECT_CALL(mock_alsa_wrapper_, PcmOpen(_, _, _, _))
343 .WillOnce(DoAll(SetArgumentPointee<0>(kFakeHandle), 349 .WillOnce(DoAll(SetArgumentPointee<0>(kFakeHandle),
344 Return(0))); 350 Return(0)));
345 EXPECT_CALL(mock_alsa_wrapper_, PcmSetParams(_, _, _, _, _, _, _)) 351 EXPECT_CALL(mock_alsa_wrapper_, PcmSetParams(_, _, _, _, _, _, _))
346 .WillOnce(Return(kTestFailedErrno)); 352 .WillOnce(Return(kTestFailedErrno));
347 EXPECT_CALL(mock_alsa_wrapper_, PcmClose(kFakeHandle)) 353 EXPECT_CALL(mock_alsa_wrapper_, PcmClose(kFakeHandle))
348 .WillOnce(Return(0)); 354 .WillOnce(Return(0));
355 EXPECT_CALL(mock_alsa_wrapper_, PcmName(kFakeHandle))
356 .WillOnce(Return(kTestDeviceName));
349 EXPECT_CALL(mock_alsa_wrapper_, StrError(kTestFailedErrno)) 357 EXPECT_CALL(mock_alsa_wrapper_, StrError(kTestFailedErrno))
350 .WillOnce(Return(kDummyMessage)); 358 .WillOnce(Return(kDummyMessage));
351 359
352 // If open fails, the stream stays in kCreated because it has effectively had 360 // If open fails, the stream stays in kCreated because it has effectively had
353 // no changes. 361 // no changes.
354 ASSERT_TRUE(test_stream_->Open(kTestPacketSize)); 362 ASSERT_TRUE(test_stream_->Open(kTestPacketSize));
355 EXPECT_EQ(AlsaPcmOutputStream::kIsOpened, 363 EXPECT_EQ(AlsaPcmOutputStream::kIsOpened,
356 test_stream_->shared_data_.state()); 364 test_stream_->shared_data_.state());
357 ASSERT_FALSE(test_stream_->stop_stream_); 365 ASSERT_FALSE(test_stream_->stop_stream_);
358 message_loop_.RunAllPending(); 366 message_loop_.RunAllPending();
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
407 EXPECT_CALL(mock_alsa_wrapper_, PcmAvailUpdate(kFakeHandle)) 415 EXPECT_CALL(mock_alsa_wrapper_, PcmAvailUpdate(kFakeHandle))
408 .WillOnce(Return(1)); 416 .WillOnce(Return(1));
409 417
410 test_stream_->Start(&mock_callback); 418 test_stream_->Start(&mock_callback);
411 message_loop_.RunAllPending(); 419 message_loop_.RunAllPending();
412 420
413 EXPECT_CALL(mock_manager_, ReleaseStream(test_stream_.get())); 421 EXPECT_CALL(mock_manager_, ReleaseStream(test_stream_.get()));
414 EXPECT_CALL(mock_callback, OnClose(test_stream_.get())); 422 EXPECT_CALL(mock_callback, OnClose(test_stream_.get()));
415 EXPECT_CALL(mock_alsa_wrapper_, PcmClose(kFakeHandle)) 423 EXPECT_CALL(mock_alsa_wrapper_, PcmClose(kFakeHandle))
416 .WillOnce(Return(0)); 424 .WillOnce(Return(0));
425 EXPECT_CALL(mock_alsa_wrapper_, PcmName(kFakeHandle))
426 .WillOnce(Return(kTestDeviceName));
417 test_stream_->Close(); 427 test_stream_->Close();
418 message_loop_.RunAllPending(); 428 message_loop_.RunAllPending();
419 } 429 }
420 430
421 TEST_F(AlsaPcmOutputStreamTest, WritePacket_FinishedPacket) { 431 TEST_F(AlsaPcmOutputStreamTest, WritePacket_FinishedPacket) {
422 // Nothing should happen. Don't set any expectations and Our strict mocks 432 // Nothing should happen. Don't set any expectations and Our strict mocks
423 // should verify most of this. 433 // should verify most of this.
424 434
425 // Test regular used-up packet. 435 // Test regular used-up packet.
426 packet_.used = packet_.size; 436 packet_.used = packet_.size;
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
650 660
651 test_stream_->stop_stream_ = true; 661 test_stream_->stop_stream_ = true;
652 test_stream_->ScheduleNextWrite(&packet_); 662 test_stream_->ScheduleNextWrite(&packet_);
653 663
654 // TODO(ajwong): Find a way to test whether or not another task has been 664 // TODO(ajwong): Find a way to test whether or not another task has been
655 // posted so we can verify that the Alsa code will indeed break the task 665 // posted so we can verify that the Alsa code will indeed break the task
656 // posting loop. 666 // posting loop.
657 667
658 test_stream_->shared_data_.TransitionTo(AlsaPcmOutputStream::kIsClosed); 668 test_stream_->shared_data_.TransitionTo(AlsaPcmOutputStream::kIsClosed);
659 } 669 }
OLDNEW
« no previous file with comments | « media/audio/linux/alsa_output.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698