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

Side by Side Diff: metrics_daemon.h

Issue 2864009: Log active use time between kernel crashes. (Closed) Base URL: ssh://git@chromiumos-git/metrics.git
Patch Set: Fix potential memory leaks and usage of freed resources. Created 10 years, 6 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 unified diff | Download patch
« no previous file with comments | « Makefile ('k') | metrics_daemon.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef METRICS_DAEMON_H_ 5 #ifndef METRICS_DAEMON_H_
6 #define METRICS_DAEMON_H_ 6 #define METRICS_DAEMON_H_
7 7
8 #include <dbus/dbus.h> 8 #include <dbus/dbus.h>
9 #include <glib.h> 9 #include <glib.h>
10 10
(...skipping 13 matching lines...) Expand all
24 24
25 // Initializes. 25 // Initializes.
26 void Init(bool testing, MetricsLibraryInterface* metrics_lib); 26 void Init(bool testing, MetricsLibraryInterface* metrics_lib);
27 27
28 // Does all the work. If |run_as_daemon| is true, daemonizes by 28 // Does all the work. If |run_as_daemon| is true, daemonizes by
29 // forking. 29 // forking.
30 void Run(bool run_as_daemon); 30 void Run(bool run_as_daemon);
31 31
32 private: 32 private:
33 friend class MetricsDaemonTest; 33 friend class MetricsDaemonTest;
34 FRIEND_TEST(MetricsDaemonTest, CheckKernelCrash);
34 FRIEND_TEST(MetricsDaemonTest, DailyUseReporter); 35 FRIEND_TEST(MetricsDaemonTest, DailyUseReporter);
36 FRIEND_TEST(MetricsDaemonTest, KernelCrashIntervalReporter);
35 FRIEND_TEST(MetricsDaemonTest, LookupNetworkState); 37 FRIEND_TEST(MetricsDaemonTest, LookupNetworkState);
36 FRIEND_TEST(MetricsDaemonTest, LookupPowerState); 38 FRIEND_TEST(MetricsDaemonTest, LookupPowerState);
37 FRIEND_TEST(MetricsDaemonTest, LookupScreenSaverState); 39 FRIEND_TEST(MetricsDaemonTest, LookupScreenSaverState);
38 FRIEND_TEST(MetricsDaemonTest, LookupSessionState); 40 FRIEND_TEST(MetricsDaemonTest, LookupSessionState);
39 FRIEND_TEST(MetricsDaemonTest, MessageFilter); 41 FRIEND_TEST(MetricsDaemonTest, MessageFilter);
40 FRIEND_TEST(MetricsDaemonTest, NetStateChangedSimpleDrop); 42 FRIEND_TEST(MetricsDaemonTest, NetStateChangedSimpleDrop);
41 FRIEND_TEST(MetricsDaemonTest, NetStateChangedSuspend); 43 FRIEND_TEST(MetricsDaemonTest, NetStateChangedSuspend);
42 FRIEND_TEST(MetricsDaemonTest, PowerStateChanged); 44 FRIEND_TEST(MetricsDaemonTest, PowerStateChanged);
45 FRIEND_TEST(MetricsDaemonTest, ProcessKernelCrash);
43 FRIEND_TEST(MetricsDaemonTest, ProcessUserCrash); 46 FRIEND_TEST(MetricsDaemonTest, ProcessUserCrash);
44 FRIEND_TEST(MetricsDaemonTest, ScreenSaverStateChanged); 47 FRIEND_TEST(MetricsDaemonTest, ScreenSaverStateChanged);
45 FRIEND_TEST(MetricsDaemonTest, SendMetric); 48 FRIEND_TEST(MetricsDaemonTest, SendMetric);
46 FRIEND_TEST(MetricsDaemonTest, SessionStateChanged); 49 FRIEND_TEST(MetricsDaemonTest, SessionStateChanged);
47 FRIEND_TEST(MetricsDaemonTest, SetUserActiveState); 50 FRIEND_TEST(MetricsDaemonTest, SetUserActiveState);
48 FRIEND_TEST(MetricsDaemonTest, SetUserActiveStateTimeJump); 51 FRIEND_TEST(MetricsDaemonTest, SetUserActiveStateTimeJump);
49 FRIEND_TEST(MetricsDaemonTest, UserCrashIntervalReporter); 52 FRIEND_TEST(MetricsDaemonTest, UserCrashIntervalReporter);
50 53
51 // The network states (see network_states.h). 54 // The network states (see network_states.h).
52 enum NetworkState { 55 enum NetworkState {
(...skipping 25 matching lines...) Expand all
78 UseRecord() : day_(0), seconds_(0) {} 81 UseRecord() : day_(0), seconds_(0) {}
79 int day_; 82 int day_;
80 int seconds_; 83 int seconds_;
81 }; 84 };
82 85
83 // Metric parameters. 86 // Metric parameters.
84 static const char kMetricDailyUseTimeName[]; 87 static const char kMetricDailyUseTimeName[];
85 static const int kMetricDailyUseTimeMin; 88 static const int kMetricDailyUseTimeMin;
86 static const int kMetricDailyUseTimeMax; 89 static const int kMetricDailyUseTimeMax;
87 static const int kMetricDailyUseTimeBuckets; 90 static const int kMetricDailyUseTimeBuckets;
91 static const char kMetricKernelCrashIntervalName[];
92 static const int kMetricKernelCrashIntervalMin;
93 static const int kMetricKernelCrashIntervalMax;
94 static const int kMetricKernelCrashIntervalBuckets;
88 static const char kMetricTimeToNetworkDropName[]; 95 static const char kMetricTimeToNetworkDropName[];
89 static const int kMetricTimeToNetworkDropMin; 96 static const int kMetricTimeToNetworkDropMin;
90 static const int kMetricTimeToNetworkDropMax; 97 static const int kMetricTimeToNetworkDropMax;
91 static const int kMetricTimeToNetworkDropBuckets; 98 static const int kMetricTimeToNetworkDropBuckets;
92 static const char kMetricUserCrashIntervalName[]; 99 static const char kMetricUserCrashIntervalName[];
93 static const int kMetricUserCrashIntervalMin; 100 static const int kMetricUserCrashIntervalMin;
94 static const int kMetricUserCrashIntervalMax; 101 static const int kMetricUserCrashIntervalMax;
95 static const int kMetricUserCrashIntervalBuckets; 102 static const int kMetricUserCrashIntervalBuckets;
96 103
97 // D-Bus message match strings. 104 // D-Bus message match strings.
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 // of active use to the |day| since Epoch. If there's usage data for 152 // of active use to the |day| since Epoch. If there's usage data for
146 // day in the past in the usage file, that data is sent to UMA and 153 // day in the past in the usage file, that data is sent to UMA and
147 // removed from the file. If there's already usage data for |day| in 154 // removed from the file. If there's already usage data for |day| in
148 // the usage file, the |seconds| are accumulated. 155 // the usage file, the |seconds| are accumulated.
149 void LogDailyUseRecord(int day, int seconds); 156 void LogDailyUseRecord(int day, int seconds);
150 157
151 // Updates the active use time and logs time between user-space 158 // Updates the active use time and logs time between user-space
152 // process crashes. 159 // process crashes.
153 void ProcessUserCrash(); 160 void ProcessUserCrash();
154 161
162 // Updates the active use time and logs time between kernel crashes.
163 void ProcessKernelCrash();
164
165 // Checks if a kernel crash has been detected and processes if so.
166 // The method assumes that a kernel crash has happened if
167 // |crash_file| exists.
168 void CheckKernelCrash(const std::string& crash_file);
169
155 // Callbacks for the daily use monitor. The daily use monitor uses 170 // Callbacks for the daily use monitor. The daily use monitor uses
156 // LogDailyUseRecord to aggregate current usage data and send it to 171 // LogDailyUseRecord to aggregate current usage data and send it to
157 // UMA, if necessary. It also reschedules itself using an 172 // UMA, if necessary. It also reschedules itself using an
158 // exponentially bigger interval (up to a certain maximum) -- so 173 // exponentially bigger interval (up to a certain maximum) -- so
159 // usage is monitored less frequently with longer active use. 174 // usage is monitored less frequently with longer active use.
160 static gboolean UseMonitorStatic(gpointer data); 175 static gboolean UseMonitorStatic(gpointer data);
161 bool UseMonitor(); 176 bool UseMonitor();
162 177
163 // Schedules or reschedules a daily use monitor for |interval| 178 // Schedules or reschedules a daily use monitor for |interval|
164 // seconds from now. |backoff| mode is used by the use monitor to 179 // seconds from now. |backoff| mode is used by the use monitor to
(...skipping 15 matching lines...) Expand all
180 int min, int max, int nbuckets); 195 int min, int max, int nbuckets);
181 196
182 // TaggedCounter callback to process aggregated daily usage data and 197 // TaggedCounter callback to process aggregated daily usage data and
183 // send to UMA. 198 // send to UMA.
184 static void DailyUseReporter(void* data, int tag, int count); 199 static void DailyUseReporter(void* data, int tag, int count);
185 200
186 // TaggedCounter callback to process time between user-space process 201 // TaggedCounter callback to process time between user-space process
187 // crashes and send to UMA. 202 // crashes and send to UMA.
188 static void UserCrashIntervalReporter(void* data, int tag, int count); 203 static void UserCrashIntervalReporter(void* data, int tag, int count);
189 204
205 // TaggedCounter callback to process time between kernel crashes and
206 // send to UMA.
207 static void KernelCrashIntervalReporter(void* data, int tag, int count);
208
190 // Test mode. 209 // Test mode.
191 bool testing_; 210 bool testing_;
192 211
193 // The metrics library handle. 212 // The metrics library handle.
194 MetricsLibraryInterface* metrics_lib_; 213 MetricsLibraryInterface* metrics_lib_;
195 214
196 // Current network state. 215 // Current network state.
197 NetworkState network_state_; 216 NetworkState network_state_;
198 217
199 // Timestamps last network state update. This timestamp is used to 218 // Timestamps last network state update. This timestamp is used to
(...skipping 15 matching lines...) Expand all
215 // each day before sending to UMA so using time since the epoch as 234 // each day before sending to UMA so using time since the epoch as
216 // the timestamp. 235 // the timestamp.
217 base::Time user_active_last_; 236 base::Time user_active_last_;
218 237
219 // Daily active use time in seconds. 238 // Daily active use time in seconds.
220 scoped_ptr<chromeos_metrics::TaggedCounterInterface> daily_use_; 239 scoped_ptr<chromeos_metrics::TaggedCounterInterface> daily_use_;
221 240
222 // Active use time between user-space process crashes. 241 // Active use time between user-space process crashes.
223 scoped_ptr<chromeos_metrics::TaggedCounterInterface> user_crash_interval_; 242 scoped_ptr<chromeos_metrics::TaggedCounterInterface> user_crash_interval_;
224 243
244 // Active use time between kernel crashes.
245 scoped_ptr<chromeos_metrics::TaggedCounterInterface> kernel_crash_interval_;
246
225 // Sleep period until the next daily usage aggregation performed by 247 // Sleep period until the next daily usage aggregation performed by
226 // the daily use monitor (see ScheduleUseMonitor). 248 // the daily use monitor (see ScheduleUseMonitor).
227 int usemon_interval_; 249 int usemon_interval_;
228 250
229 // Scheduled daily use monitor source (see ScheduleUseMonitor). 251 // Scheduled daily use monitor source (see ScheduleUseMonitor).
230 GSource* usemon_source_; 252 GSource* usemon_source_;
231 }; 253 };
232 254
233 #endif // METRICS_DAEMON_H_ 255 #endif // METRICS_DAEMON_H_
OLDNEW
« no previous file with comments | « Makefile ('k') | metrics_daemon.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698