libsnapshot: Add boot_complete metrics.
Bug: 180535575
Test: apply OTA
Change-Id: Ifea51c4c83ba03012f557927e8694e7c613335a7
diff --git a/fs_mgr/libsnapshot/android/snapshot/snapshot.proto b/fs_mgr/libsnapshot/android/snapshot/snapshot.proto
index e902fa4..1ebc29f 100644
--- a/fs_mgr/libsnapshot/android/snapshot/snapshot.proto
+++ b/fs_mgr/libsnapshot/android/snapshot/snapshot.proto
@@ -162,7 +162,7 @@
MergePhase merge_phase = 6;
}
-// Next: 7
+// Next: 9
message SnapshotMergeReport {
// Status of the update after the merge attempts.
UpdateState state = 1;
@@ -182,4 +182,10 @@
// Sum of the estimated COW fields in the OTA manifest.
uint64 estimated_cow_size_bytes = 6;
+
+ // Time from boot to sys.boot_completed, in milliseconds.
+ uint32 boot_complete_time_ms = 7;
+
+ // Time from sys.boot_completed to merge start, in milliseconds.
+ uint32 boot_complete_to_merge_start_time_ms = 8;
}
diff --git a/fs_mgr/libsnapshot/include/libsnapshot/snapshot_stats.h b/fs_mgr/libsnapshot/include/libsnapshot/snapshot_stats.h
index 3eeae64..e617d7a 100644
--- a/fs_mgr/libsnapshot/include/libsnapshot/snapshot_stats.h
+++ b/fs_mgr/libsnapshot/include/libsnapshot/snapshot_stats.h
@@ -32,9 +32,13 @@
virtual void set_cow_file_size(uint64_t cow_file_size) = 0;
virtual void set_total_cow_size_bytes(uint64_t bytes) = 0;
virtual void set_estimated_cow_size_bytes(uint64_t bytes) = 0;
+ virtual void set_boot_complete_time_ms(uint32_t ms) = 0;
+ virtual void set_boot_complete_to_merge_start_time_ms(uint32_t ms) = 0;
virtual uint64_t cow_file_size() = 0;
virtual uint64_t total_cow_size_bytes() = 0;
virtual uint64_t estimated_cow_size_bytes() = 0;
+ virtual uint32_t boot_complete_time_ms() = 0;
+ virtual uint32_t boot_complete_to_merge_start_time_ms() = 0;
// Called when merge ends. Properly clean up permanent storage.
class Result {
@@ -62,6 +66,10 @@
void set_estimated_cow_size_bytes(uint64_t bytes) override;
uint64_t total_cow_size_bytes() override;
uint64_t estimated_cow_size_bytes() override;
+ void set_boot_complete_time_ms(uint32_t ms) override;
+ uint32_t boot_complete_time_ms() override;
+ void set_boot_complete_to_merge_start_time_ms(uint32_t ms) override;
+ uint32_t boot_complete_to_merge_start_time_ms() override;
std::unique_ptr<Result> Finish() override;
private:
diff --git a/fs_mgr/libsnapshot/snapshot_stats.cpp b/fs_mgr/libsnapshot/snapshot_stats.cpp
index 35e2d92..7fcfcea 100644
--- a/fs_mgr/libsnapshot/snapshot_stats.cpp
+++ b/fs_mgr/libsnapshot/snapshot_stats.cpp
@@ -114,6 +114,22 @@
return report_.estimated_cow_size_bytes();
}
+void SnapshotMergeStats::set_boot_complete_time_ms(uint32_t ms) {
+ report_.set_boot_complete_time_ms(ms);
+}
+
+uint32_t SnapshotMergeStats::boot_complete_time_ms() {
+ return report_.boot_complete_time_ms();
+}
+
+void SnapshotMergeStats::set_boot_complete_to_merge_start_time_ms(uint32_t ms) {
+ report_.set_boot_complete_to_merge_start_time_ms(ms);
+}
+
+uint32_t SnapshotMergeStats::boot_complete_to_merge_start_time_ms() {
+ return report_.boot_complete_to_merge_start_time_ms();
+}
+
class SnapshotMergeStatsResultImpl : public SnapshotMergeStats::Result {
public:
SnapshotMergeStatsResultImpl(const SnapshotMergeReport& report,
diff --git a/fs_mgr/libsnapshot/snapshot_stub.cpp b/fs_mgr/libsnapshot/snapshot_stub.cpp
index 079e606..43825cc 100644
--- a/fs_mgr/libsnapshot/snapshot_stub.cpp
+++ b/fs_mgr/libsnapshot/snapshot_stub.cpp
@@ -131,6 +131,10 @@
void set_estimated_cow_size_bytes(uint64_t) override {}
uint64_t total_cow_size_bytes() override { return 0; }
uint64_t estimated_cow_size_bytes() override { return 0; }
+ void set_boot_complete_time_ms(uint32_t) override {}
+ uint32_t boot_complete_time_ms() override { return 0; }
+ void set_boot_complete_to_merge_start_time_ms(uint32_t) override {}
+ uint32_t boot_complete_to_merge_start_time_ms() override { return 0; }
};
ISnapshotMergeStats* SnapshotManagerStub::GetSnapshotMergeStatsInstance() {