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
diff --git a/Android.mk b/Android.mk
index cc06643..f02794c 100644
--- a/Android.mk
+++ b/Android.mk
@@ -466,7 +466,7 @@
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 bdc245e..869c4db 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 @@
"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 @@
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 @@
static_cast<int>(attempt_result));
LogHistogram(metrics::kMetricsUpdateEngineAttemptErrorCode,
static_cast<int>(error_code));
-#endif
}
void MetricsReporterAndroid::ReportSuccessfulUpdateMetrics(
@@ -108,7 +105,6 @@
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 @@
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 bc9d387..2c7ce5b 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 @@
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 5f24cbf..0397b83 100644
--- a/metrics_reporter_omaha.cc
+++ b/metrics_reporter_omaha.cc
@@ -112,6 +112,10 @@
"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 0000000..81664a5
--- /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 0000000..d0f75ab
--- /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 dbddfe3..6d67000 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 @@
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();
}