diff options
author | Tianjie Xu <xunchang@google.com> | 2017-10-24 11:17:03 -0700 |
---|---|---|
committer | Tianjie Xu <xunchang@google.com> | 2017-10-25 11:37:04 -0700 |
commit | d4c5debc65bb35ee61c2764bda059b7f307fd093 (patch) | |
tree | 379432d9dd0da75c114784a14a0530e375c741df | |
parent | 4a7e26b998807f315c6e8b9f77f194cd3d3b12c8 (diff) |
Create a dummy MetricsReporterStub class
This handles the update_engine_sideload target, and thus avoiding
the insertion of "#ifdef _UE_SIDELOAD" everywhere when we report the
metrics for android.
Bug: 30989466
Test: build pass on marlin
Change-Id: Ib00ab8476218df15768bdbae1a3510f8584aa7c7
-rw-r--r-- | Android.mk | 2 | ||||
-rw-r--r-- | metrics_reporter_android.cc | 19 | ||||
-rw-r--r-- | metrics_reporter_interface.h | 8 | ||||
-rw-r--r-- | metrics_reporter_omaha.cc | 4 | ||||
-rw-r--r-- | metrics_reporter_stub.cc | 31 | ||||
-rw-r--r-- | metrics_reporter_stub.h | 88 | ||||
-rw-r--r-- | update_attempter_android.cc | 6 |
7 files changed, 141 insertions, 17 deletions
@@ -466,7 +466,7 @@ LOCAL_C_INCLUDES += \ LOCAL_SRC_FILES := \ boot_control_recovery.cc \ hardware_android.cc \ - metrics_reporter_android.cc \ + metrics_reporter_stub.cc \ metrics_utils.cc \ network_selector_stub.cc \ proxy_resolver.cc \ diff --git a/metrics_reporter_android.cc b/metrics_reporter_android.cc index bdc245eb..869c4db6 100644 --- a/metrics_reporter_android.cc +++ b/metrics_reporter_android.cc @@ -16,28 +16,24 @@ #include "update_engine/metrics_reporter_android.h" -#ifndef _UE_SIDELOAD +#include <memory> #include <string> #include <metricslogger/metrics_logger.h> #include "update_engine/common/constants.h" -#endif // _UE_SIDELOAD namespace { -#ifndef _UE_SIDELOAD void LogHistogram(const std::string& metrics, int value) { android::metricslogger::LogHistogram(metrics, value); LOG(INFO) << "uploading " << value << "to histogram for metric " << metrics; } -#endif } // namespace namespace chromeos_update_engine { namespace metrics { -#ifndef _UE_SIDELOAD // The histograms are defined in: // depot/google3/analysis/uma/configs/clearcut/TRON/histograms.xml constexpr char kMetricsUpdateEngineAttemptNumber[] = @@ -65,7 +61,11 @@ constexpr char kMetricsUpdateEngineSuccessfulUpdatePayloadType[] = "ota_update_engine_successful_update_payload_type"; constexpr char kMetricsUpdateEngineSuccessfulUpdateRebootCount[] = "ota_update_engine_successful_update_reboot_count"; -#endif + +std::unique_ptr<MetricsReporterInterface> CreateMetricsReporter() { + return std::make_unique<MetricsReporterAndroid>(); +} + } // namespace metrics void MetricsReporterAndroid::ReportUpdateAttemptMetrics( @@ -77,8 +77,6 @@ void MetricsReporterAndroid::ReportUpdateAttemptMetrics( int64_t payload_size, metrics::AttemptResult attempt_result, ErrorCode error_code) { -// No need to log histogram under sideload mode. -#ifndef _UE_SIDELOAD LogHistogram(metrics::kMetricsUpdateEngineAttemptNumber, attempt_number); LogHistogram(metrics::kMetricsUpdateEngineAttemptPayloadType, static_cast<int>(payload_type)); @@ -95,7 +93,6 @@ void MetricsReporterAndroid::ReportUpdateAttemptMetrics( static_cast<int>(attempt_result)); LogHistogram(metrics::kMetricsUpdateEngineAttemptErrorCode, static_cast<int>(error_code)); -#endif } void MetricsReporterAndroid::ReportSuccessfulUpdateMetrics( @@ -108,7 +105,6 @@ void MetricsReporterAndroid::ReportSuccessfulUpdateMetrics( base::TimeDelta total_duration, int reboot_count, int /* url_switch_count */) { -#ifndef _UE_SIDELOAD LogHistogram(metrics::kMetricsUpdateEngineSuccessfulUpdateAttemptCount, attempt_count); LogHistogram(metrics::kMetricsUpdateEngineSuccessfulUpdatePayloadType, @@ -123,15 +119,12 @@ void MetricsReporterAndroid::ReportSuccessfulUpdateMetrics( total_duration.InMinutes()); LogHistogram(metrics::kMetricsUpdateEngineSuccessfulUpdateRebootCount, reboot_count); -#endif } void MetricsReporterAndroid::ReportAbnormallyTerminatedUpdateAttemptMetrics() { -#ifndef _UE_SIDELOAD int attempt_result = static_cast<int>(metrics::AttemptResult::kAbnormalTermination); LogHistogram(metrics::kMetricsUpdateEngineAttemptResult, attempt_result); -#endif } }; // namespace chromeos_update_engine diff --git a/metrics_reporter_interface.h b/metrics_reporter_interface.h index bc9d387f..2c7ce5b5 100644 --- a/metrics_reporter_interface.h +++ b/metrics_reporter_interface.h @@ -17,6 +17,8 @@ #ifndef UPDATE_ENGINE_METRICS_REPORTER_INTERFACE_H_ #define UPDATE_ENGINE_METRICS_REPORTER_INTERFACE_H_ +#include <memory> + #include <base/time/time.h> #include "update_engine/common/constants.h" @@ -29,6 +31,12 @@ namespace chromeos_update_engine { enum class ServerToCheck; enum class CertificateCheckResult; +namespace metrics { + +std::unique_ptr<MetricsReporterInterface> CreateMetricsReporter(); + +} // namespace metrics + class MetricsReporterInterface { public: virtual ~MetricsReporterInterface() = default; diff --git a/metrics_reporter_omaha.cc b/metrics_reporter_omaha.cc index 5f24cbfe..0397b833 100644 --- a/metrics_reporter_omaha.cc +++ b/metrics_reporter_omaha.cc @@ -112,6 +112,10 @@ const char kMetricInstallDateProvisioningSource[] = "UpdateEngine.InstallDateProvisioningSource"; const char kMetricTimeToRebootMinutes[] = "UpdateEngine.TimeToRebootMinutes"; +std::unique_ptr<MetricsReporterInterface> CreateMetricsReporter() { + return std::make_unique<MetricsReporterOmaha>(); +} + } // namespace metrics MetricsReporterOmaha::MetricsReporterOmaha() diff --git a/metrics_reporter_stub.cc b/metrics_reporter_stub.cc new file mode 100644 index 00000000..81664a53 --- /dev/null +++ b/metrics_reporter_stub.cc @@ -0,0 +1,31 @@ +// +// Copyright (C) 2017 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#include "update_engine/metrics_reporter_stub.h" + +#include <memory> + +namespace chromeos_update_engine { + +namespace metrics { + +std::unique_ptr<MetricsReporterInterface> CreateMetricsReporter() { + return std::make_unique<MetricsReporterStub>(); +} + +} // namespace metrics + +} // namespace chromeos_update_engine diff --git a/metrics_reporter_stub.h b/metrics_reporter_stub.h new file mode 100644 index 00000000..d0f75abd --- /dev/null +++ b/metrics_reporter_stub.h @@ -0,0 +1,88 @@ +// +// Copyright (C) 2017 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#ifndef UPDATE_ENGINE_METRICS_REPORTER_STUB_H_ +#define UPDATE_ENGINE_METRICS_REPORTER_STUB_H_ + +#include "update_engine/common/error_code.h" +#include "update_engine/metrics_constants.h" +#include "update_engine/metrics_reporter_interface.h" + +namespace chromeos_update_engine { + +class MetricsReporterStub : public MetricsReporterInterface { + public: + MetricsReporterStub() = default; + + ~MetricsReporterStub() override = default; + + void Initialize() override {} + + void ReportRollbackMetrics(metrics::RollbackResult result) override {} + + void ReportDailyMetrics(base::TimeDelta os_age) override {} + + void ReportUpdateCheckMetrics( + SystemState* system_state, + metrics::CheckResult result, + metrics::CheckReaction reaction, + metrics::DownloadErrorCode download_error_code) override {} + + void ReportUpdateAttemptMetrics(SystemState* system_state, + int attempt_number, + PayloadType payload_type, + base::TimeDelta duration, + base::TimeDelta duration_uptime, + int64_t payload_size, + metrics::AttemptResult attempt_result, + ErrorCode internal_error_code) override {} + + void ReportUpdateAttemptDownloadMetrics( + int64_t payload_bytes_downloaded, + int64_t payload_download_speed_bps, + DownloadSource download_source, + metrics::DownloadErrorCode payload_download_error_code, + metrics::ConnectionType connection_type) override {} + + void ReportAbnormallyTerminatedUpdateAttemptMetrics() override {} + + void ReportSuccessfulUpdateMetrics( + int attempt_count, + int updates_abandoned_count, + PayloadType payload_type, + int64_t payload_size, + int64_t num_bytes_downloaded[kNumDownloadSources], + int download_overhead_percentage, + base::TimeDelta total_duration, + int reboot_count, + int url_switch_count) override {} + + void ReportCertificateCheckMetrics(ServerToCheck server_to_check, + CertificateCheckResult result) override {} + + void ReportFailedUpdateCount(int target_attempt) override {} + + void ReportTimeToReboot(int time_to_reboot_minutes) override {} + + void ReportInstallDateProvisioningSource(int source, int max) override {} + + private: + DISALLOW_COPY_AND_ASSIGN(MetricsReporterStub); +}; + +} // namespace chromeos_update_engine + +#endif // UPDATE_ENGINE_METRICS_REPORTER_STUB_H_ diff --git a/update_attempter_android.cc b/update_attempter_android.cc index dbddfe3b..6d67000c 100644 --- a/update_attempter_android.cc +++ b/update_attempter_android.cc @@ -34,7 +34,7 @@ #include "update_engine/common/file_fetcher.h" #include "update_engine/common/utils.h" #include "update_engine/daemon_state_interface.h" -#include "update_engine/metrics_reporter_android.h" +#include "update_engine/metrics_reporter_interface.h" #include "update_engine/metrics_utils.h" #include "update_engine/network_selector.h" #include "update_engine/payload_consumer/download_action.h" @@ -92,8 +92,8 @@ UpdateAttempterAndroid::UpdateAttempterAndroid( boot_control_(boot_control), hardware_(hardware), processor_(new ActionProcessor()), - clock_(new Clock()), - metrics_reporter_(new MetricsReporterAndroid()) { + clock_(new Clock()) { + metrics_reporter_ = metrics::CreateMetricsReporter(); network_selector_ = network::CreateNetworkSelector(); } |