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

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: Include all SessionState enums in UMA enumerated-histogram. Cleanup plugin code. 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..3727e157bd884cb99b50780571c50705c2a12311 100644
--- a/remoting/client/plugin/chromoting_instance.cc
+++ b/remoting/client/plugin/chromoting_instance.cc
@@ -67,6 +67,25 @@ 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, that are log-scaled by default. The histogram specifications are
+// 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.Times.ToAuthenticate";
+const char kTimeToConnectHistogram[] = "Chromoting.Connections.Times.ToConnect";
+const char kClosedSessionDurationHistogram[] =
+ "Chromoting.Connections.Durations.Closed";
+const char kFailedSessionDurationHistogram[] =
+ "Chromoting.Connections.Durations.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 +383,57 @@ void ChromotingInstance::OnVideoFrameDirtyRegion(
void ChromotingInstance::OnConnectionState(
protocol::ConnectionToHost::State state,
protocol::ErrorCode error) {
+ pp::UMAPrivate uma(this);
+
+ switch (state) {
+ case protocol::ConnectionToHost::INITIALIZING:
+ NOTREACHED();
+ break;
+ case protocol::ConnectionToHost::CONNECTING:
+ connection_started_time = base::TimeTicks::Now();
+ break;
+ case protocol::ConnectionToHost::AUTHENTICATED:
+ connection_authenticated_time_ = base::TimeTicks::Now();
+ uma.HistogramCustomTimes(
+ kTimeToAuthenticateHistogram,
+ (connection_authenticated_time_ - connection_started_time)
+ .InMilliseconds(),
+ kConnectionTimesHistogramMinMs, kConnectionTimesHistogramMaxMs,
+ kConnectionTimesHistogramBuckets);
+ break;
+ case protocol::ConnectionToHost::CONNECTED:
+ connection_connected_time_ = base::TimeTicks::Now();
+ uma.HistogramCustomTimes(
+ kTimeToConnectHistogram,
+ (connection_connected_time_ - connection_authenticated_time_)
+ .InMilliseconds(),
+ kConnectionTimesHistogramMinMs, kConnectionTimesHistogramMaxMs,
+ kConnectionTimesHistogramBuckets);
+ break;
+ case protocol::ConnectionToHost::CLOSED:
+ if (!connection_connected_time_.is_null()) {
+ uma.HistogramCustomTimes(
+ kClosedSessionDurationHistogram,
+ (base::TimeTicks::Now() - connection_connected_time_)
+ .InMilliseconds(),
+ kConnectionDurationHistogramMinMinutes,
+ kConnectionDurationHistogramMaxMinutes,
+ kConnectionDurationHistogramBuckets);
+ }
+ break;
+ case protocol::ConnectionToHost::FAILED:
+ if (!connection_connected_time_.is_null()) {
+ uma.HistogramCustomTimes(
+ kFailedSessionDurationHistogram,
+ (base::TimeTicks::Now() - connection_connected_time_)
+ .InMilliseconds(),
+ kConnectionDurationHistogramMinMinutes,
+ kConnectionDurationHistogramMaxMinutes,
+ kConnectionDurationHistogramBuckets);
+ }
+ 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