summaryrefslogtreecommitdiffstats
path: root/net/quic
diff options
context:
space:
mode:
authorrch@chromium.org <rch@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-31 02:15:06 +0000
committerrch@chromium.org <rch@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-31 02:15:06 +0000
commit9ad974318aed27d5187101f227592932d5b44da1 (patch)
treeb487781b546aed867898df46152d18390de6777f /net/quic
parentee92da4f959d2b3ea4c7981138999da22a6550a1 (diff)
downloadchromium_src-9ad974318aed27d5187101f227592932d5b44da1.zip
chromium_src-9ad974318aed27d5187101f227592932d5b44da1.tar.gz
chromium_src-9ad974318aed27d5187101f227592932d5b44da1.tar.bz2
Add histograms for tracking the number of client hellos send. This will let us understand how frequently we are able to make use of the 0RTT handshake.
Review URL: https://chromiumcodereview.appspot.com/15950009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@203311 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/quic')
-rw-r--r--net/quic/quic_client_session.cc35
1 files changed, 35 insertions, 0 deletions
diff --git a/net/quic/quic_client_session.cc b/net/quic/quic_client_session.cc
index 493dac8..c22bda5 100644
--- a/net/quic/quic_client_session.cc
+++ b/net/quic/quic_client_session.cc
@@ -6,6 +6,7 @@
#include "base/callback_helpers.h"
#include "base/message_loop.h"
+#include "base/metrics/histogram.h"
#include "base/stl_util.h"
#include "base/string_number_conversions.h"
#include "base/values.h"
@@ -18,6 +19,25 @@
namespace net {
+namespace {
+
+// Note: these values must be kept in sync with the corresponding values in:
+// tools/metrics/histograms/histograms.xml
+enum HandshakeState {
+ STATE_STARTED = 0,
+ STATE_ENCRYPTION_ESTABLISHED = 1,
+ STATE_HANDSHAKE_CONFIRMED = 2,
+ STATE_FAILED = 3,
+ NUM_HANDSHAKE_STATES = 4
+};
+
+void RecordHandshakeState(HandshakeState state) {
+ UMA_HISTOGRAM_ENUMERATION("Net.QuicHandshakeState", state,
+ NUM_HANDSHAKE_STATES);
+}
+
+} // namespace
+
QuicClientSession::QuicClientSession(
QuicConnection* connection,
DatagramClientSocket* socket,
@@ -53,6 +73,20 @@ QuicClientSession::~QuicClientSession() {
DCHECK(callback_.is_null());
connection()->set_debug_visitor(NULL);
net_log_.EndEvent(NetLog::TYPE_QUIC_SESSION);
+
+ if (IsEncryptionEstablished())
+ RecordHandshakeState(STATE_ENCRYPTION_ESTABLISHED);
+ if (IsCryptoHandshakeConfirmed())
+ RecordHandshakeState(STATE_HANDSHAKE_CONFIRMED);
+ else
+ RecordHandshakeState(STATE_FAILED);
+
+ UMA_HISTOGRAM_COUNTS("Net.QuicNumSentClientHellos",
+ crypto_stream_->num_sent_client_hellos());
+ if (IsCryptoHandshakeConfirmed()) {
+ UMA_HISTOGRAM_COUNTS("Net.QuicNumSentClientHellosCryptoHandshakeConfirmed",
+ crypto_stream_->num_sent_client_hellos());
+ }
}
QuicReliableClientStream* QuicClientSession::CreateOutgoingReliableStream() {
@@ -82,6 +116,7 @@ QuicCryptoClientStream* QuicClientSession::GetCryptoStream() {
};
int QuicClientSession::CryptoConnect(const CompletionCallback& callback) {
+ RecordHandshakeState(STATE_STARTED);
if (!crypto_stream_->CryptoConnect()) {
// TODO(wtc): change crypto_stream_.CryptoConnect() to return a
// QuicErrorCode and map it to a net error code.