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

Side by Side Diff: chromeos/disks/disk_mount_manager_unittest.cc

Issue 12537016: Add callback to DiskMountManager::UnmountPath (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 7 years, 9 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
« no previous file with comments | « chromeos/disks/disk_mount_manager.cc ('k') | chromeos/disks/mock_disk_mount_manager.h » ('j') | 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/bind.h" 5 #include "base/bind.h"
6 #include "base/message_loop.h" 6 #include "base/message_loop.h"
7 #include "chromeos/dbus/mock_cros_disks_client.h" 7 #include "chromeos/dbus/mock_cros_disks_client.h"
8 #include "chromeos/dbus/mock_dbus_thread_manager.h" 8 #include "chromeos/dbus/mock_dbus_thread_manager.h"
9 #include "chromeos/disks/disk_mount_manager.h" 9 #include "chromeos/disks/disk_mount_manager.h"
10 #include "testing/gmock/include/gmock/gmock.h" 10 #include "testing/gmock/include/gmock/gmock.h"
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 // Cros disks will respond asynchronoulsy, so let's drain the message loop. 324 // Cros disks will respond asynchronoulsy, so let's drain the message loop.
325 message_loop_.RunUntilIdle(); 325 message_loop_.RunUntilIdle();
326 326
327 // The device mount should be gone. 327 // The device mount should be gone.
328 EXPECT_FALSE(HasMountPoint("/device/mount_path")); 328 EXPECT_FALSE(HasMountPoint("/device/mount_path"));
329 } 329 }
330 330
331 // Tests the case where there are two format requests for the same device. 331 // Tests the case where there are two format requests for the same device.
332 TEST_F(DiskMountManagerTest, Format_ConcurrentFormatCalls) { 332 TEST_F(DiskMountManagerTest, Format_ConcurrentFormatCalls) {
333 // Set up cros disks client mocks. 333 // Set up cros disks client mocks.
334 // Only the first format request should be processed (for the other one there 334 // Only the first format request should be processed (the second unmount
335 // should be an error before device unmount is attempted). 335 // request fails because the device is already unmounted at that point).
336 // CrosDisksClient will report that the format process for the first request 336 // CrosDisksClient will report that the format process for the first request
337 // is successfully started. 337 // is successfully started.
338 EXPECT_CALL(*mock_cros_disks_client_, 338 EXPECT_CALL(*mock_cros_disks_client_,
339 Unmount("/device/mount_path", chromeos::UNMOUNT_OPTIONS_NONE, 339 Unmount("/device/mount_path", chromeos::UNMOUNT_OPTIONS_NONE,
340 _, _)) 340 _, _))
341 .WillOnce(MockUnmountPath(true)); 341 .WillOnce(MockUnmountPath(true))
342 .WillOnce(MockUnmountPath(false));
342 343
343 EXPECT_CALL(*mock_cros_disks_client_, 344 EXPECT_CALL(*mock_cros_disks_client_,
344 FormatDevice("/device/source_path", "vfat", _, _)) 345 FormatDevice("/device/source_path", "vfat", _, _))
345 .WillOnce(MockFormatDevice(true)); 346 .WillOnce(MockFormatDevice(true));
346 347
347 // Set up expectations for observer mock. 348 // Set up expectations for observer mock.
348 // The observer should get two FORMAT_STARTED events, one for each format 349 // The observer should get two FORMAT_STARTED events, one for each format
349 // request, but with different error codes (the formatting will be started 350 // request, but with different error codes (the formatting will be started
350 // only for the first request). 351 // only for the first request).
351 // There should alos be one UNMOUNTING event, since the device should get 352 // There should be only one UNMOUNTING event. The result of the second one
352 // unmounted for the first request. 353 // should not be reported as the mount point will go away after the first
354 // request.
353 // 355 //
354 // Note that in this test the format completion signal will not be simulated, 356 // Note that in this test the format completion signal will not be simulated,
355 // so the observer should not get FORMAT_COMPLETED signal. 357 // so the observer should not get FORMAT_COMPLETED signal.
356 { 358 {
357 InSequence s; 359 InSequence s;
358 360
359 EXPECT_CALL(observer_, OnFormatEvent(DiskMountManager::FORMAT_STARTED,
360 chromeos::FORMAT_ERROR_UNKNOWN,
361 "/device/source_path"))
362 .Times(1);
363
364 EXPECT_CALL(observer_, 361 EXPECT_CALL(observer_,
365 OnMountEvent(DiskMountManager::UNMOUNTING, 362 OnMountEvent(DiskMountManager::UNMOUNTING,
366 chromeos::MOUNT_ERROR_NONE, 363 chromeos::MOUNT_ERROR_NONE,
367 Field(&DiskMountManager::MountPointInfo::mount_path, 364 Field(&DiskMountManager::MountPointInfo::mount_path,
368 "/device/mount_path"))) 365 "/device/mount_path")))
369 .Times(1); 366 .Times(1);
370 367
371 EXPECT_CALL(observer_, OnFormatEvent(DiskMountManager::FORMAT_STARTED, 368 EXPECT_CALL(observer_, OnFormatEvent(DiskMountManager::FORMAT_STARTED,
369 chromeos::FORMAT_ERROR_UNKNOWN,
370 "/device/source_path"))
371 .Times(1);
372
373 EXPECT_CALL(observer_, OnFormatEvent(DiskMountManager::FORMAT_STARTED,
372 chromeos::FORMAT_ERROR_NONE, 374 chromeos::FORMAT_ERROR_NONE,
373 "/device/source_path")) 375 "/device/source_path"))
374 .Times(1); 376 .Times(1);
375 } 377 }
376 378
377 // Start the test. 379 // Start the test.
378 DiskMountManager::GetInstance()->FormatMountedDevice("/device/mount_path"); 380 DiskMountManager::GetInstance()->FormatMountedDevice("/device/mount_path");
379 DiskMountManager::GetInstance()->FormatMountedDevice("/device/mount_path"); 381 DiskMountManager::GetInstance()->FormatMountedDevice("/device/mount_path");
380 382
381 // Cros disks will respond asynchronoulsy, so let's drain the message loop. 383 // Cros disks will respond asynchronoulsy, so let's drain the message loop.
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
616 // Wait for Unmount and FormatDevice calls to end. 618 // Wait for Unmount and FormatDevice calls to end.
617 message_loop_.RunUntilIdle(); 619 message_loop_.RunUntilIdle();
618 620
619 // Simulate cros_disks reporting success. 621 // Simulate cros_disks reporting success.
620 mock_cros_disks_client_->SendMountEvent( 622 mock_cros_disks_client_->SendMountEvent(
621 chromeos::CROS_DISKS_FORMATTING_FINISHED, "/device/source_path"); 623 chromeos::CROS_DISKS_FORMATTING_FINISHED, "/device/source_path");
622 } 624 }
623 625
624 } // namespace 626 } // namespace
625 627
OLDNEW
« no previous file with comments | « chromeos/disks/disk_mount_manager.cc ('k') | chromeos/disks/mock_disk_mount_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698