| // Copyright 2019 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "cros-disks/disk_monitor.h" |
| |
| #include <base/files/file_path.h> |
| #include <base/logging.h> |
| #include <base/stl_util.h> |
| #include <gmock/gmock.h> |
| #include <gtest/gtest.h> |
| |
| #include "cros-disks/device_ejector.h" |
| |
| namespace cros_disks { |
| |
| class DiskMonitorTest : public ::testing::Test { |
| public: |
| DiskMonitorTest() = default; |
| |
| protected: |
| DiskMonitor monitor_; |
| }; |
| |
| TEST_F(DiskMonitorTest, EnumerateDisks) { |
| std::vector<Disk> disks = monitor_.EnumerateDisks(); |
| } |
| |
| // TODO(crbug.com/1002570): Disabled due to flakiness. This test relies on the |
| // disk enumeration being stable for the life of the tests. However, if another |
| // process on the system is modifying disks (i.e. adding/removing loopback |
| // devices), this test might fail because a device found by EnumerateDisks() may |
| // no longer exist when GetDiskByDevicePath() is called. |
| TEST_F(DiskMonitorTest, DISABLED_GetDiskByDevicePath) { |
| std::vector<Disk> disks = monitor_.EnumerateDisks(); |
| if (disks.empty()) { |
| LOG(WARNING) << "No disks found to test."; |
| } |
| |
| for (const auto& found_disk : disks) { |
| std::string device_path = found_disk.device_file; |
| LOG(INFO) << "Using device_path: " << device_path << "\n"; |
| |
| Disk disk; |
| EXPECT_TRUE( |
| monitor_.GetDiskByDevicePath(base::FilePath(device_path), &disk)); |
| EXPECT_EQ(device_path, disk.device_file); |
| } |
| } |
| |
| TEST_F(DiskMonitorTest, GetDiskByNonexistentDevicePath) { |
| Disk disk; |
| base::FilePath device_path("/dev/nonexistent-path"); |
| EXPECT_FALSE(monitor_.GetDiskByDevicePath(device_path, &disk)); |
| } |
| |
| } // namespace cros_disks |