| // Copyright 2022 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chrome/browser/ash/telemetry_extension/diagnostics_service_ash.h" |
| |
| #include <cstdint> |
| #include <memory> |
| #include <utility> |
| #include <vector> |
| |
| #include "base/test/task_environment.h" |
| #include "base/test/test_future.h" |
| #include "base/values.h" |
| #include "chromeos/ash/components/mojo_service_manager/fake_mojo_service_manager.h" |
| #include "chromeos/ash/services/cros_healthd/public/cpp/fake_cros_healthd.h" |
| #include "chromeos/ash/services/cros_healthd/public/mojom/cros_healthd_diagnostics.mojom.h" |
| #include "chromeos/crosapi/mojom/diagnostics_service.mojom.h" |
| #include "chromeos/crosapi/mojom/nullable_primitives.mojom.h" |
| #include "testing/gmock/include/gmock/gmock.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| #include "third_party/abseil-cpp/absl/types/optional.h" |
| |
| namespace ash { |
| |
| class DiagnosticsServiceAshTest : public testing::Test { |
| public: |
| // testing::Test: |
| void SetUp() override { cros_healthd::FakeCrosHealthd::Initialize(); } |
| void TearDown() override { cros_healthd::FakeCrosHealthd::Shutdown(); } |
| |
| crosapi::mojom::DiagnosticsServiceProxy* diagnostics_service() { |
| return remote_diagnostics_service_.get(); |
| } |
| |
| protected: |
| void SetSuccessfulRoutineResponse() { |
| auto response = cros_healthd::mojom::RunRoutineResponse::New(); |
| response->status = cros_healthd::mojom::DiagnosticRoutineStatusEnum::kReady; |
| response->id = 42; |
| cros_healthd::FakeCrosHealthd::Get()->SetRunRoutineResponseForTesting( |
| response); |
| } |
| |
| void ValidateResponse( |
| const crosapi::mojom::DiagnosticsRunRoutineResponsePtr& result, |
| cros_healthd::mojom::DiagnosticRoutineEnum expected_routine) { |
| EXPECT_EQ(result->id, 42); |
| EXPECT_EQ(result->status, |
| crosapi::mojom::DiagnosticsRoutineStatusEnum::kReady); |
| EXPECT_EQ(cros_healthd::FakeCrosHealthd::Get()->GetLastRunRoutine(), |
| expected_routine); |
| } |
| |
| private: |
| base::test::TaskEnvironment task_environment_; |
| ::ash::mojo_service_manager::FakeMojoServiceManager fake_service_manager_; |
| |
| mojo::Remote<crosapi::mojom::DiagnosticsService> remote_diagnostics_service_; |
| std::unique_ptr<crosapi::mojom::DiagnosticsService> diagnostics_service_{ |
| DiagnosticsServiceAsh::Factory::Create( |
| remote_diagnostics_service_.BindNewPipeAndPassReceiver())}; |
| }; |
| |
| TEST_F(DiagnosticsServiceAshTest, GetAvailableRoutinesSuccess) { |
| // Configure FakeCrosHealthd. |
| cros_healthd::FakeCrosHealthd::Get()->SetAvailableRoutinesForTesting({ |
| cros_healthd::mojom::DiagnosticRoutineEnum::kAcPower, |
| cros_healthd::mojom::DiagnosticRoutineEnum::kBatteryCapacity, |
| cros_healthd::mojom::DiagnosticRoutineEnum::kBatteryCharge, |
| cros_healthd::mojom::DiagnosticRoutineEnum::kBatteryDischarge, |
| cros_healthd::mojom::DiagnosticRoutineEnum::kBatteryHealth, |
| cros_healthd::mojom::DiagnosticRoutineEnum::kCpuCache, |
| cros_healthd::mojom::DiagnosticRoutineEnum::kFloatingPointAccuracy, |
| cros_healthd::mojom::DiagnosticRoutineEnum::kPrimeSearch, |
| cros_healthd::mojom::DiagnosticRoutineEnum::kCpuStress, |
| cros_healthd::mojom::DiagnosticRoutineEnum::kDiskRead, |
| cros_healthd::mojom::DiagnosticRoutineEnum::kDnsResolution, |
| cros_healthd::mojom::DiagnosticRoutineEnum::kDnsResolverPresent, |
| cros_healthd::mojom::DiagnosticRoutineEnum::kLanConnectivity, |
| cros_healthd::mojom::DiagnosticRoutineEnum::kMemory, |
| cros_healthd::mojom::DiagnosticRoutineEnum::kNvmeWearLevel, |
| cros_healthd::mojom::DiagnosticRoutineEnum::kSignalStrength, |
| cros_healthd::mojom::DiagnosticRoutineEnum::kGatewayCanBePinged, |
| cros_healthd::mojom::DiagnosticRoutineEnum::kSmartctlCheck, |
| cros_healthd::mojom::DiagnosticRoutineEnum::kSensitiveSensor, |
| cros_healthd::mojom::DiagnosticRoutineEnum::kNvmeSelfTest, |
| cros_healthd::mojom::DiagnosticRoutineEnum::kFingerprintAlive, |
| cros_healthd::mojom::DiagnosticRoutineEnum:: |
| kSmartctlCheckWithPercentageUsed, |
| }); |
| |
| base::test::TestFuture< |
| const std::vector<crosapi::mojom::DiagnosticsRoutineEnum>&> |
| future; |
| diagnostics_service()->GetAvailableRoutines(future.GetCallback()); |
| |
| ASSERT_TRUE(future.Wait()); |
| |
| EXPECT_THAT( |
| future.Get(), |
| testing::ElementsAre( |
| crosapi::mojom::DiagnosticsRoutineEnum::kAcPower, |
| crosapi::mojom::DiagnosticsRoutineEnum::kBatteryCapacity, |
| crosapi::mojom::DiagnosticsRoutineEnum::kBatteryCharge, |
| crosapi::mojom::DiagnosticsRoutineEnum::kBatteryDischarge, |
| crosapi::mojom::DiagnosticsRoutineEnum::kBatteryHealth, |
| crosapi::mojom::DiagnosticsRoutineEnum::kCpuCache, |
| crosapi::mojom::DiagnosticsRoutineEnum::kFloatingPointAccuracy, |
| crosapi::mojom::DiagnosticsRoutineEnum::kPrimeSearch, |
| crosapi::mojom::DiagnosticsRoutineEnum::kCpuStress, |
| crosapi::mojom::DiagnosticsRoutineEnum::kDiskRead, |
| crosapi::mojom::DiagnosticsRoutineEnum::kDnsResolution, |
| crosapi::mojom::DiagnosticsRoutineEnum::kDnsResolverPresent, |
| crosapi::mojom::DiagnosticsRoutineEnum::kLanConnectivity, |
| crosapi::mojom::DiagnosticsRoutineEnum::kMemory, |
| crosapi::mojom::DiagnosticsRoutineEnum::kNvmeWearLevel, |
| crosapi::mojom::DiagnosticsRoutineEnum::kSignalStrength, |
| crosapi::mojom::DiagnosticsRoutineEnum::kGatewayCanBePinged, |
| crosapi::mojom::DiagnosticsRoutineEnum::kSmartctlCheck, |
| crosapi::mojom::DiagnosticsRoutineEnum::kSensitiveSensor, |
| crosapi::mojom::DiagnosticsRoutineEnum::kNvmeSelfTest, |
| crosapi::mojom::DiagnosticsRoutineEnum::kFingerprintAlive, |
| crosapi::mojom::DiagnosticsRoutineEnum:: |
| kSmartctlCheckWithPercentageUsed)); |
| } |
| |
| TEST_F(DiagnosticsServiceAshTest, GetRoutineUpdateSuccess) { |
| constexpr char kStatusMessage[] = "Routine ran by Google."; |
| constexpr uint32_t kProgress = 87; |
| |
| // Configure FakeCrosHealthd. |
| { |
| auto non_interactive_routine_update = |
| cros_healthd::mojom::NonInteractiveRoutineUpdate::New(); |
| non_interactive_routine_update->status = |
| cros_healthd::mojom::DiagnosticRoutineStatusEnum::kReady; |
| non_interactive_routine_update->status_message = kStatusMessage; |
| |
| auto routine_update_union = |
| cros_healthd::mojom::RoutineUpdateUnion::NewNoninteractiveUpdate( |
| std::move(non_interactive_routine_update)); |
| |
| auto response = cros_healthd::mojom::RoutineUpdate::New(); |
| response->progress_percent = kProgress; |
| response->routine_update_union = std::move(routine_update_union); |
| |
| cros_healthd::FakeCrosHealthd::Get()->SetGetRoutineUpdateResponseForTesting( |
| response); |
| |
| base::Value::Dict expected_passed_parameters; |
| expected_passed_parameters.Set("id", 123456); |
| expected_passed_parameters.Set( |
| "command", |
| static_cast<int32_t>( |
| crosapi::mojom::DiagnosticsRoutineCommandEnum::kGetStatus)); |
| expected_passed_parameters.Set("include_output", true); |
| cros_healthd::FakeCrosHealthd::Get() |
| ->SetExpectedLastPassedDiagnosticsParametersForTesting( |
| std::move(expected_passed_parameters)); |
| } |
| |
| base::test::TestFuture<crosapi::mojom::DiagnosticsRoutineUpdatePtr> future; |
| diagnostics_service()->GetRoutineUpdate( |
| 123456, crosapi::mojom::DiagnosticsRoutineCommandEnum::kGetStatus, true, |
| future.GetCallback()); |
| |
| ASSERT_TRUE(future.Wait()); |
| |
| const auto& result = future.Get(); |
| EXPECT_EQ(result->progress_percent, kProgress); |
| ASSERT_TRUE(result->routine_update_union); |
| ASSERT_TRUE(result->routine_update_union->is_noninteractive_update()); |
| |
| const auto& update_result = |
| result->routine_update_union->get_noninteractive_update(); |
| EXPECT_EQ(update_result->status_message, kStatusMessage); |
| EXPECT_EQ(update_result->status, |
| crosapi::mojom::DiagnosticsRoutineStatusEnum::kReady); |
| EXPECT_TRUE(cros_healthd::FakeCrosHealthd::Get() |
| ->DidExpectedDiagnosticsParametersMatch()); |
| } |
| |
| TEST_F(DiagnosticsServiceAshTest, RunAcPowerRoutineSuccess) { |
| // Configure FakeCrosHealthd. |
| SetSuccessfulRoutineResponse(); |
| base::Value::Dict expected_passed_parameters; |
| expected_passed_parameters.Set( |
| "expected_status", |
| static_cast<int32_t>( |
| crosapi::mojom::DiagnosticsAcPowerStatusEnum::kConnected)); |
| cros_healthd::FakeCrosHealthd::Get() |
| ->SetExpectedLastPassedDiagnosticsParametersForTesting( |
| std::move(expected_passed_parameters)); |
| |
| base::test::TestFuture<crosapi::mojom::DiagnosticsRunRoutineResponsePtr> |
| future; |
| diagnostics_service()->RunAcPowerRoutine( |
| crosapi::mojom::DiagnosticsAcPowerStatusEnum::kConnected, absl::nullopt, |
| future.GetCallback()); |
| |
| ASSERT_TRUE(future.Wait()); |
| const auto& result = future.Get(); |
| ValidateResponse(result, |
| cros_healthd::mojom::DiagnosticRoutineEnum::kAcPower); |
| EXPECT_TRUE(cros_healthd::FakeCrosHealthd::Get() |
| ->DidExpectedDiagnosticsParametersMatch()); |
| } |
| |
| TEST_F(DiagnosticsServiceAshTest, RunBatteryCapacityRoutineSuccess) { |
| // Configure FakeCrosHealthd. |
| SetSuccessfulRoutineResponse(); |
| |
| base::test::TestFuture<crosapi::mojom::DiagnosticsRunRoutineResponsePtr> |
| future; |
| diagnostics_service()->RunBatteryCapacityRoutine(future.GetCallback()); |
| |
| ASSERT_TRUE(future.Wait()); |
| const auto& result = future.Get(); |
| ValidateResponse( |
| result, cros_healthd::mojom::DiagnosticRoutineEnum::kBatteryCapacity); |
| } |
| |
| TEST_F(DiagnosticsServiceAshTest, RunBatteryChargeRoutineSuccess) { |
| // Configure FakeCrosHealthd. |
| SetSuccessfulRoutineResponse(); |
| base::Value::Dict expected_passed_parameters; |
| expected_passed_parameters.Set("length_seconds", 423); |
| expected_passed_parameters.Set("minimum_charge_percent_required", 123); |
| cros_healthd::FakeCrosHealthd::Get() |
| ->SetExpectedLastPassedDiagnosticsParametersForTesting( |
| std::move(expected_passed_parameters)); |
| |
| base::test::TestFuture<crosapi::mojom::DiagnosticsRunRoutineResponsePtr> |
| future; |
| diagnostics_service()->RunBatteryChargeRoutine(423, 123, |
| future.GetCallback()); |
| |
| ASSERT_TRUE(future.Wait()); |
| const auto& result = future.Get(); |
| ValidateResponse(result, |
| cros_healthd::mojom::DiagnosticRoutineEnum::kBatteryCharge); |
| EXPECT_TRUE(cros_healthd::FakeCrosHealthd::Get() |
| ->DidExpectedDiagnosticsParametersMatch()); |
| } |
| |
| TEST_F(DiagnosticsServiceAshTest, RunBatteryDischargeRoutineSuccess) { |
| // Configure FakeCrosHealthd. |
| SetSuccessfulRoutineResponse(); |
| base::Value::Dict expected_passed_parameters; |
| expected_passed_parameters.Set("length_seconds", 423); |
| expected_passed_parameters.Set("maximum_discharge_percent_allowed", 123); |
| cros_healthd::FakeCrosHealthd::Get() |
| ->SetExpectedLastPassedDiagnosticsParametersForTesting( |
| std::move(expected_passed_parameters)); |
| |
| base::test::TestFuture<crosapi::mojom::DiagnosticsRunRoutineResponsePtr> |
| future; |
| diagnostics_service()->RunBatteryDischargeRoutine(423, 123, |
| future.GetCallback()); |
| |
| ASSERT_TRUE(future.Wait()); |
| const auto& result = future.Get(); |
| ValidateResponse( |
| result, cros_healthd::mojom::DiagnosticRoutineEnum::kBatteryDischarge); |
| EXPECT_TRUE(cros_healthd::FakeCrosHealthd::Get() |
| ->DidExpectedDiagnosticsParametersMatch()); |
| } |
| |
| TEST_F(DiagnosticsServiceAshTest, RunBatteryHealthRoutineSuccess) { |
| // Configure FakeCrosHealthd. |
| SetSuccessfulRoutineResponse(); |
| |
| base::test::TestFuture<crosapi::mojom::DiagnosticsRunRoutineResponsePtr> |
| future; |
| diagnostics_service()->RunBatteryHealthRoutine(future.GetCallback()); |
| |
| ASSERT_TRUE(future.Wait()); |
| const auto& result = future.Get(); |
| ValidateResponse(result, |
| cros_healthd::mojom::DiagnosticRoutineEnum::kBatteryHealth); |
| } |
| |
| TEST_F(DiagnosticsServiceAshTest, RunCpuCacheRoutineSuccess) { |
| // Configure FakeCrosHealthd. |
| SetSuccessfulRoutineResponse(); |
| base::Value::Dict expected_passed_parameters; |
| expected_passed_parameters.Set("length_seconds", 100); |
| cros_healthd::FakeCrosHealthd::Get() |
| ->SetExpectedLastPassedDiagnosticsParametersForTesting( |
| std::move(expected_passed_parameters)); |
| |
| base::test::TestFuture<crosapi::mojom::DiagnosticsRunRoutineResponsePtr> |
| future; |
| diagnostics_service()->RunCpuCacheRoutine(100, future.GetCallback()); |
| |
| ASSERT_TRUE(future.Wait()); |
| const auto& result = future.Get(); |
| ValidateResponse(result, |
| cros_healthd::mojom::DiagnosticRoutineEnum::kCpuCache); |
| EXPECT_TRUE(cros_healthd::FakeCrosHealthd::Get() |
| ->DidExpectedDiagnosticsParametersMatch()); |
| } |
| |
| TEST_F(DiagnosticsServiceAshTest, RunCpuStressRoutineSuccess) { |
| // Configure FakeCrosHealthd. |
| SetSuccessfulRoutineResponse(); |
| base::Value::Dict expected_passed_parameters; |
| expected_passed_parameters.Set("length_seconds", 100); |
| cros_healthd::FakeCrosHealthd::Get() |
| ->SetExpectedLastPassedDiagnosticsParametersForTesting( |
| std::move(expected_passed_parameters)); |
| |
| base::test::TestFuture<crosapi::mojom::DiagnosticsRunRoutineResponsePtr> |
| future; |
| diagnostics_service()->RunCpuStressRoutine(100, future.GetCallback()); |
| |
| ASSERT_TRUE(future.Wait()); |
| const auto& result = future.Get(); |
| ValidateResponse(result, |
| cros_healthd::mojom::DiagnosticRoutineEnum::kCpuStress); |
| EXPECT_TRUE(cros_healthd::FakeCrosHealthd::Get() |
| ->DidExpectedDiagnosticsParametersMatch()); |
| } |
| |
| TEST_F(DiagnosticsServiceAshTest, RunDiskReadRoutineSuccess) { |
| // Configure FakeCrosHealthd. |
| SetSuccessfulRoutineResponse(); |
| base::Value::Dict expected_passed_parameters; |
| expected_passed_parameters.Set( |
| "type", |
| static_cast<int32_t>( |
| crosapi::mojom::DiagnosticsDiskReadRoutineTypeEnum::kLinearRead)); |
| expected_passed_parameters.Set("length_seconds", 100); |
| expected_passed_parameters.Set("file_size_mb", 32); |
| cros_healthd::FakeCrosHealthd::Get() |
| ->SetExpectedLastPassedDiagnosticsParametersForTesting( |
| std::move(expected_passed_parameters)); |
| |
| base::test::TestFuture<crosapi::mojom::DiagnosticsRunRoutineResponsePtr> |
| future; |
| diagnostics_service()->RunDiskReadRoutine( |
| crosapi::mojom::DiagnosticsDiskReadRoutineTypeEnum::kLinearRead, 100, 32, |
| future.GetCallback()); |
| |
| ASSERT_TRUE(future.Wait()); |
| const auto& result = future.Get(); |
| ValidateResponse(result, |
| cros_healthd::mojom::DiagnosticRoutineEnum::kDiskRead); |
| EXPECT_TRUE(cros_healthd::FakeCrosHealthd::Get() |
| ->DidExpectedDiagnosticsParametersMatch()); |
| } |
| |
| TEST_F(DiagnosticsServiceAshTest, RunDnsResolutionRoutineSuccess) { |
| // Configure FakeCrosHealthd. |
| SetSuccessfulRoutineResponse(); |
| |
| base::test::TestFuture<crosapi::mojom::DiagnosticsRunRoutineResponsePtr> |
| future; |
| diagnostics_service()->RunDnsResolutionRoutine(future.GetCallback()); |
| |
| ASSERT_TRUE(future.Wait()); |
| const auto& result = future.Get(); |
| ValidateResponse(result, |
| cros_healthd::mojom::DiagnosticRoutineEnum::kDnsResolution); |
| } |
| |
| TEST_F(DiagnosticsServiceAshTest, RunDnsResolverPresentRoutineSuccess) { |
| // Configure FakeCrosHealthd. |
| SetSuccessfulRoutineResponse(); |
| |
| base::test::TestFuture<crosapi::mojom::DiagnosticsRunRoutineResponsePtr> |
| future; |
| diagnostics_service()->RunDnsResolverPresentRoutine(future.GetCallback()); |
| |
| ASSERT_TRUE(future.Wait()); |
| const auto& result = future.Get(); |
| ValidateResponse( |
| result, cros_healthd::mojom::DiagnosticRoutineEnum::kDnsResolverPresent); |
| } |
| |
| TEST_F(DiagnosticsServiceAshTest, RunEmmcLifetimeRoutineSuccess) { |
| // Configure FakeCrosHealthd. |
| SetSuccessfulRoutineResponse(); |
| |
| base::test::TestFuture<crosapi::mojom::DiagnosticsRunRoutineResponsePtr> |
| future; |
| |
| diagnostics_service()->RunEmmcLifetimeRoutine(future.GetCallback()); |
| |
| ASSERT_TRUE(future.Wait()); |
| const auto& result = future.Get(); |
| ValidateResponse(result, |
| cros_healthd::mojom::DiagnosticRoutineEnum::kEmmcLifetime); |
| } |
| |
| TEST_F(DiagnosticsServiceAshTest, RunFingerprintAliveRoutineSuccess) { |
| // Configure FakeCrosHealthd. |
| SetSuccessfulRoutineResponse(); |
| |
| base::test::TestFuture<crosapi::mojom::DiagnosticsRunRoutineResponsePtr> |
| future; |
| diagnostics_service()->RunFingerprintAliveRoutine(future.GetCallback()); |
| |
| ASSERT_TRUE(future.Wait()); |
| const auto& result = future.Get(); |
| ValidateResponse( |
| result, cros_healthd::mojom::DiagnosticRoutineEnum::kFingerprintAlive); |
| } |
| |
| TEST_F(DiagnosticsServiceAshTest, RunFloatingPointAccuracyRoutineSuccess) { |
| // Configure FakeCrosHealthd. |
| SetSuccessfulRoutineResponse(); |
| |
| base::test::TestFuture<crosapi::mojom::DiagnosticsRunRoutineResponsePtr> |
| future; |
| diagnostics_service()->RunFloatingPointAccuracyRoutine(100, |
| future.GetCallback()); |
| |
| ASSERT_TRUE(future.Wait()); |
| const auto& result = future.Get(); |
| ValidateResponse( |
| result, |
| cros_healthd::mojom::DiagnosticRoutineEnum::kFloatingPointAccuracy); |
| } |
| |
| TEST_F(DiagnosticsServiceAshTest, RunGatewayCanBePingedRoutineSuccess) { |
| // Configure FakeCrosHealthd. |
| SetSuccessfulRoutineResponse(); |
| |
| base::test::TestFuture<crosapi::mojom::DiagnosticsRunRoutineResponsePtr> |
| future; |
| diagnostics_service()->RunGatewayCanBePingedRoutine(future.GetCallback()); |
| |
| ASSERT_TRUE(future.Wait()); |
| const auto& result = future.Get(); |
| ValidateResponse( |
| result, cros_healthd::mojom::DiagnosticRoutineEnum::kGatewayCanBePinged); |
| } |
| |
| TEST_F(DiagnosticsServiceAshTest, RunLanConnectivityRoutineSuccess) { |
| // Configure FakeCrosHealthd. |
| SetSuccessfulRoutineResponse(); |
| |
| base::test::TestFuture<crosapi::mojom::DiagnosticsRunRoutineResponsePtr> |
| future; |
| diagnostics_service()->RunLanConnectivityRoutine(future.GetCallback()); |
| |
| ASSERT_TRUE(future.Wait()); |
| const auto& result = future.Get(); |
| ValidateResponse( |
| result, cros_healthd::mojom::DiagnosticRoutineEnum::kLanConnectivity); |
| } |
| |
| TEST_F(DiagnosticsServiceAshTest, RunMemoryRoutineSuccess) { |
| // Configure FakeCrosHealthd. |
| SetSuccessfulRoutineResponse(); |
| |
| base::test::TestFuture<crosapi::mojom::DiagnosticsRunRoutineResponsePtr> |
| future; |
| diagnostics_service()->RunMemoryRoutine(future.GetCallback()); |
| |
| ASSERT_TRUE(future.Wait()); |
| const auto& result = future.Get(); |
| ValidateResponse(result, cros_healthd::mojom::DiagnosticRoutineEnum::kMemory); |
| } |
| |
| TEST_F(DiagnosticsServiceAshTest, RunNvmeSelfTestRoutineSuccess) { |
| // Configure FakeCrosHealthd. |
| SetSuccessfulRoutineResponse(); |
| base::Value::Dict expected_passed_parameters; |
| expected_passed_parameters.Set( |
| "nvme_self_test_type", |
| static_cast<int32_t>( |
| crosapi::mojom::DiagnosticsNvmeSelfTestTypeEnum::kLongSelfTest)); |
| cros_healthd::FakeCrosHealthd::Get() |
| ->SetExpectedLastPassedDiagnosticsParametersForTesting( |
| std::move(expected_passed_parameters)); |
| |
| base::test::TestFuture<crosapi::mojom::DiagnosticsRunRoutineResponsePtr> |
| future; |
| diagnostics_service()->RunNvmeSelfTestRoutine( |
| crosapi::mojom::DiagnosticsNvmeSelfTestTypeEnum::kLongSelfTest, |
| future.GetCallback()); |
| |
| ASSERT_TRUE(future.Wait()); |
| const auto& result = future.Get(); |
| ValidateResponse(result, |
| cros_healthd::mojom::DiagnosticRoutineEnum::kNvmeSelfTest); |
| EXPECT_TRUE(cros_healthd::FakeCrosHealthd::Get() |
| ->DidExpectedDiagnosticsParametersMatch()); |
| } |
| |
| TEST_F(DiagnosticsServiceAshTest, RunNvmeWearLevelRoutineSuccess) { |
| // Configure FakeCrosHealthd. |
| SetSuccessfulRoutineResponse(); |
| base::Value::Dict expected_passed_parameters; |
| expected_passed_parameters.Set("wear_level_threshold", 80); |
| cros_healthd::FakeCrosHealthd::Get() |
| ->SetExpectedLastPassedDiagnosticsParametersForTesting( |
| std::move(expected_passed_parameters)); |
| |
| base::test::TestFuture<crosapi::mojom::DiagnosticsRunRoutineResponsePtr> |
| future; |
| diagnostics_service()->RunNvmeWearLevelRoutine(80, future.GetCallback()); |
| |
| ASSERT_TRUE(future.Wait()); |
| const auto& result = future.Get(); |
| ValidateResponse(result, |
| cros_healthd::mojom::DiagnosticRoutineEnum::kNvmeWearLevel); |
| EXPECT_TRUE(cros_healthd::FakeCrosHealthd::Get() |
| ->DidExpectedDiagnosticsParametersMatch()); |
| } |
| |
| TEST_F(DiagnosticsServiceAshTest, RunPrimeSearchRoutineSuccess) { |
| // Configure FakeCrosHealthd. |
| SetSuccessfulRoutineResponse(); |
| base::Value::Dict expected_passed_parameters; |
| expected_passed_parameters.Set("length_seconds", 100); |
| cros_healthd::FakeCrosHealthd::Get() |
| ->SetExpectedLastPassedDiagnosticsParametersForTesting( |
| std::move(expected_passed_parameters)); |
| |
| base::test::TestFuture<crosapi::mojom::DiagnosticsRunRoutineResponsePtr> |
| future; |
| diagnostics_service()->RunPrimeSearchRoutine(100, future.GetCallback()); |
| |
| ASSERT_TRUE(future.Wait()); |
| const auto& result = future.Get(); |
| ValidateResponse(result, |
| cros_healthd::mojom::DiagnosticRoutineEnum::kPrimeSearch); |
| EXPECT_TRUE(cros_healthd::FakeCrosHealthd::Get() |
| ->DidExpectedDiagnosticsParametersMatch()); |
| } |
| |
| TEST_F(DiagnosticsServiceAshTest, RunSensitiveSensorRoutineSuccess) { |
| // Configure FakeCrosHealthd. |
| SetSuccessfulRoutineResponse(); |
| |
| base::test::TestFuture<crosapi::mojom::DiagnosticsRunRoutineResponsePtr> |
| future; |
| diagnostics_service()->RunSensitiveSensorRoutine(future.GetCallback()); |
| |
| ASSERT_TRUE(future.Wait()); |
| const auto& result = future.Get(); |
| ValidateResponse( |
| result, cros_healthd::mojom::DiagnosticRoutineEnum::kSensitiveSensor); |
| } |
| |
| TEST_F(DiagnosticsServiceAshTest, RunSignalStrengthRoutineSuccess) { |
| // Configure FakeCrosHealthd. |
| SetSuccessfulRoutineResponse(); |
| |
| base::test::TestFuture<crosapi::mojom::DiagnosticsRunRoutineResponsePtr> |
| future; |
| diagnostics_service()->RunSignalStrengthRoutine(future.GetCallback()); |
| |
| ASSERT_TRUE(future.Wait()); |
| const auto& result = future.Get(); |
| ValidateResponse(result, |
| cros_healthd::mojom::DiagnosticRoutineEnum::kSignalStrength); |
| } |
| |
| TEST_F(DiagnosticsServiceAshTest, RunSmartctlCheckRoutineSuccess) { |
| // Configure FakeCrosHealthd. |
| SetSuccessfulRoutineResponse(); |
| |
| base::test::TestFuture<crosapi::mojom::DiagnosticsRunRoutineResponsePtr> |
| future; |
| diagnostics_service()->RunSmartctlCheckRoutine(nullptr, future.GetCallback()); |
| |
| ASSERT_TRUE(future.Wait()); |
| const auto& result = future.Get(); |
| ValidateResponse(result, cros_healthd::mojom::DiagnosticRoutineEnum:: |
| kSmartctlCheckWithPercentageUsed); |
| } |
| |
| TEST_F(DiagnosticsServiceAshTest, RunSmartctlCheckRoutineWithParameterSuccess) { |
| // Configure FakeCrosHealthd. |
| SetSuccessfulRoutineResponse(); |
| base::Value::Dict expected_passed_parameters; |
| expected_passed_parameters.Set("percentage_used_threshold", 42); |
| cros_healthd::FakeCrosHealthd::Get() |
| ->SetExpectedLastPassedDiagnosticsParametersForTesting( |
| std::move(expected_passed_parameters)); |
| |
| base::test::TestFuture<crosapi::mojom::DiagnosticsRunRoutineResponsePtr> |
| future; |
| diagnostics_service()->RunSmartctlCheckRoutine( |
| crosapi::mojom::UInt32Value::New(42), future.GetCallback()); |
| |
| ASSERT_TRUE(future.Wait()); |
| const auto& result = future.Get(); |
| ValidateResponse(result, cros_healthd::mojom::DiagnosticRoutineEnum:: |
| kSmartctlCheckWithPercentageUsed); |
| EXPECT_TRUE(cros_healthd::FakeCrosHealthd::Get() |
| ->DidExpectedDiagnosticsParametersMatch()); |
| } |
| |
| } // namespace ash |