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

Unified Diff: remoting/client/plugin/chromoting_instance.cc

Issue 1305453002: Add UMA stats for Chromoting connection details. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 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
Index: remoting/client/plugin/chromoting_instance.cc
diff --git a/remoting/client/plugin/chromoting_instance.cc b/remoting/client/plugin/chromoting_instance.cc
index c0ad2d3eaacb7d6bf7807cc6c84a6aa6c9a4ede2..3676cfd4c8d121a16d41123694f1d592a627d387 100644
--- a/remoting/client/plugin/chromoting_instance.cc
+++ b/remoting/client/plugin/chromoting_instance.cc
@@ -67,6 +67,24 @@ const int kDefaultDPI = 96;
// state, so we initialize it with 1k or random data.
const int kRandomSeedSize = 1024;
+// The connection times and duration values are stored in UMA custom-time
+// histograms, specified based off values seen over a recent 7-day period.
+// The connection times histograms are in milliseconds and the connection
+// duration histograms are in minutes.
+const char kTimeToAuthenticateHistogram[] =
+ "Chromoting.Connections.TimesMs.Authenticate";
+const char kTimeToConnectHistogram[] = "Chromoting.Connections.TimesMs.Connect";
+const char kClosedSessionDurationHistogram[] =
+ "Chromoting.Connections.DurationsMinutes.Closed";
+const char kDroppedSessionDurationHistogram[] =
+ "Chromoting.Connections.DurationsMinutes.Failed";
+const int kConnectionTimesHistogramMinMs = 1;
+const int kConnectionTimesHistogramMaxMs = 30000;
+const int kConnectionTimesHistogramBuckets = 50;
+const int kConnectionDurationHistogramMinMinutes = 1;
+const int kConnectionDurationHistogramMaxMinutes = 24 * 60;
+const int kConnectionDurationHistogramBuckets = 50;
+
// TODO(sergeyu): Ideally we should just pass ErrorCode to the webapp
// and let it handle it, but it would be hard to fix it now because
// client plugin and webapp versions may not be in sync. It should be
@@ -364,6 +382,48 @@ void ChromotingInstance::OnVideoFrameDirtyRegion(
void ChromotingInstance::OnConnectionState(
protocol::ConnectionToHost::State state,
protocol::ErrorCode error) {
+ pp::UMAPrivate uma(this);
+
+ switch (state) {
+ case protocol::ConnectionToHost::CONNECTING:
+ connection_connecting_ = base::Time::Now();
+ break;
+ case protocol::ConnectionToHost::AUTHENTICATED:
+ connection_authenticated_ = base::Time::Now();
+ uma.HistogramCustomTimes(
+ kTimeToAuthenticateHistogram,
+ (connection_authenticated_ - connection_connecting_).InMilliseconds(),
+ kConnectionTimesHistogramMinMs, kConnectionTimesHistogramMaxMs,
+ kConnectionTimesHistogramBuckets);
+ break;
+ case protocol::ConnectionToHost::CONNECTED:
+ connection_connected_ = base::Time::Now();
+ uma.HistogramCustomTimes(
+ kTimeToConnectHistogram,
+ (connection_connected_ - connection_authenticated_).InMilliseconds(),
+ kConnectionTimesHistogramMinMs, kConnectionTimesHistogramMaxMs,
+ kConnectionTimesHistogramBuckets);
+ break;
+ case protocol::ConnectionToHost::CLOSED:
+ uma.HistogramCustomTimes(
+ kClosedSessionDurationHistogram,
+ (base::Time::Now() - connection_connected_).InMilliseconds(),
+ kConnectionDurationHistogramMinMinutes,
+ kConnectionDurationHistogramMaxMinutes,
+ kConnectionDurationHistogramBuckets);
+ break;
+ case protocol::ConnectionToHost::FAILED:
+ uma.HistogramCustomTimes(
+ kDroppedSessionDurationHistogram,
+ (base::Time::Now() - connection_connected_).InMilliseconds(),
Sergey Ulanov 2015/08/20 21:05:19 connection_connected_ is set only if the session w
anandc 2015/08/20 23:12:01 Done.
+ kConnectionDurationHistogramMinMinutes,
+ kConnectionDurationHistogramMaxMinutes,
+ kConnectionDurationHistogramBuckets);
+ break;
+ case protocol::ConnectionToHost::INITIALIZING:
+ break;
+ }
+
scoped_ptr<base::DictionaryValue> data(new base::DictionaryValue());
data->SetString("state", protocol::ConnectionToHost::StateToString(state));
data->SetString("error", ConnectionErrorToString(error));

Powered by Google App Engine
This is Rietveld 408576698