diff options
author | rch@chromium.org <rch@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-31 02:15:06 +0000 |
---|---|---|
committer | rch@chromium.org <rch@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-31 02:15:06 +0000 |
commit | 9ad974318aed27d5187101f227592932d5b44da1 (patch) | |
tree | b487781b546aed867898df46152d18390de6777f /net/quic | |
parent | ee92da4f959d2b3ea4c7981138999da22a6550a1 (diff) | |
download | chromium_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.cc | 35 |
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. |