| Index: metrics_daemon.h
|
| diff --git a/metrics_daemon.h b/metrics_daemon.h
|
| index f98c34c4f77b7673c3dbd836c8bedaeac56b7ab8..d400bf0f0e602baac79e28bfb8be15d5210a59ba 100644
|
| --- a/metrics_daemon.h
|
| +++ b/metrics_daemon.h
|
| @@ -7,7 +7,9 @@
|
|
|
| #include <dbus/dbus.h>
|
| #include <glib.h>
|
| +#include <map>
|
|
|
| +#include <base/file_path.h>
|
| #include <base/scoped_ptr.h>
|
| #include <base/time.h>
|
| #include <gtest/gtest_prod.h> // for FRIEND_TEST
|
| @@ -16,7 +18,8 @@
|
|
|
| namespace chromeos_metrics {
|
| class FrequencyCounter;
|
| -class TaggedCounterInterface;
|
| +class TaggedCounter;
|
| +class TaggedCounterReporter;
|
| }
|
|
|
| class MetricsDaemon {
|
| @@ -35,6 +38,10 @@ class MetricsDaemon {
|
| private:
|
| friend class MetricsDaemonTest;
|
| FRIEND_TEST(MetricsDaemonTest, CheckSystemCrash);
|
| + FRIEND_TEST(MetricsDaemonTest, ComputeEpochNoCurrent);
|
| + FRIEND_TEST(MetricsDaemonTest, ComputeEpochNoLast);
|
| + FRIEND_TEST(MetricsDaemonTest, GetHistogramPath);
|
| + FRIEND_TEST(MetricsDaemonTest, IsNewEpoch);
|
| FRIEND_TEST(MetricsDaemonTest, LookupNetworkState);
|
| FRIEND_TEST(MetricsDaemonTest, LookupPowerState);
|
| FRIEND_TEST(MetricsDaemonTest, LookupScreenSaverState);
|
| @@ -89,11 +96,15 @@ class MetricsDaemon {
|
| int seconds_;
|
| };
|
|
|
| + typedef std::map<std::string, chromeos_metrics::FrequencyCounter*>
|
| + FrequencyCounters;
|
| +
|
| // Metric parameters.
|
| static const char kMetricAnyCrashesDailyName[];
|
| - static const char kMetricCrashesDailyBuckets;
|
| - static const char kMetricCrashesDailyMax;
|
| - static const char kMetricCrashesDailyMin;
|
| + static const char kMetricAnyCrashesWeeklyName[];
|
| + static const char kMetricCrashFrequencyBuckets;
|
| + static const char kMetricCrashFrequencyMax;
|
| + static const char kMetricCrashFrequencyMin;
|
| static const int kMetricCrashIntervalBuckets;
|
| static const int kMetricCrashIntervalMax;
|
| static const int kMetricCrashIntervalMin;
|
| @@ -102,14 +113,18 @@ class MetricsDaemon {
|
| static const int kMetricDailyUseTimeMin;
|
| static const char kMetricDailyUseTimeName[];
|
| static const char kMetricKernelCrashesDailyName[];
|
| + static const char kMetricKernelCrashesWeeklyName[];
|
| static const char kMetricKernelCrashIntervalName[];
|
| + static const char kMetricsPath[];
|
| static const int kMetricTimeToNetworkDropBuckets;
|
| static const int kMetricTimeToNetworkDropMax;
|
| static const int kMetricTimeToNetworkDropMin;
|
| static const char kMetricTimeToNetworkDropName[];
|
| static const char kMetricUncleanShutdownIntervalName[];
|
| static const char kMetricUncleanShutdownsDailyName[];
|
| + static const char kMetricUncleanShutdownsWeeklyName[];
|
| static const char kMetricUserCrashesDailyName[];
|
| + static const char kMetricUserCrashesWeeklyName[];
|
| static const char kMetricUserCrashIntervalName[];
|
|
|
| // D-Bus message match strings.
|
| @@ -124,6 +139,20 @@ class MetricsDaemon {
|
| // Array of user session states.
|
| static const char* kSessionStates_[kNumberSessionStates];
|
|
|
| + // Clears and deletes the data contained in frequency_counters_.
|
| + void DeleteFrequencyCounters();
|
| +
|
| + // Configures the given crash interval reporter.
|
| + void ConfigureCrashIntervalReporter(
|
| + const char* histogram_name,
|
| + scoped_ptr<chromeos_metrics::TaggedCounterReporter>* reporter);
|
| +
|
| + // Configures the given frequency counter reporter.
|
| + void ConfigureCrashFrequencyReporter(const char* histogram_name);
|
| +
|
| + // Returns file path to persistent file for generating given histogram.
|
| + FilePath GetHistogramPath(const char* histogram_name);
|
| +
|
| // Creates the event loop and enters it.
|
| void Loop();
|
|
|
| @@ -203,48 +232,15 @@ class MetricsDaemon {
|
| // Unschedules a scheduled use monitor, if any.
|
| void UnscheduleUseMonitor();
|
|
|
| + // Report daily use through UMA.
|
| + static void ReportDailyUse(void* handle, int tag, int count);
|
| +
|
| // Sends a regular (exponential) histogram sample to Chrome for
|
| // transport to UMA. See MetricsLibrary::SendToUMA in
|
| // metrics_library.h for a description of the arguments.
|
| void SendMetric(const std::string& name, int sample,
|
| int min, int max, int nbuckets);
|
|
|
| - // TaggedCounter callback to process aggregated daily usage data and
|
| - // send to UMA.
|
| - 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 ReportUserCrashInterval(void* data, int tag, int count);
|
| -
|
| - // TaggedCounter callback to process time between kernel crashes and
|
| - // send to UMA.
|
| - 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_;
|
|
|
| @@ -275,30 +271,20 @@ class MetricsDaemon {
|
| base::Time user_active_last_;
|
|
|
| // Daily active use time in seconds.
|
| - scoped_ptr<chromeos_metrics::TaggedCounterInterface> daily_use_;
|
| + scoped_ptr<chromeos_metrics::TaggedCounter> daily_use_;
|
|
|
| // Active use time between user-space process crashes.
|
| - scoped_ptr<chromeos_metrics::TaggedCounterInterface> user_crash_interval_;
|
| + scoped_ptr<chromeos_metrics::TaggedCounterReporter> user_crash_interval_;
|
|
|
| // Active use time between kernel crashes.
|
| - scoped_ptr<chromeos_metrics::TaggedCounterInterface> kernel_crash_interval_;
|
| + scoped_ptr<chromeos_metrics::TaggedCounterReporter> kernel_crash_interval_;
|
|
|
| // Active use time between unclean shutdowns crashes.
|
| - scoped_ptr<chromeos_metrics::TaggedCounterInterface>
|
| + scoped_ptr<chromeos_metrics::TaggedCounterReporter>
|
| 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_;
|
| + // Map of all frequency counters, to simplify flushing them.
|
| + FrequencyCounters frequency_counters_;
|
|
|
| // Sleep period until the next daily usage aggregation performed by
|
| // the daily use monitor (see ScheduleUseMonitor).
|
|
|