Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 28f8a9fc authored by Vova Sharaienko's avatar Vova Sharaienko Committed by Android (Google) Code Review
Browse files

Merge "[bootstats] Removed dependency on libstatslog" into main

parents 69a881fa db9ffcb6
Loading
Loading
Loading
Loading
+36 −3
Original line number Diff line number Diff line
@@ -67,9 +67,6 @@ cc_binary {
    name: "bootstat",
    defaults: ["bootstat_defaults"],
    static_libs: ["libbootstat"],
    shared_libs: [
        "libstatslog"
    ],
    init_rc: ["bootstat.rc"],
    product_variables: {
        debuggable: {
@@ -77,6 +74,15 @@ cc_binary {
        },
    },
    srcs: ["bootstat.cpp"],
    generated_sources: [
        "statslog_bootstats.cpp",
    ],
    generated_headers: [
        "statslog_bootstats.h",
    ],
    shared_libs: [
        "libstatssocket",
    ],
}

// Native tests
@@ -98,3 +104,30 @@ cc_test {
        unit_test: true,
    },
}

// StatsD atom logging
//------------------------------------------------------------------------------
genrule {
    name: "statslog_bootstats.h",
    tools: ["stats-log-api-gen"],
    cmd: "$(location stats-log-api-gen)" +
        " --header $(genDir)/statslog_bootstats.h" +
        " --module bootstats" +
        " --namespace android,util,bootstats",
    out: [
        "statslog_bootstats.h",
    ],
}

genrule {
    name: "statslog_bootstats.cpp",
    tools: ["stats-log-api-gen"],
    cmd: "$(location stats-log-api-gen)" +
        " --cpp $(genDir)/statslog_bootstats.cpp" +
        " --module bootstats" +
        " --namespace android,util,bootstats" +
        " --importHeader statslog_bootstats.h",
    out: [
        "statslog_bootstats.cpp",
    ],
}
+70 −67
Original line number Diff line number Diff line
@@ -46,7 +46,7 @@
#include <android/log.h>
#include <cutils/android_reboot.h>
#include <cutils/properties.h>
#include <statslog.h>
#include <statslog_bootstats.h>

#include "boot_event_record_store.h"

