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

Unified Diff: net/http/http_stream_factory_impl_request_unittest.cc

Issue 1586513002: QUIC - Whne alternate job decides to delay the main(TCP) job and if the (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase and fix comments Created 4 years, 11 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
« no previous file with comments | « net/http/http_stream_factory_impl_job.cc ('k') | net/log/net_log_event_type_list.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/http/http_stream_factory_impl_request_unittest.cc
diff --git a/net/http/http_stream_factory_impl_request_unittest.cc b/net/http/http_stream_factory_impl_request_unittest.cc
index 9e9c5d1f013c95a9ad12e3e4006f00cb7e75b7e7..89833994829a13a11247477cbb50c5fd047975d7 100644
--- a/net/http/http_stream_factory_impl_request_unittest.cc
+++ b/net/http/http_stream_factory_impl_request_unittest.cc
@@ -101,4 +101,66 @@ TEST_P(HttpStreamFactoryImplRequestTest, SetPriority) {
EXPECT_EQ(IDLE, job->priority());
}
+TEST_P(HttpStreamFactoryImplRequestTest, DelayMainJob) {
+ SpdySessionDependencies session_deps(GetParam(),
+ ProxyService::CreateDirect());
+
+ scoped_ptr<HttpNetworkSession> session =
+ SpdySessionDependencies::SpdyCreateSession(&session_deps);
+
+ StaticSocketDataProvider socket_data;
+ socket_data.set_connect_data(MockConnect(SYNCHRONOUS, ERR_IO_PENDING));
+ session_deps.socket_factory->AddSocketDataProvider(&socket_data);
+
+ HttpStreamFactoryImpl* factory =
+ static_cast<HttpStreamFactoryImpl*>(session->http_stream_factory());
+
+ DoNothingRequestDelegate request_delegate;
+ HttpRequestInfo request_info;
+ request_info.method = "GET";
+ request_info.url = GURL("http://www.google.com");
+
+ HttpStreamFactoryImpl::Request request(
+ request_info.url, factory, &request_delegate, NULL, BoundNetLog(),
+ HttpStreamFactoryImpl::Request::HTTP_STREAM);
+
+ HostPortPair server = HostPortPair::FromURL(request_info.url);
+ GURL original_url = factory->ApplyHostMappingRules(request_info.url, &server);
+
+ HttpStreamFactoryImpl::Job* job = new HttpStreamFactoryImpl::Job(
+ factory, session.get(), request_info, DEFAULT_PRIORITY, SSLConfig(),
+ SSLConfig(), server, original_url, NULL);
+ request.AttachJob(job);
+ EXPECT_EQ(DEFAULT_PRIORITY, job->priority());
+
+ AlternativeService alternative_service(net::NPN_HTTP_2, server);
+ HttpStreamFactoryImpl::Job* alternative_job = new HttpStreamFactoryImpl::Job(
+ factory, session.get(), request_info, DEFAULT_PRIORITY, SSLConfig(),
+ SSLConfig(), server, original_url, alternative_service, NULL);
+ request.AttachJob(alternative_job);
+
+ job->WaitFor(alternative_job);
+ EXPECT_EQ(HttpStreamFactoryImpl::Job::STATE_NONE, job->next_state_);
+
+ // Test |alternative_job| resuming the |job| after delay.
+ int wait_time = 1;
+ base::TimeDelta delay = base::TimeDelta::FromMilliseconds(wait_time);
+ job->Resume(alternative_job, delay);
+
+ // Verify |job| has |wait_time_| and there is no |blocking_job_|
+ EXPECT_EQ(delay, job->wait_time_);
+ EXPECT_TRUE(!job->blocking_job_);
+
+ // Start the |job| and verify |job|'s |wait_time_| is cleared.
+ job->Start(&request);
+
+ base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(wait_time + 1));
+ base::MessageLoop::current()->RunUntilIdle();
+
+ EXPECT_NE(delay, job->wait_time_);
+ EXPECT_TRUE(job->wait_time_.is_zero());
+ EXPECT_EQ(HttpStreamFactoryImpl::Job::STATE_INIT_CONNECTION_COMPLETE,
+ job->next_state_);
+}
+
} // namespace net
« no previous file with comments | « net/http/http_stream_factory_impl_job.cc ('k') | net/log/net_log_event_type_list.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698