| Index: metrics_daemon.h
|
| diff --git a/metrics_daemon.h b/metrics_daemon.h
|
| index 437cafd0ec2e33af5e4de272dc84a422f4b25bb9..f98c34c4f77b7673c3dbd836c8bedaeac56b7ab8 100644
|
| --- a/metrics_daemon.h
|
| +++ b/metrics_daemon.h
|
| @@ -14,7 +14,10 @@
|
|
|
| #include "metrics_library.h"
|
|
|
| -namespace chromeos_metrics { class TaggedCounterInterface; }
|
| +namespace chromeos_metrics {
|
| +class FrequencyCounter;
|
| +class TaggedCounterInterface;
|
| +}
|
|
|
| class MetricsDaemon {
|
|
|
| @@ -31,9 +34,7 @@ class MetricsDaemon {
|
|
|
| private:
|
| friend class MetricsDaemonTest;
|
| - FRIEND_TEST(MetricsDaemonTest, CheckKernelCrash);
|
| - FRIEND_TEST(MetricsDaemonTest, DailyUseReporter);
|
| - FRIEND_TEST(MetricsDaemonTest, KernelCrashIntervalReporter);
|
| + FRIEND_TEST(MetricsDaemonTest, CheckSystemCrash);
|
| FRIEND_TEST(MetricsDaemonTest, LookupNetworkState);
|
| FRIEND_TEST(MetricsDaemonTest, LookupPowerState);
|
| FRIEND_TEST(MetricsDaemonTest, LookupScreenSaverState);
|
| @@ -43,13 +44,18 @@ class MetricsDaemon {
|
| FRIEND_TEST(MetricsDaemonTest, NetStateChangedSuspend);
|
| FRIEND_TEST(MetricsDaemonTest, PowerStateChanged);
|
| FRIEND_TEST(MetricsDaemonTest, ProcessKernelCrash);
|
| + FRIEND_TEST(MetricsDaemonTest, ProcessUncleanShutdown);
|
| FRIEND_TEST(MetricsDaemonTest, ProcessUserCrash);
|
| + FRIEND_TEST(MetricsDaemonTest, ReportCrashesDailyFrequency);
|
| + FRIEND_TEST(MetricsDaemonTest, ReportDailyUse);
|
| + FRIEND_TEST(MetricsDaemonTest, ReportKernelCrashInterval);
|
| + FRIEND_TEST(MetricsDaemonTest, ReportUncleanShutdownInterval);
|
| + FRIEND_TEST(MetricsDaemonTest, ReportUserCrashInterval);
|
| FRIEND_TEST(MetricsDaemonTest, ScreenSaverStateChanged);
|
| FRIEND_TEST(MetricsDaemonTest, SendMetric);
|
| FRIEND_TEST(MetricsDaemonTest, SessionStateChanged);
|
| FRIEND_TEST(MetricsDaemonTest, SetUserActiveState);
|
| FRIEND_TEST(MetricsDaemonTest, SetUserActiveStateTimeJump);
|
| - FRIEND_TEST(MetricsDaemonTest, UserCrashIntervalReporter);
|
|
|
| // The network states (see network_states.h).
|
| enum NetworkState {
|
| @@ -84,22 +90,27 @@ class MetricsDaemon {
|
| };
|
|
|
| // Metric parameters.
|
| + static const char kMetricAnyCrashesDailyName[];
|
| + static const char kMetricCrashesDailyBuckets;
|
| + static const char kMetricCrashesDailyMax;
|
| + static const char kMetricCrashesDailyMin;
|
| + static const int kMetricCrashIntervalBuckets;
|
| + static const int kMetricCrashIntervalMax;
|
| + static const int kMetricCrashIntervalMin;
|
| + static const int kMetricDailyUseTimeBuckets;
|
| + static const int kMetricDailyUseTimeMax;
|
| + static const int kMetricDailyUseTimeMin;
|
| static const char kMetricDailyUseTimeName[];
|
| - static const int kMetricDailyUseTimeMin;
|
| - static const int kMetricDailyUseTimeMax;
|
| - static const int kMetricDailyUseTimeBuckets;
|
| + static const char kMetricKernelCrashesDailyName[];
|
| static const char kMetricKernelCrashIntervalName[];
|
| - static const int kMetricKernelCrashIntervalMin;
|
| - static const int kMetricKernelCrashIntervalMax;
|
| - static const int kMetricKernelCrashIntervalBuckets;
|
| + static const int kMetricTimeToNetworkDropBuckets;
|
| + static const int kMetricTimeToNetworkDropMax;
|
| + static const int kMetricTimeToNetworkDropMin;
|
| static const char kMetricTimeToNetworkDropName[];
|
| - static const int kMetricTimeToNetworkDropMin;
|
| - static const int kMetricTimeToNetworkDropMax;
|
| - static const int kMetricTimeToNetworkDropBuckets;
|
| + static const char kMetricUncleanShutdownIntervalName[];
|
| + static const char kMetricUncleanShutdownsDailyName[];
|
| + static const char kMetricUserCrashesDailyName[];
|
| static const char kMetricUserCrashIntervalName[];
|
| - static const int kMetricUserCrashIntervalMin;
|
| - static const int kMetricUserCrashIntervalMax;
|
| - static const int kMetricUserCrashIntervalBuckets;
|
|
|
| // D-Bus message match strings.
|
| static const char* kDBusMatches_[];
|
| @@ -162,10 +173,14 @@ class MetricsDaemon {
|
| // Updates the active use time and logs time between kernel crashes.
|
| void ProcessKernelCrash();
|
|
|
| - // Checks if a kernel crash has been detected and processes if so.
|
| - // The method assumes that a kernel crash has happened if
|
| - // |crash_file| exists.
|
| - void CheckKernelCrash(const std::string& crash_file);
|
| + // Updates the active use time and logs time between unclean shutdowns.
|
| + void ProcessUncleanShutdown();
|
| +
|
| + // Checks if a kernel crash has been detected and returns true if
|
| + // so. The method assumes that a kernel crash has happened if
|
| + // |crash_file| exists. It removes the file immediately if it
|
| + // exists, so it must not be called more than once.
|
| + bool CheckSystemCrash(const std::string& crash_file);
|
|
|
| // Callbacks for the daily use monitor. The daily use monitor uses
|
| // LogDailyUseRecord to aggregate current usage data and send it to
|
| @@ -196,15 +211,39 @@ class MetricsDaemon {
|
|
|
| // TaggedCounter callback to process aggregated daily usage data and
|
| // send to UMA.
|
| - static void DailyUseReporter(void* data, int tag, int count);
|
| + static void ReportDailyUse(void* data, int tag, int count);
|
| +
|
| + // Helper to report a crash interval to UMA.
|
| + static void ReportCrashInterval(const char* histogram_name,
|
| + void* handle, int count);
|
|
|
| // TaggedCounter callback to process time between user-space process
|
| // crashes and send to UMA.
|
| - static void UserCrashIntervalReporter(void* data, int tag, int count);
|
| + static void ReportUserCrashInterval(void* data, int tag, int count);
|
|
|
| // TaggedCounter callback to process time between kernel crashes and
|
| // send to UMA.
|
| - static void KernelCrashIntervalReporter(void* data, int tag, int count);
|
| + static void ReportKernelCrashInterval(void* data, int tag, int count);
|
| +
|
| + // TaggedCounter callback to process time between unclean shutdowns and
|
| + // send to UMA.
|
| + static void ReportUncleanShutdownInterval(void* data, int tag, int count);
|
| +
|
| + // Helper to report a daily crash frequency to UMA.
|
| + static void ReportCrashesDailyFrequency(const char* histogram_name,
|
| + void* handle, int count);
|
| +
|
| + // TaggedCounter callback to report daily crash frequency to UMA.
|
| + static void ReportUserCrashesDaily(void* handle, int tag, int count);
|
| +
|
| + // TaggedCounter callback to report kernel crash frequency to UMA.
|
| + static void ReportKernelCrashesDaily(void* handle, int tag, int count);
|
| +
|
| + // TaggedCounter callback to report unclean shutdown frequency to UMA.
|
| + static void ReportUncleanShutdownsDaily(void* handle, int tag, int count);
|
| +
|
| + // TaggedCounter callback to report frequency of any crashes to UMA.
|
| + static void ReportAnyCrashesDaily(void* handle, int tag, int count);
|
|
|
| // Test mode.
|
| bool testing_;
|
| @@ -244,6 +283,23 @@ class MetricsDaemon {
|
| // Active use time between kernel crashes.
|
| scoped_ptr<chromeos_metrics::TaggedCounterInterface> kernel_crash_interval_;
|
|
|
| + // Active use time between unclean shutdowns crashes.
|
| + scoped_ptr<chromeos_metrics::TaggedCounterInterface>
|
| + unclean_shutdown_interval_;
|
| +
|
| + // Daily count of user-space process crashes.
|
| + scoped_ptr<chromeos_metrics::FrequencyCounter> user_crashes_daily_;
|
| +
|
| + // Daily count of kernel crashes.
|
| + scoped_ptr<chromeos_metrics::FrequencyCounter> kernel_crashes_daily_;
|
| +
|
| + // Daily count of unclean shutdowns.
|
| + scoped_ptr<chromeos_metrics::FrequencyCounter> unclean_shutdowns_daily_;
|
| +
|
| + // Daily count of any crashes (user-space processes, kernel, or
|
| + // unclean shutdowns).
|
| + scoped_ptr<chromeos_metrics::FrequencyCounter> any_crashes_daily_;
|
| +
|
| // Sleep period until the next daily usage aggregation performed by
|
| // the daily use monitor (see ScheduleUseMonitor).
|
| int usemon_interval_;
|
|
|