| Index: net/http/http_basic_stream.cc
|
| ===================================================================
|
| --- net/http/http_basic_stream.cc (revision 86260)
|
| +++ net/http/http_basic_stream.cc (working copy)
|
| @@ -4,6 +4,7 @@
|
|
|
| #include "net/http/http_basic_stream.h"
|
|
|
| +#include "base/metrics/histogram.h"
|
| #include "base/stringprintf.h"
|
| #include "net/base/io_buffer.h"
|
| #include "net/base/net_errors.h"
|
| @@ -34,6 +35,7 @@
|
| request_info_ = request_info;
|
| parser_.reset(new HttpStreamParser(connection_.get(), request_info,
|
| read_buf_, net_log));
|
| + bytes_read_offset_ = connection_->socket()->NumBytesRead();
|
| return OK;
|
| }
|
|
|
| @@ -50,6 +52,7 @@
|
| request_line_ = base::StringPrintf("%s %s HTTP/1.1\r\n",
|
| request_info_->method.c_str(),
|
| path.c_str());
|
| + response_ = response;
|
| return parser_->SendRequest(request_line_, headers, request_body, response,
|
| callback);
|
| }
|
| @@ -119,4 +122,23 @@
|
| return false;
|
| }
|
|
|
| +void HttpBasicStream::LogRttVsBytesMetrics() const {
|
| + int bytes_received = connection_->socket()->NumBytesRead() -
|
| + bytes_read_offset_;
|
| + int num_kb = bytes_received / 1024;
|
| + double rtt = connection_->socket()->GetRTTInMs();
|
| +
|
| + if (num_kb < 1024 && rtt > 0) { // Ignore responses > 1MB
|
| + base::TimeDelta duration = base::Time::Now() -
|
| + response_->request_time;
|
| + double num_rtt = static_cast<double>(duration.InMilliseconds()) / rtt;
|
| + int num_rtt_scaled = (4 * num_rtt);
|
| + int val = 1024 * num_rtt_scaled + num_kb; // Supports ~500 RTT of 1418 B.
|
| + HISTOGRAM_CUSTOM_COUNTS("Net.RTT_vs_KB", val, 4096, 3048000, 1000);
|
| + LOG(ERROR) << request_line_
|
| + << "\nrtt = " << rtt << "\tnum_rtt = " << num_rtt
|
| + << "\tnum_kb = " << num_kb << "\tval = " << val;
|
| + }
|
| +}
|
| +
|
| } // namespace net
|
|
|