blob: 77c46fc2df8dd44cfdc928f5b63eac7e8718ec95 [file] [log] [blame]
// 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_CROS_HEALTHD_CROS_HEALTHD_ROUTINE_FACTORY_H_
#define DIAGNOSTICS_CROS_HEALTHD_CROS_HEALTHD_ROUTINE_FACTORY_H_
#include <cstdint>
#include <memory>
#include <string>
#include <base/optional.h>
#include <base/time/time.h>
#include "diagnostics/common/system/debugd_adapter_impl.h"
#include "diagnostics/cros_healthd/routines/diag_routine.h"
#include "mojo/cros_healthd.mojom.h"
namespace diagnostics {
// Interface for constructing DiagnosticRoutines.
class CrosHealthdRoutineFactory {
public:
virtual ~CrosHealthdRoutineFactory() = default;
// Constructs a new instance of the urandom routine. See
// diagnostics/routines/urandom for details on the routine itself.
virtual std::unique_ptr<DiagnosticRoutine> MakeUrandomRoutine(
chromeos::cros_healthd::mojom::NullableUint32Ptr length_seconds) = 0;
// Constructs a new instance of the battery capacity routine. See
// diagnostics/routines/battery for details on the routine itself.
virtual std::unique_ptr<DiagnosticRoutine> MakeBatteryCapacityRoutine() = 0;
// Constructs a new instance of the battery health routine. See
// diagnostics/routines/battery_sysfs for details on the routine itself.
virtual std::unique_ptr<DiagnosticRoutine> MakeBatteryHealthRoutine() = 0;
// Constructs a new instance of the smartctl check routine. See
// diagnostics/routines/smartctl_check for details on the routine itself.
virtual std::unique_ptr<DiagnosticRoutine> MakeSmartctlCheckRoutine() = 0;
// Constructs a new instance of the AC power routine. See
// diagnostics/routines/battery_sysfs for details on the routine itself.
virtual std::unique_ptr<DiagnosticRoutine> MakeAcPowerRoutine(
chromeos::cros_healthd::mojom::AcPowerStatusEnum expected_status,
const base::Optional<std::string>& expected_power_type) = 0;
// Constructs a new instance of the CPU cache routine. See
// diagnostics/routines/cpu_cache for details on the routine itself.
virtual std::unique_ptr<DiagnosticRoutine> MakeCpuCacheRoutine(
const base::Optional<base::TimeDelta>& exec_duration) = 0;
// Constructs a new instance of the CPU stress routine. See
// diagnostics/routines/cpu_stress for details on the routine itself.
virtual std::unique_ptr<DiagnosticRoutine> MakeCpuStressRoutine(
const base::Optional<base::TimeDelta>& exec_duration) = 0;
// Constructs a new instance of the floating point accuracy routine. See
// diagnostics/routines/floating_point for details on the routine itself.
virtual std::unique_ptr<DiagnosticRoutine> MakeFloatingPointAccuracyRoutine(
const base::Optional<base::TimeDelta>& exec_duration) = 0;
// Constructs a new instance of the nvme_wear_level routine. See
// diagnostics/routines/nvme_wear_level for details on the routine itself.
virtual std::unique_ptr<DiagnosticRoutine> MakeNvmeWearLevelRoutine(
DebugdAdapter* debugd_adapter, uint32_t wear_level_threshold) = 0;
// Constructs a new instance of the NvmeSelfTest routine. See
// diagnostics/routines/nvme_self_test for details on the routine itself.
virtual std::unique_ptr<DiagnosticRoutine> MakeNvmeSelfTestRoutine(
DebugdAdapter* debugd_adapter,
chromeos::cros_healthd::mojom::NvmeSelfTestTypeEnum
nvme_self_test_type) = 0;
// Constructs a new instance of the disk read routine. See
// diagnostics/routines/disk_read for details on the routine itself.
virtual std::unique_ptr<DiagnosticRoutine> MakeDiskReadRoutine(
chromeos::cros_healthd::mojom::DiskReadRoutineTypeEnum type,
base::TimeDelta exec_duration,
uint32_t file_size_mb) = 0;
// Constructs a new instance of the prime search routine. See
// diagnostics/routines/prime_search for details on the routine itself.
virtual std::unique_ptr<DiagnosticRoutine> MakePrimeSearchRoutine(
const base::Optional<base::TimeDelta>& exec_duration) = 0;
// Constructs a new instance of the battery discharge routine. See
// diagnostics/routines/battery_discharge for details on the routine itself.
virtual std::unique_ptr<DiagnosticRoutine> MakeBatteryDischargeRoutine(
base::TimeDelta exec_duration,
uint32_t maximum_discharge_percent_allowed) = 0;
// Constructs a new instance of the battery charge routine. See
// diagnostics/routines/battery_charge for details on the routine itself.
virtual std::unique_ptr<DiagnosticRoutine> MakeBatteryChargeRoutine(
base::TimeDelta exec_duration,
uint32_t minimum_charge_percent_required) = 0;
// Constructs a new instance of the memory routine. See
// diagnostics/routines/memory for details on the routine itself.
virtual std::unique_ptr<DiagnosticRoutine> MakeMemoryRoutine() = 0;
// Constructs a new instance of the LAN connectivity routine. See
// diagnostics/routines/lan_connectivity for details on the routine itself.
virtual std::unique_ptr<DiagnosticRoutine> MakeLanConnectivityRoutine() = 0;
// Constructs a new instance of the signal strength routine. See
// diagnostics/routines/signal_strength for details on the routine itself.
virtual std::unique_ptr<DiagnosticRoutine> MakeSignalStrengthRoutine() = 0;
// Constructs a new instance of the gateway can be pinged routine. See
// diagnostics/routines/gateway_can_be_pinged for details on the routine
// itself.
virtual std::unique_ptr<DiagnosticRoutine>
MakeGatewayCanBePingedRoutine() = 0;
// Constructs a new instance of the has secure wifi connection routine. See
// diagnostics/routines/has_secure_wifi_connection for details on the routine
// itself.
virtual std::unique_ptr<DiagnosticRoutine>
MakeHasSecureWiFiConnectionRoutine() = 0;
// Constructs a new instance of the DNS resolver present routine. See
// diagnostics/routines/dns_resolver_present for details on the routine
// itself.
virtual std::unique_ptr<DiagnosticRoutine>
MakeDnsResolverPresentRoutine() = 0;
// Constructs a new instance of the DNS latency routine. See
// diagnostics/routines/dns_latency for details on the routine itself.
virtual std::unique_ptr<DiagnosticRoutine> MakeDnsLatencyRoutine() = 0;
// Constructs a new instance of the DNS resolution routine. See
// diagnostics/routines/dns_resolution for details on the routine itself.
virtual std::unique_ptr<DiagnosticRoutine> MakeDnsResolutionRoutine() = 0;
// Constructs a new instance of the captive portal routine. See
// diagnostics/routines/captive_portal for details on the routine itself.
virtual std::unique_ptr<DiagnosticRoutine> MakeCaptivePortalRoutine() = 0;
// Constructs a new instance of the HTTP firewall routine. See
// diagnostics/routines/http_firewall for details on the routine itself.
virtual std::unique_ptr<DiagnosticRoutine> MakeHttpFirewallRoutine() = 0;
// Constructs a new instance of the HTTPS firewall routine. See
// diagnostics/routines/https_firewall for details on the routine itself.
virtual std::unique_ptr<DiagnosticRoutine> MakeHttpsFirewallRoutine() = 0;
// Constructs a new instance of the HTTPS latency routine. See
// diagnostics/routines/https_latency for details on the routine itself.
virtual std::unique_ptr<DiagnosticRoutine> MakeHttpsLatencyRoutine() = 0;
};
} // namespace diagnostics
#endif // DIAGNOSTICS_CROS_HEALTHD_CROS_HEALTHD_ROUTINE_FACTORY_H_