@@ -62,78 +62,80 @@ struct AtomInfo {
const std::unordered_map<std::string_view, AtomInfo> kBootEventToAtomInfo = {
    // ELAPSED_TIME
    {"ro.boottime.init",
     {android::util::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED,
      android::util::BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__ANDROID_INIT_STAGE_1}},
     {android::util::bootstats::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED,
      android::util::bootstats::BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__ANDROID_INIT_STAGE_1}},
    {"boot_complete",
     {android::util::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED,
      android::util::BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__BOOT_COMPLETE}},
     {android::util::bootstats::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED,
      android::util::bootstats::BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__BOOT_COMPLETE}},
    {"boot_complete_no_encryption",
     {android::util::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED,
      android::util::BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__BOOT_COMPLETE_NO_ENCRYPTION}},
     {android::util::bootstats::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED,
      android::util::bootstats::BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__BOOT_COMPLETE_NO_ENCRYPTION}},
    {"factory_reset_boot_complete",
     {android::util::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED,
      android::util::BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__FACTORY_RESET_BOOT_COMPLETE}},
     {android::util::bootstats::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED,
      android::util::bootstats::BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__FACTORY_RESET_BOOT_COMPLETE}},
    {"factory_reset_boot_complete_no_encryption",
     {android::util::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED,
      android::util::
     {android::util::bootstats::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED,
      android::util::bootstats::
          BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__FACTORY_RESET_BOOT_COMPLETE_NO_ENCRYPTION}},
    {"ota_boot_complete",
     {android::util::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED,
      android::util::BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__OTA_BOOT_COMPLETE}},
     {android::util::bootstats::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED,
      android::util::bootstats::BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__OTA_BOOT_COMPLETE}},
    {"ota_boot_complete_no_encryption",
     {android::util::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED,
      android::util::BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__OTA_BOOT_COMPLETE_NO_ENCRYPTION}},
     {android::util::bootstats::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED,
      android::util::bootstats::
          BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__OTA_BOOT_COMPLETE_NO_ENCRYPTION}},
    // DURATION
    {"absolute_boot_time",
     {android::util::BOOT_TIME_EVENT_DURATION_REPORTED,
      android::util::BOOT_TIME_EVENT_DURATION__EVENT__ABSOLUTE_BOOT_TIME}},
     {android::util::bootstats::BOOT_TIME_EVENT_DURATION_REPORTED,
      android::util::bootstats::BOOT_TIME_EVENT_DURATION__EVENT__ABSOLUTE_BOOT_TIME}},
    {"boottime.bootloader.1BLE",
     {android::util::BOOT_TIME_EVENT_DURATION_REPORTED,
      android::util::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_FIRST_STAGE_EXEC}},
     {android::util::bootstats::BOOT_TIME_EVENT_DURATION_REPORTED,
      android::util::bootstats::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_FIRST_STAGE_EXEC}},
    {"boottime.bootloader.1BLL",
     {android::util::BOOT_TIME_EVENT_DURATION_REPORTED,
      android::util::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_FIRST_STAGE_LOAD}},
     {android::util::bootstats::BOOT_TIME_EVENT_DURATION_REPORTED,
      android::util::bootstats::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_FIRST_STAGE_LOAD}},
    {"boottime.bootloader.KL",
     {android::util::BOOT_TIME_EVENT_DURATION_REPORTED,
      android::util::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_KERNEL_LOAD}},
     {android::util::bootstats::BOOT_TIME_EVENT_DURATION_REPORTED,
      android::util::bootstats::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_KERNEL_LOAD}},
    {"boottime.bootloader.2BLE",
     {android::util::BOOT_TIME_EVENT_DURATION_REPORTED,
      android::util::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_SECOND_STAGE_EXEC}},
     {android::util::bootstats::BOOT_TIME_EVENT_DURATION_REPORTED,
      android::util::bootstats::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_SECOND_STAGE_EXEC}},
    {"boottime.bootloader.2BLL",
     {android::util::BOOT_TIME_EVENT_DURATION_REPORTED,
      android::util::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_SECOND_STAGE_LOAD}},
     {android::util::bootstats::BOOT_TIME_EVENT_DURATION_REPORTED,
      android::util::bootstats::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_SECOND_STAGE_LOAD}},
    {"boottime.bootloader.SW",
     {android::util::BOOT_TIME_EVENT_DURATION_REPORTED,
      android::util::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_UI_WAIT}},
     {android::util::bootstats::BOOT_TIME_EVENT_DURATION_REPORTED,
      android::util::bootstats::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_UI_WAIT}},
    {"boottime.bootloader.total",
     {android::util::BOOT_TIME_EVENT_DURATION_REPORTED,
      android::util::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_TOTAL}},
     {android::util::bootstats::BOOT_TIME_EVENT_DURATION_REPORTED,
      android::util::bootstats::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_TOTAL}},
    {"boottime.init.cold_boot_wait",
     {android::util::BOOT_TIME_EVENT_DURATION_REPORTED,
      android::util::BOOT_TIME_EVENT_DURATION__EVENT__COLDBOOT_WAIT}},
     {android::util::bootstats::BOOT_TIME_EVENT_DURATION_REPORTED,
      android::util::bootstats::BOOT_TIME_EVENT_DURATION__EVENT__COLDBOOT_WAIT}},
    {"time_since_factory_reset",
     {android::util::BOOT_TIME_EVENT_DURATION_REPORTED,
      android::util::BOOT_TIME_EVENT_DURATION__EVENT__FACTORY_RESET_TIME_SINCE_RESET}},
     {android::util::bootstats::BOOT_TIME_EVENT_DURATION_REPORTED,
      android::util::bootstats::BOOT_TIME_EVENT_DURATION__EVENT__FACTORY_RESET_TIME_SINCE_RESET}},
    {"ro.boottime.init.first_stage",
     {android::util::BOOT_TIME_EVENT_DURATION_REPORTED,
      android::util::BOOT_TIME_EVENT_DURATION__EVENT__ANDROID_INIT_STAGE_1}},
     {android::util::bootstats::BOOT_TIME_EVENT_DURATION_REPORTED,
      android::util::bootstats::BOOT_TIME_EVENT_DURATION__EVENT__ANDROID_INIT_STAGE_1}},
    {"ro.boottime.init.selinux",
     {android::util::BOOT_TIME_EVENT_DURATION_REPORTED,
      android::util::BOOT_TIME_EVENT_DURATION__EVENT__SELINUX_INIT}},
     {android::util::bootstats::BOOT_TIME_EVENT_DURATION_REPORTED,
      android::util::bootstats::BOOT_TIME_EVENT_DURATION__EVENT__SELINUX_INIT}},
    // UTC_TIME
    {"factory_reset",
     {android::util::BOOT_TIME_EVENT_UTC_TIME_REPORTED,
      android::util::BOOT_TIME_EVENT_UTC_TIME__EVENT__FACTORY_RESET_RESET_TIME}},
     {android::util::bootstats::BOOT_TIME_EVENT_UTC_TIME_REPORTED,
      android::util::bootstats::BOOT_TIME_EVENT_UTC_TIME__EVENT__FACTORY_RESET_RESET_TIME}},
    {"factory_reset_current_time",
     {android::util::BOOT_TIME_EVENT_UTC_TIME_REPORTED,
      android::util::BOOT_TIME_EVENT_UTC_TIME__EVENT__FACTORY_RESET_CURRENT_TIME}},
     {android::util::bootstats::BOOT_TIME_EVENT_UTC_TIME_REPORTED,
      android::util::bootstats::BOOT_TIME_EVENT_UTC_TIME__EVENT__FACTORY_RESET_CURRENT_TIME}},
    {"factory_reset_record_value",
     {android::util::BOOT_TIME_EVENT_UTC_TIME_REPORTED,
      android::util::BOOT_TIME_EVENT_UTC_TIME__EVENT__FACTORY_RESET_RECORD_VALUE}},
     {android::util::bootstats::BOOT_TIME_EVENT_UTC_TIME_REPORTED,
      android::util::bootstats::BOOT_TIME_EVENT_UTC_TIME__EVENT__FACTORY_RESET_RECORD_VALUE}},
    // ERROR_CODE
    {"factory_reset_current_time_failure",
     {android::util::BOOT_TIME_EVENT_ERROR_CODE_REPORTED,
      android::util::BOOT_TIME_EVENT_ERROR_CODE__EVENT__FACTORY_RESET_CURRENT_TIME_FAILURE}},
     {android::util::bootstats::BOOT_TIME_EVENT_ERROR_CODE_REPORTED,
      android::util::bootstats::
          BOOT_TIME_EVENT_ERROR_CODE__EVENT__FACTORY_RESET_CURRENT_TIME_FAILURE}},
};

