| // Copyright 2020 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. |
| |
| #ifndef DIAGNOSTICS_WILCO_DTC_SUPPORTD_FAKE_DIAGNOSTICS_SERVICE_H_ |
| #define DIAGNOSTICS_WILCO_DTC_SUPPORTD_FAKE_DIAGNOSTICS_SERVICE_H_ |
| |
| #include <cstdint> |
| #include <string> |
| #include <vector> |
| |
| #include <base/macros.h> |
| #include <mojo/public/cpp/bindings/binding.h> |
| #include <mojo/public/cpp/system/handle.h> |
| |
| #include "diagnostics/wilco_dtc_supportd/routine_service.h" |
| #include "mojo/cros_healthd.mojom.h" |
| #include "mojo/cros_healthd_diagnostics.mojom.h" |
| |
| namespace diagnostics { |
| |
| // Helper class that allows testing of the routine service. |
| class FakeDiagnosticsService final |
| : public RoutineService::Delegate, |
| public chromeos::cros_healthd::mojom::CrosHealthdDiagnosticsService { |
| public: |
| FakeDiagnosticsService(); |
| ~FakeDiagnosticsService(); |
| |
| // RoutineService::Delegate overrides: |
| bool GetCrosHealthdDiagnosticsService( |
| chromeos::cros_healthd::mojom::CrosHealthdDiagnosticsServiceRequest |
| service) override; |
| |
| // chromeos::cros_healthd::mojom::CrosHealthdDiagnosticsService overrides: |
| void GetAvailableRoutines(GetAvailableRoutinesCallback callback) override; |
| void GetRoutineUpdate( |
| int32_t id, |
| chromeos::cros_healthd::mojom::DiagnosticRoutineCommandEnum command, |
| bool include_output, |
| GetRoutineUpdateCallback callback) override; |
| void RunUrandomRoutine(uint32_t length_seconds, |
| RunUrandomRoutineCallback callback) override; |
| void RunBatteryCapacityRoutine( |
| uint32_t low_mah, |
| uint32_t high_mah, |
| RunBatteryCapacityRoutineCallback callback) override; |
| void RunBatteryHealthRoutine( |
| uint32_t maximum_cycle_count, |
| uint32_t percent_battery_wear_allowed, |
| RunBatteryHealthRoutineCallback callback) override; |
| void RunSmartctlCheckRoutine( |
| RunSmartctlCheckRoutineCallback callback) override; |
| void RunAcPowerRoutine( |
| chromeos::cros_healthd::mojom::AcPowerStatusEnum expected_status, |
| const base::Optional<std::string>& expected_power_type, |
| RunAcPowerRoutineCallback callback) override; |
| void RunCpuCacheRoutine(uint32_t length_seconds, |
| RunCpuCacheRoutineCallback callback) override; |
| void RunCpuStressRoutine(uint32_t length_seconds, |
| RunCpuStressRoutineCallback callback) override; |
| void RunFloatingPointAccuracyRoutine( |
| uint32_t length_seconds, |
| RunFloatingPointAccuracyRoutineCallback callback) override; |
| void RunNvmeWearLevelRoutine( |
| uint32_t wear_level_threshold, |
| RunNvmeWearLevelRoutineCallback callback) override; |
| void RunNvmeSelfTestRoutine( |
| chromeos::cros_healthd::mojom::NvmeSelfTestTypeEnum nvme_self_test_type, |
| RunNvmeSelfTestRoutineCallback callback) override; |
| void RunDiskReadRoutine( |
| chromeos::cros_healthd::mojom::DiskReadRoutineTypeEnum type, |
| uint32_t length_seconds, |
| uint32_t file_size_mb, |
| RunDiskReadRoutineCallback callback) override; |
| void RunPrimeSearchRoutine(uint32_t length_seconds, |
| uint64_t max_num, |
| RunPrimeSearchRoutineCallback callback) override; |
| void RunBatteryDischargeRoutine( |
| uint32_t length_seconds, |
| uint32_t maximum_discharge_percent_allowed, |
| RunBatteryDischargeRoutineCallback callback) override; |
| |
| // Overrides the default behavior of GetCrosHealthdDiagnosticsService to test |
| // situations where mojo methods were called prior to wilco_dtc_supportd's |
| // mojo service being established. |
| void SetMojoServiceIsAvailable(bool is_available); |
| |
| // Overrides the default behavior of GetCrosHealthdDiagnosticsService to test |
| // situations where cros_healthd is unresponsive. |
| void SetMojoServiceIsResponsive(bool is_responsive); |
| |
| // Resets the mojo connection. |
| void ResetMojoConnection(); |
| |
| // Sets the response to any GetAvailableRoutines IPCs received. |
| void SetGetAvailableRoutinesResponse( |
| const std::vector<chromeos::cros_healthd::mojom::DiagnosticRoutineEnum>& |
| available_routines); |
| |
| // Sets an interactive response to any GetRoutineUpdate IPCs received. |
| void SetInteractiveUpdate( |
| chromeos::cros_healthd::mojom::DiagnosticRoutineUserMessageEnum |
| user_message, |
| uint32_t progress_percent, |
| const std::string& output); |
| |
| // Sets a noninteractive response to any GetRoutineUpdate IPCs received. |
| void SetNonInteractiveUpdate( |
| chromeos::cros_healthd::mojom::DiagnosticRoutineStatusEnum status, |
| const std::string& status_message, |
| uint32_t progress_percent, |
| const std::string& output); |
| |
| // Sets the response to any RunSomeRoutine IPCs received. |
| void SetRunSomeRoutineResponse( |
| uint32_t id, |
| chromeos::cros_healthd::mojom::DiagnosticRoutineStatusEnum status); |
| |
| private: |
| mojo::Binding<chromeos::cros_healthd::mojom::CrosHealthdDiagnosticsService> |
| service_binding_{this /* impl */}; |
| |
| // Used as the return value for any GetAvailableRoutines IPCs received. |
| std::vector<chromeos::cros_healthd::mojom::DiagnosticRoutineEnum> |
| available_routines_; |
| // Used as the return value for any GetRoutineUpdate IPCs received. |
| chromeos::cros_healthd::mojom::RoutineUpdate routine_update_response_{ |
| 0, mojo::ScopedHandle(), |
| chromeos::cros_healthd::mojom::RoutineUpdateUnion::New()}; |
| // Used as the return value for any RunSomeRoutine IPCs received. |
| chromeos::cros_healthd::mojom::RunRoutineResponse run_routine_response_; |
| |
| // Determines whether or not the service should present itself as available. |
| bool is_available_ = true; |
| // Determines whether or not the service should present itself as responsive. |
| bool is_responsive_ = true; |
| |
| DISALLOW_COPY_AND_ASSIGN(FakeDiagnosticsService); |
| }; |
| |
| } // namespace diagnostics |
| |
| #endif // DIAGNOSTICS_WILCO_DTC_SUPPORTD_FAKE_DIAGNOSTICS_SERVICE_H_ |