Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(159)

Unified Diff: metrics_daemon.h

Issue 3181015: Add # daily crashes metrics and separate kernel crashes out. (Closed) Base URL: ssh://git@chromiumos-git//metrics.git
Patch Set: Respond to review Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « counter_test.cc ('k') | metrics_daemon.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_;
« no previous file with comments | « counter_test.cc ('k') | metrics_daemon.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698