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

Unified Diff: net/quic/quic_network_transaction_unittest.cc

Issue 1305293004: Notfiy NQE of QUIC RTT (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed rch comments, now using quic connection logger Created 5 years, 3 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: net/quic/quic_network_transaction_unittest.cc
diff --git a/net/quic/quic_network_transaction_unittest.cc b/net/quic/quic_network_transaction_unittest.cc
index ffd19182b53a8668766cab7988031ff9a92c49e7..11938238644ddb33e2b73b7d69fc55b678726f89 100644
--- a/net/quic/quic_network_transaction_unittest.cc
+++ b/net/quic/quic_network_transaction_unittest.cc
@@ -8,6 +8,8 @@
#include "base/compiler_specific.h"
#include "base/memory/scoped_ptr.h"
#include "base/stl_util.h"
+#include "net/base/socket_performance_watcher.h"
+#include "net/base/socket_performance_watcher_factory.h"
#include "net/base/test_completion_callback.h"
#include "net/base/test_data_directory.h"
#include "net/cert/mock_cert_verifier.h"
@@ -139,6 +141,73 @@ class ProxyHeadersHandler {
bool was_called_;
};
+// Verifies whether the socket performance watcher was notified of updated RTT.
+class WatcherNotificationVerifier {
+ public:
+ WatcherNotificationVerifier()
+ : received_updated_rtt_available_notification_(false) {}
+
+ virtual ~WatcherNotificationVerifier() {}
+
+ void OnUpdatedRTTAvailable() {
+ received_updated_rtt_available_notification_ = true;
+ }
+
+ bool IsRTTAvailableRTTNotificationReceived() const {
+ return received_updated_rtt_available_notification_;
+ }
+
+ private:
+ bool received_updated_rtt_available_notification_;
+ DISALLOW_COPY_AND_ASSIGN(WatcherNotificationVerifier);
+};
+
+class TestSocketPerformanceWatcher : public SocketPerformanceWatcher {
+ public:
+ TestSocketPerformanceWatcher(WatcherNotificationVerifier* watcher_checker)
+ : watcher_notification_verifier_(watcher_checker) {}
+
+ ~TestSocketPerformanceWatcher() override {}
+
+ void OnUpdatedRTTAvailable(const base::TimeDelta& rtt) override {
+ watcher_notification_verifier_->OnUpdatedRTTAvailable();
+ }
+
+ private:
+ WatcherNotificationVerifier* watcher_notification_verifier_;
+ DISALLOW_COPY_AND_ASSIGN(TestSocketPerformanceWatcher);
+};
+
+class TestSocketPerformanceWatcherFactory
+ : public SocketPerformanceWatcherFactory {
+ public:
+ TestSocketPerformanceWatcherFactory()
+ : watcher_notification_verifier_(new WatcherNotificationVerifier()) {}
+
+ ~TestSocketPerformanceWatcherFactory() override {}
+
+ scoped_ptr<SocketPerformanceWatcher> CreateUDPSocketPerformanceWatcher()
+ const override {
+ return scoped_ptr<TestSocketPerformanceWatcher>(
+ new TestSocketPerformanceWatcher(watcher_notification_verifier_.get()));
+ }
+
+ scoped_ptr<SocketPerformanceWatcher> CreateTCPSocketPerformanceWatcher()
+ const override {
+ return scoped_ptr<SocketPerformanceWatcher>(
+ new TestSocketPerformanceWatcher(nullptr));
+ }
+
+ bool IsRTTAvailableRTTNotificationReceived() const {
+ return watcher_notification_verifier_
+ ->IsRTTAvailableRTTNotificationReceived();
+ }
+
+ private:
+ scoped_ptr<WatcherNotificationVerifier> watcher_notification_verifier_;
+ DISALLOW_COPY_AND_ASSIGN(TestSocketPerformanceWatcherFactory);
+};
+
class QuicNetworkTransactionTest
: public PlatformTest,
public ::testing::WithParamInterface<QuicVersion> {
@@ -146,6 +215,8 @@ class QuicNetworkTransactionTest
QuicNetworkTransactionTest()
: clock_(new MockClock),
maker_(GetParam(), 0, clock_, kDefaultServerHostName),
+ socket_performance_watcher_factory_(
+ new TestSocketPerformanceWatcherFactory()),
ssl_config_service_(new SSLConfigServiceDefaults),
proxy_service_(ProxyService::CreateDirect()),
auth_handler_factory_(
@@ -248,6 +319,8 @@ class QuicNetworkTransactionTest
params_.host_resolver = &host_resolver_;
params_.cert_verifier = &cert_verifier_;
params_.transport_security_state = &transport_security_state_;
+ params_.socket_performance_watcher_factory =
+ socket_performance_watcher_factory_.get();
params_.proxy_service = proxy_service_.get();
params_.ssl_config_service = ssl_config_service_.get();
params_.http_auth_handler_factory = auth_handler_factory_.get();
@@ -372,6 +445,8 @@ class QuicNetworkTransactionTest
MockHostResolver host_resolver_;
MockCertVerifier cert_verifier_;
TransportSecurityState transport_security_state_;
+ scoped_ptr<TestSocketPerformanceWatcherFactory>
+ socket_performance_watcher_factory_;
scoped_refptr<SSLConfigServiceDefaults> ssl_config_service_;
scoped_ptr<ProxyService> proxy_service_;
scoped_ptr<HttpAuthHandlerFactory> auth_handler_factory_;
@@ -492,12 +567,16 @@ TEST_P(QuicNetworkTransactionTest, QuicProxy) {
mock_quic_data.AddSocketDataToFactory(&socket_factory_);
+ DCHECK(!socket_performance_watcher_factory_
+ ->IsRTTAvailableRTTNotificationReceived());
// There is no need to set up an alternate protocol job, because
// no attempt will be made to speak to the proxy over TCP.
CreateSession();
SendRequestAndExpectQuicResponseFromProxyOnPort("hello!", 70);
+ DCHECK(socket_performance_watcher_factory_
+ ->IsRTTAvailableRTTNotificationReceived());
}
// Regression test for https://crbug.com/492458. Test that for an HTTP
@@ -542,6 +621,8 @@ TEST_P(QuicNetworkTransactionTest, QuicProxyWithCert) {
CreateSessionWithNextProtos();
AddQuicAlternateProtocolMapping(MockCryptoClientStream::CONFIRM_HANDSHAKE);
SendRequestAndExpectQuicResponseFromProxyOnPort("hello!", 70);
+ DCHECK(socket_performance_watcher_factory_
Ryan Hamilton 2015/09/17 01:59:49 s/DCHECK/EXPECT_TRUE/ ?
tbansal1 2015/09/17 22:23:42 Done.
+ ->IsRTTAvailableRTTNotificationReceived());
}
TEST_P(QuicNetworkTransactionTest, ForceQuicWithErrorConnecting) {
@@ -584,6 +665,8 @@ TEST_P(QuicNetworkTransactionTest, DoNotForceQuicForHttps) {
CreateSession();
SendRequestAndExpectHttpResponse("hello world");
+ DCHECK(!socket_performance_watcher_factory_
+ ->IsRTTAvailableRTTNotificationReceived());
}
TEST_P(QuicNetworkTransactionTest, UseAlternativeServiceForQuic) {
@@ -1488,6 +1571,8 @@ TEST_P(QuicNetworkTransactionTest, BrokenAlternateProtocol) {
AddQuicAlternateProtocolMapping(MockCryptoClientStream::COLD_START);
SendRequestAndExpectHttpResponse("hello from http");
ExpectBrokenAlternateProtocolMapping();
+ DCHECK(socket_performance_watcher_factory_
+ ->IsRTTAvailableRTTNotificationReceived());
}
TEST_P(QuicNetworkTransactionTest, BrokenAlternateProtocolReadError) {
@@ -1517,6 +1602,8 @@ TEST_P(QuicNetworkTransactionTest, BrokenAlternateProtocolReadError) {
AddQuicAlternateProtocolMapping(MockCryptoClientStream::COLD_START);
SendRequestAndExpectHttpResponse("hello from http");
ExpectBrokenAlternateProtocolMapping();
+ DCHECK(!socket_performance_watcher_factory_
+ ->IsRTTAvailableRTTNotificationReceived());
}
TEST_P(QuicNetworkTransactionTest, NoBrokenAlternateProtocolIfTcpFails) {

Powered by Google App Engine
This is Rietveld 408576698