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

Side by Side Diff: google_apis/gcm/monitoring/gcm_stats_recorder.cc

Issue 261573002: Add checkin activity recording to gcm recorder. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Modify some code comments. Created 6 years, 7 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium 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 #include "google_apis/gcm/monitoring/gcm_stats_recorder.h" 5 #include "google_apis/gcm/monitoring/gcm_stats_recorder.h"
6 6
7 #include <deque> 7 #include <deque>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/format_macros.h" 10 #include "base/format_macros.h"
11 #include "base/logging.h" 11 #include "base/logging.h"
12 #include "base/metrics/histogram.h" 12 #include "base/metrics/histogram.h"
13 #include "base/strings/string_util.h" 13 #include "base/strings/string_util.h"
14 #include "base/strings/stringprintf.h" 14 #include "base/strings/stringprintf.h"
15 15
16 namespace gcm { 16 namespace gcm {
17 17
18 const uint32 MAX_LOGGED_ACTIVITY_COUNT = 100; 18 const uint32 MAX_LOGGED_ACTIVITY_COUNT = 100;
19 19
20 namespace { 20 namespace {
21 21
22 // Insert an itme to the front of deque while maintaining the size of the deque. 22 // Insert an itme to the front of deque while maintaining the size of the deque.
Nicolas Zea 2014/05/02 20:51:36 nit: itme -> item
juyik 2014/05/02 21:44:18 Done.
23 // Overflow item is discarded. 23 // Overflow item is discarded.
24 template <typename T> 24 template <typename T>
25 T* InsertCircularBuffer(std::deque<T>* q, const T& item) { 25 T* InsertCircularBuffer(std::deque<T>* q, const T& item) {
26 DCHECK(q); 26 DCHECK(q);
27 q->push_front(item); 27 q->push_front(item);
28 if (q->size() > MAX_LOGGED_ACTIVITY_COUNT) { 28 if (q->size() > MAX_LOGGED_ACTIVITY_COUNT) {
29 q->pop_back(); 29 q->pop_back();
30 } 30 }
31 return &q->front(); 31 return &q->front();
32 } 32 }
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 140
141 } // namespace 141 } // namespace
142 142
143 GCMStatsRecorder::Activity::Activity() 143 GCMStatsRecorder::Activity::Activity()
144 : time(base::Time::Now()) { 144 : time(base::Time::Now()) {
145 } 145 }
146 146
147 GCMStatsRecorder::Activity::~Activity() { 147 GCMStatsRecorder::Activity::~Activity() {
148 } 148 }
149 149
150 GCMStatsRecorder::CheckinActivity::CheckinActivity() {
151 }
152
153 GCMStatsRecorder::CheckinActivity::~CheckinActivity() {
154 }
155
150 GCMStatsRecorder::ConnectionActivity::ConnectionActivity() { 156 GCMStatsRecorder::ConnectionActivity::ConnectionActivity() {
151 } 157 }
152 158
153 GCMStatsRecorder::ConnectionActivity::~ConnectionActivity() { 159 GCMStatsRecorder::ConnectionActivity::~ConnectionActivity() {
154 } 160 }
155 161
156 GCMStatsRecorder::RegistrationActivity::RegistrationActivity() { 162 GCMStatsRecorder::RegistrationActivity::RegistrationActivity() {
157 } 163 }
158 164
159 GCMStatsRecorder::RegistrationActivity::~RegistrationActivity() { 165 GCMStatsRecorder::RegistrationActivity::~RegistrationActivity() {
(...skipping 22 matching lines...) Expand all
182 } 188 }
183 189
184 GCMStatsRecorder::~GCMStatsRecorder() { 190 GCMStatsRecorder::~GCMStatsRecorder() {
185 } 191 }
186 192
187 void GCMStatsRecorder::SetRecording(bool recording) { 193 void GCMStatsRecorder::SetRecording(bool recording) {
188 is_recording_ = recording; 194 is_recording_ = recording;
189 } 195 }
190 196
191 void GCMStatsRecorder::Clear() { 197 void GCMStatsRecorder::Clear() {
198 checkin_activities_.clear();
192 connection_activities_.clear(); 199 connection_activities_.clear();
193 registration_activities_.clear(); 200 registration_activities_.clear();
194 receiving_activities_.clear(); 201 receiving_activities_.clear();
195 sending_activities_.clear(); 202 sending_activities_.clear();
196 } 203 }
197 204
205 void GCMStatsRecorder::RecordCheckin(
206 const std::string& event,
207 const std::string& details) {
208 CheckinActivity data;
209 CheckinActivity* inserted_data = InsertCircularBuffer(
210 &checkin_activities_, data);
211 inserted_data->event = event;
212 inserted_data->details = details;
213 }
214
215 void GCMStatsRecorder::RecordCheckinInitiated(uint64 android_id) {
216 if (!is_recording_)
217 return;
218 RecordCheckin("Checkin initiated",
219 base::StringPrintf("Android Id: %" PRIu64, android_id));
220 }
221
222 void GCMStatsRecorder::RecordCheckinDelayedDueToBackoff(int64 delay_msec) {
223 if (!is_recording_)
224 return;
225 RecordCheckin("Checkin backoff",
226 base::StringPrintf("Delayed for %" PRId64 " msec",
227 delay_msec));
228 }
229
230 void GCMStatsRecorder::RecordCheckinSuccess() {
231 if (!is_recording_)
232 return;
233 RecordCheckin("Checkin succeeded", std::string());
234 }
235
236 void GCMStatsRecorder::RecordCheckinFailure(std::string status,
237 bool will_retry) {
238 if (!is_recording_)
239 return;
240 RecordCheckin("Checkin failed", base::StringPrintf(
241 "%s.%s", status.c_str(), will_retry ? " Will retry." : ""));
Nicolas Zea 2014/05/02 20:51:36 nit: perhaps also say "Will not retry" for false c
juyik 2014/05/02 21:44:18 Done.
242 }
243
198 void GCMStatsRecorder::RecordConnection( 244 void GCMStatsRecorder::RecordConnection(
199 const std::string& event, 245 const std::string& event,
200 const std::string& details) { 246 const std::string& details) {
201 ConnectionActivity data; 247 ConnectionActivity data;
202 ConnectionActivity* inserted_data = InsertCircularBuffer( 248 ConnectionActivity* inserted_data = InsertCircularBuffer(
203 &connection_activities_, data); 249 &connection_activities_, data);
204 inserted_data->event = event; 250 inserted_data->event = event;
205 inserted_data->details = details; 251 inserted_data->details = details;
206 } 252 }
207 253
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
357 "Message has been deleted on server"); 403 "Message has been deleted on server");
358 break; 404 break;
359 default: 405 default:
360 NOTREACHED(); 406 NOTREACHED();
361 } 407 }
362 } 408 }
363 } 409 }
364 410
365 void GCMStatsRecorder::CollectActivities( 411 void GCMStatsRecorder::CollectActivities(
366 RecordedActivities* recorder_activities) const { 412 RecordedActivities* recorder_activities) const {
413 recorder_activities->checkin_activities.insert(
414 recorder_activities->checkin_activities.begin(),
415 checkin_activities_.begin(),
416 checkin_activities_.end());
367 recorder_activities->connection_activities.insert( 417 recorder_activities->connection_activities.insert(
368 recorder_activities->connection_activities.begin(), 418 recorder_activities->connection_activities.begin(),
369 connection_activities_.begin(), 419 connection_activities_.begin(),
370 connection_activities_.end()); 420 connection_activities_.end());
371 recorder_activities->registration_activities.insert( 421 recorder_activities->registration_activities.insert(
372 recorder_activities->registration_activities.begin(), 422 recorder_activities->registration_activities.begin(),
373 registration_activities_.begin(), 423 registration_activities_.begin(),
374 registration_activities_.end()); 424 registration_activities_.end());
375 recorder_activities->receiving_activities.insert( 425 recorder_activities->receiving_activities.insert(
376 recorder_activities->receiving_activities.begin(), 426 recorder_activities->receiving_activities.begin(),
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
433 const std::string& receiver_id, 483 const std::string& receiver_id,
434 const std::string& message_id) { 484 const std::string& message_id) {
435 UMA_HISTOGRAM_COUNTS("GCM.IncomingSendErrors", 1); 485 UMA_HISTOGRAM_COUNTS("GCM.IncomingSendErrors", 1);
436 if (!is_recording_) 486 if (!is_recording_)
437 return; 487 return;
438 RecordSending(app_id, receiver_id, message_id, "Received 'send error' msg", 488 RecordSending(app_id, receiver_id, message_id, "Received 'send error' msg",
439 std::string()); 489 std::string());
440 } 490 }
441 491
442 } // namespace gcm 492 } // namespace gcm
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698