// Scans the boot event record store for record files and logs each boot event
@@ -146,12 +148,12 @@ void LogBootEvents() {
    const auto& name = event.first;
    const auto& info = kBootEventToAtomInfo.find(name);
    if (info != kBootEventToAtomInfo.end()) {
      if (info->second.atom == android::util::BOOT_TIME_EVENT_ERROR_CODE_REPORTED) {
        android::util::stats_write(static_cast<int32_t>(info->second.atom),
      if (info->second.atom == android::util::bootstats::BOOT_TIME_EVENT_ERROR_CODE_REPORTED) {
        android::util::bootstats::stats_write(static_cast<int32_t>(info->second.atom),
                                              static_cast<int32_t>(info->second.event),
                                              static_cast<int32_t>(event.second));
      } else {
        android::util::stats_write(static_cast<int32_t>(info->second.atom),
        android::util::bootstats::stats_write(static_cast<int32_t>(info->second.atom),
                                              static_cast<int32_t>(info->second.event),
                                              static_cast<int64_t>(event.second));
      }
@@ -1271,9 +1273,9 @@ void LogBootInfoToStatsd(std::chrono::milliseconds end_time,
                         double time_since_last_boot_sec) {
  auto reason = android::base::GetProperty(bootloader_reboot_reason_property, "<EMPTY>");
  auto system_reason = android::base::GetProperty(system_reboot_reason_property, "<EMPTY>");
  android::util::stats_write(android::util::BOOT_SEQUENCE_REPORTED, reason.c_str(),
                             system_reason.c_str(), end_time.count(), total_duration.count(),
                             (int64_t)bootloader_duration_ms,
  android::util::bootstats::stats_write(android::util::bootstats::BOOT_SEQUENCE_REPORTED,
                                        reason.c_str(), system_reason.c_str(), end_time.count(),
                                        total_duration.count(), (int64_t)bootloader_duration_ms,
                                        (int64_t)time_since_last_boot_sec * 1000);
}

@@ -1427,10 +1429,11 @@ void RecordFactoryReset() {
  if (current_time_utc < 0) {
    // UMA does not display negative values in buckets, so convert to positive.
    // Logging via BootEventRecordStore.
    android::util::stats_write(
        static_cast<int32_t>(android::util::BOOT_TIME_EVENT_ERROR_CODE_REPORTED),
    android::util::bootstats::stats_write(
        static_cast<int32_t>(android::util::bootstats::BOOT_TIME_EVENT_ERROR_CODE_REPORTED),
        static_cast<int32_t>(
            android::util::BOOT_TIME_EVENT_ERROR_CODE__EVENT__FACTORY_RESET_CURRENT_TIME_FAILURE),
            android::util::bootstats::
                BOOT_TIME_EVENT_ERROR_CODE__EVENT__FACTORY_RESET_CURRENT_TIME_FAILURE),
        static_cast<int32_t>(std::abs(current_time_utc)));

    // Logging via BootEventRecordStore to see if using android::metricslogger::LogHistogram
@@ -1439,10 +1442,10 @@ void RecordFactoryReset() {
                                           std::abs(current_time_utc));
    return;
  } else {
    android::util::stats_write(
        static_cast<int32_t>(android::util::BOOT_TIME_EVENT_UTC_TIME_REPORTED),
    android::util::bootstats::stats_write(
        static_cast<int32_t>(android::util::bootstats::BOOT_TIME_EVENT_UTC_TIME_REPORTED),
        static_cast<int32_t>(
            android::util::BOOT_TIME_EVENT_UTC_TIME__EVENT__FACTORY_RESET_CURRENT_TIME),
            android::util::bootstats::BOOT_TIME_EVENT_UTC_TIME__EVENT__FACTORY_RESET_CURRENT_TIME),
        static_cast<int64_t>(current_time_utc));

    // Logging via BootEventRecordStore to see if using android::metricslogger::LogHistogram
@@ -1463,10 +1466,10 @@ void RecordFactoryReset() {
  // Calculate and record the difference in time between now and the
  // factory_reset time.
  time_t factory_reset_utc = record.second;
  android::util::stats_write(
      static_cast<int32_t>(android::util::BOOT_TIME_EVENT_UTC_TIME_REPORTED),
  android::util::bootstats::stats_write(
      static_cast<int32_t>(android::util::bootstats::BOOT_TIME_EVENT_UTC_TIME_REPORTED),
      static_cast<int32_t>(
          android::util::BOOT_TIME_EVENT_UTC_TIME__EVENT__FACTORY_RESET_RECORD_VALUE),
          android::util::bootstats::BOOT_TIME_EVENT_UTC_TIME__EVENT__FACTORY_RESET_RECORD_VALUE),
      static_cast<int64_t>(factory_reset_utc));

  // Logging via BootEventRecordStore to see if using android::metricslogger::LogHistogram