OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "net/spdy/spdy_session.h" | 5 #include "net/spdy/spdy_session.h" |
6 | 6 |
7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
8 #include "base/run_loop.h" | 8 #include "base/run_loop.h" |
9 #include "net/base/io_buffer.h" | 9 #include "net/base/io_buffer.h" |
10 #include "net/base/ip_endpoint.h" | 10 #include "net/base/ip_endpoint.h" |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl); | 158 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl); |
159 | 159 |
160 CreateDeterministicNetworkSession(); | 160 CreateDeterministicNetworkSession(); |
161 | 161 |
162 scoped_refptr<SpdySession> session = CreateInitializedSession(); | 162 scoped_refptr<SpdySession> session = CreateInitializedSession(); |
163 | 163 |
164 EXPECT_EQ(2, session->GetProtocolVersion()); | 164 EXPECT_EQ(2, session->GetProtocolVersion()); |
165 | 165 |
166 GURL url("http://www.google.com"); | 166 GURL url("http://www.google.com"); |
167 base::WeakPtr<SpdyStream> spdy_stream1 = | 167 base::WeakPtr<SpdyStream> spdy_stream1 = |
168 CreateStreamSynchronously(session, url, MEDIUM, BoundNetLog()); | 168 CreateStreamSynchronously( |
| 169 SPDY_BIDIRECTIONAL_STREAM, session, url, MEDIUM, BoundNetLog()); |
169 | 170 |
170 base::WeakPtr<SpdyStream> spdy_stream2 = | 171 base::WeakPtr<SpdyStream> spdy_stream2 = |
171 CreateStreamSynchronously(session, url, MEDIUM, BoundNetLog()); | 172 CreateStreamSynchronously( |
| 173 SPDY_BIDIRECTIONAL_STREAM, session, url, MEDIUM, BoundNetLog()); |
172 | 174 |
173 scoped_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock); | 175 scoped_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock); |
174 (*headers)["method"] = "GET"; | 176 (*headers)["method"] = "GET"; |
175 (*headers)["scheme"] = url.scheme(); | 177 (*headers)["scheme"] = url.scheme(); |
176 (*headers)["host"] = url.host(); | 178 (*headers)["host"] = url.host(); |
177 (*headers)["url"] = url.path(); | 179 (*headers)["url"] = url.path(); |
178 (*headers)["version"] = "HTTP/1.1"; | 180 (*headers)["version"] = "HTTP/1.1"; |
179 scoped_ptr<SpdyHeaderBlock> headers2(new SpdyHeaderBlock); | 181 scoped_ptr<SpdyHeaderBlock> headers2(new SpdyHeaderBlock); |
180 *headers2 = *headers; | 182 *headers2 = *headers; |
181 | 183 |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
232 session_deps_.socket_factory->AddSocketDataProvider(&data); | 234 session_deps_.socket_factory->AddSocketDataProvider(&data); |
233 | 235 |
234 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); | 236 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); |
235 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); | 237 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
236 | 238 |
237 CreateNetworkSession(); | 239 CreateNetworkSession(); |
238 | 240 |
239 scoped_refptr<SpdySession> session = CreateInitializedSession(); | 241 scoped_refptr<SpdySession> session = CreateInitializedSession(); |
240 | 242 |
241 base::WeakPtr<SpdyStream> spdy_stream1 = | 243 base::WeakPtr<SpdyStream> spdy_stream1 = |
242 CreateStreamSynchronously(session, test_url_, MEDIUM, BoundNetLog()); | 244 CreateStreamSynchronously( |
| 245 SPDY_BIDIRECTIONAL_STREAM, session, test_url_, MEDIUM, BoundNetLog()); |
243 ASSERT_TRUE(spdy_stream1.get() != NULL); | 246 ASSERT_TRUE(spdy_stream1.get() != NULL); |
244 test::StreamDelegateSendImmediate delegate(spdy_stream1, NULL); | 247 test::StreamDelegateSendImmediate delegate(spdy_stream1, NULL); |
245 spdy_stream1->SetDelegate(&delegate); | 248 spdy_stream1->SetDelegate(&delegate); |
246 | 249 |
247 base::TimeTicks before_ping_time = base::TimeTicks::Now(); | 250 base::TimeTicks before_ping_time = base::TimeTicks::Now(); |
248 | 251 |
249 session->set_connection_at_risk_of_loss_time( | 252 session->set_connection_at_risk_of_loss_time( |
250 base::TimeDelta::FromSeconds(-1)); | 253 base::TimeDelta::FromSeconds(-1)); |
251 session->set_hung_interval(base::TimeDelta::FromMilliseconds(50)); | 254 session->set_hung_interval(base::TimeDelta::FromMilliseconds(50)); |
252 | 255 |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
286 session_deps_.socket_factory->AddSocketDataProvider(&data); | 289 session_deps_.socket_factory->AddSocketDataProvider(&data); |
287 | 290 |
288 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); | 291 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); |
289 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); | 292 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
290 | 293 |
291 CreateNetworkSession(); | 294 CreateNetworkSession(); |
292 | 295 |
293 scoped_refptr<SpdySession> session = CreateInitializedSession(); | 296 scoped_refptr<SpdySession> session = CreateInitializedSession(); |
294 | 297 |
295 base::WeakPtr<SpdyStream> spdy_stream1 = | 298 base::WeakPtr<SpdyStream> spdy_stream1 = |
296 CreateStreamSynchronously(session, test_url_, MEDIUM, BoundNetLog()); | 299 CreateStreamSynchronously( |
| 300 SPDY_BIDIRECTIONAL_STREAM, session, test_url_, MEDIUM, BoundNetLog()); |
297 ASSERT_TRUE(spdy_stream1.get() != NULL); | 301 ASSERT_TRUE(spdy_stream1.get() != NULL); |
298 test::StreamDelegateSendImmediate delegate(spdy_stream1, NULL); | 302 test::StreamDelegateSendImmediate delegate(spdy_stream1, NULL); |
299 spdy_stream1->SetDelegate(&delegate); | 303 spdy_stream1->SetDelegate(&delegate); |
300 | 304 |
301 // Flush the SpdySession::OnReadComplete() task. | 305 // Flush the SpdySession::OnReadComplete() task. |
302 base::MessageLoop::current()->RunUntilIdle(); | 306 base::MessageLoop::current()->RunUntilIdle(); |
303 | 307 |
304 EXPECT_FALSE(spdy_session_pool_->HasSession(key_)); | 308 EXPECT_FALSE(spdy_session_pool_->HasSession(key_)); |
305 | 309 |
306 // Delete the session. | 310 // Delete the session. |
(...skipping 15 matching lines...) Expand all Loading... |
322 // Give the session a SPDY2 framer. | 326 // Give the session a SPDY2 framer. |
323 session->buffered_spdy_framer_.reset(new BufferedSpdyFramer(SPDY2, false)); | 327 session->buffered_spdy_framer_.reset(new BufferedSpdyFramer(SPDY2, false)); |
324 | 328 |
325 // Create the associated stream and add to active streams. | 329 // Create the associated stream and add to active streams. |
326 scoped_ptr<SpdyHeaderBlock> request_headers(new SpdyHeaderBlock); | 330 scoped_ptr<SpdyHeaderBlock> request_headers(new SpdyHeaderBlock); |
327 (*request_headers)["scheme"] = "http"; | 331 (*request_headers)["scheme"] = "http"; |
328 (*request_headers)["host"] = "www.google.com"; | 332 (*request_headers)["host"] = "www.google.com"; |
329 (*request_headers)["url"] = "/"; | 333 (*request_headers)["url"] = "/"; |
330 | 334 |
331 scoped_ptr<SpdyStream> stream( | 335 scoped_ptr<SpdyStream> stream( |
332 new SpdyStream(session, std::string(), DEFAULT_PRIORITY, | 336 new SpdyStream(SPDY_REQUEST_RESPONSE_STREAM, |
| 337 session, std::string(), DEFAULT_PRIORITY, |
333 kSpdyStreamInitialWindowSize, | 338 kSpdyStreamInitialWindowSize, |
334 kSpdyStreamInitialWindowSize, | 339 kSpdyStreamInitialWindowSize, |
335 false, session->net_log_)); | 340 session->net_log_)); |
336 stream->SendRequestHeaders(request_headers.Pass(), NO_MORE_DATA_TO_SEND); | 341 stream->SendRequestHeaders(request_headers.Pass(), NO_MORE_DATA_TO_SEND); |
337 SpdyStream* stream_ptr = stream.get(); | 342 SpdyStream* stream_ptr = stream.get(); |
338 session->InsertCreatedStream(stream.Pass()); | 343 session->InsertCreatedStream(stream.Pass()); |
339 stream = session->ActivateCreatedStream(stream_ptr); | 344 stream = session->ActivateCreatedStream(stream_ptr); |
340 session->InsertActivatedStream(stream.Pass()); | 345 session->InsertActivatedStream(stream.Pass()); |
341 | 346 |
342 SpdyHeaderBlock headers; | 347 SpdyHeaderBlock headers; |
343 headers["url"] = "http://www.google.com/a.dat"; | 348 headers["url"] = "http://www.google.com/a.dat"; |
344 session->OnSynStream(2, 1, 0, 0, true, false, headers); | 349 session->OnSynStream(2, 1, 0, 0, true, false, headers); |
345 | 350 |
346 // Verify that there is one unclaimed push stream. | 351 // Verify that there is one unclaimed push stream. |
347 EXPECT_EQ(1u, session->num_unclaimed_pushed_streams()); | 352 EXPECT_EQ(1u, session->num_unclaimed_pushed_streams()); |
348 SpdySession::PushedStreamMap::iterator iter = | 353 SpdySession::PushedStreamMap::iterator iter = |
349 session->unclaimed_pushed_streams_.find("http://www.google.com/a.dat"); | 354 session->unclaimed_pushed_streams_.find("http://www.google.com/a.dat"); |
350 EXPECT_TRUE(session->unclaimed_pushed_streams_.end() != iter); | 355 EXPECT_TRUE(session->unclaimed_pushed_streams_.end() != iter); |
351 | 356 |
352 // Shift time. | 357 // Shift time. |
353 g_delta_seconds = 301; | 358 g_delta_seconds = 301; |
354 | 359 |
355 headers["url"] = "http://www.google.com/b.dat"; | 360 headers["url"] = "http://www.google.com/b.dat"; |
356 session->OnSynStream(4, 1, 0, 0, true, false, headers); | 361 session->OnSynStream(4, 1, 0, 0, true, false, headers); |
357 | 362 |
358 // Verify that the second pushed stream evicted the first pushed stream. | 363 // Verify that the second pushed stream evicted the first pushed stream. |
(...skipping 24 matching lines...) Expand all Loading... |
383 session_deps_.socket_factory->AddSocketDataProvider(&data); | 388 session_deps_.socket_factory->AddSocketDataProvider(&data); |
384 | 389 |
385 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); | 390 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); |
386 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); | 391 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
387 | 392 |
388 CreateNetworkSession(); | 393 CreateNetworkSession(); |
389 | 394 |
390 scoped_refptr<SpdySession> session = CreateInitializedSession(); | 395 scoped_refptr<SpdySession> session = CreateInitializedSession(); |
391 | 396 |
392 base::WeakPtr<SpdyStream> spdy_stream1 = | 397 base::WeakPtr<SpdyStream> spdy_stream1 = |
393 CreateStreamSynchronously(session, test_url_, MEDIUM, BoundNetLog()); | 398 CreateStreamSynchronously( |
| 399 SPDY_BIDIRECTIONAL_STREAM, session, test_url_, MEDIUM, BoundNetLog()); |
394 ASSERT_TRUE(spdy_stream1.get() != NULL); | 400 ASSERT_TRUE(spdy_stream1.get() != NULL); |
395 test::StreamDelegateSendImmediate delegate(spdy_stream1, NULL); | 401 test::StreamDelegateSendImmediate delegate(spdy_stream1, NULL); |
396 spdy_stream1->SetDelegate(&delegate); | 402 spdy_stream1->SetDelegate(&delegate); |
397 | 403 |
398 session->set_connection_at_risk_of_loss_time(base::TimeDelta::FromSeconds(0)); | 404 session->set_connection_at_risk_of_loss_time(base::TimeDelta::FromSeconds(0)); |
399 session->set_hung_interval(base::TimeDelta::FromSeconds(0)); | 405 session->set_hung_interval(base::TimeDelta::FromSeconds(0)); |
400 | 406 |
401 // Send a PING frame. | 407 // Send a PING frame. |
402 session->WritePingFrame(1); | 408 session->WritePingFrame(1); |
403 EXPECT_LT(0, session->pings_in_flight()); | 409 EXPECT_LT(0, session->pings_in_flight()); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
442 HostPortPair test_host_port_pair1(kTestHost1, 80); | 448 HostPortPair test_host_port_pair1(kTestHost1, 80); |
443 SpdySessionKey key1(test_host_port_pair1, ProxyServer::Direct(), | 449 SpdySessionKey key1(test_host_port_pair1, ProxyServer::Direct(), |
444 kPrivacyModeDisabled); | 450 kPrivacyModeDisabled); |
445 scoped_refptr<SpdySession> session1 = GetSession(key1); | 451 scoped_refptr<SpdySession> session1 = GetSession(key1); |
446 EXPECT_EQ( | 452 EXPECT_EQ( |
447 OK, | 453 OK, |
448 InitializeSession( | 454 InitializeSession( |
449 http_session_.get(), session1.get(), test_host_port_pair1)); | 455 http_session_.get(), session1.get(), test_host_port_pair1)); |
450 GURL url1(kTestHost1); | 456 GURL url1(kTestHost1); |
451 base::WeakPtr<SpdyStream> spdy_stream1 = | 457 base::WeakPtr<SpdyStream> spdy_stream1 = |
452 CreateStreamSynchronously(session1, url1, MEDIUM, BoundNetLog()); | 458 CreateStreamSynchronously( |
| 459 SPDY_BIDIRECTIONAL_STREAM, session1, url1, MEDIUM, BoundNetLog()); |
453 ASSERT_TRUE(spdy_stream1.get() != NULL); | 460 ASSERT_TRUE(spdy_stream1.get() != NULL); |
454 | 461 |
455 // Set up session 2 | 462 // Set up session 2 |
456 session_deps_.socket_factory->AddSocketDataProvider(&data); | 463 session_deps_.socket_factory->AddSocketDataProvider(&data); |
457 const std::string kTestHost2("http://www.b.com"); | 464 const std::string kTestHost2("http://www.b.com"); |
458 HostPortPair test_host_port_pair2(kTestHost2, 80); | 465 HostPortPair test_host_port_pair2(kTestHost2, 80); |
459 SpdySessionKey key2(test_host_port_pair2, ProxyServer::Direct(), | 466 SpdySessionKey key2(test_host_port_pair2, ProxyServer::Direct(), |
460 kPrivacyModeDisabled); | 467 kPrivacyModeDisabled); |
461 scoped_refptr<SpdySession> session2 = GetSession(key2); | 468 scoped_refptr<SpdySession> session2 = GetSession(key2); |
462 EXPECT_EQ( | 469 EXPECT_EQ( |
463 OK, | 470 OK, |
464 InitializeSession( | 471 InitializeSession( |
465 http_session_.get(), session2.get(), test_host_port_pair2)); | 472 http_session_.get(), session2.get(), test_host_port_pair2)); |
466 GURL url2(kTestHost2); | 473 GURL url2(kTestHost2); |
467 base::WeakPtr<SpdyStream> spdy_stream2 = | 474 base::WeakPtr<SpdyStream> spdy_stream2 = |
468 CreateStreamSynchronously(session2, url2, MEDIUM, BoundNetLog()); | 475 CreateStreamSynchronously( |
| 476 SPDY_BIDIRECTIONAL_STREAM, session2, url2, MEDIUM, BoundNetLog()); |
469 ASSERT_TRUE(spdy_stream2.get() != NULL); | 477 ASSERT_TRUE(spdy_stream2.get() != NULL); |
470 | 478 |
471 // Set up session 3 | 479 // Set up session 3 |
472 session_deps_.socket_factory->AddSocketDataProvider(&data); | 480 session_deps_.socket_factory->AddSocketDataProvider(&data); |
473 const std::string kTestHost3("http://www.c.com"); | 481 const std::string kTestHost3("http://www.c.com"); |
474 HostPortPair test_host_port_pair3(kTestHost3, 80); | 482 HostPortPair test_host_port_pair3(kTestHost3, 80); |
475 SpdySessionKey key3(test_host_port_pair3, ProxyServer::Direct(), | 483 SpdySessionKey key3(test_host_port_pair3, ProxyServer::Direct(), |
476 kPrivacyModeDisabled); | 484 kPrivacyModeDisabled); |
477 scoped_refptr<SpdySession> session3 = GetSession(key3); | 485 scoped_refptr<SpdySession> session3 = GetSession(key3); |
478 EXPECT_EQ( | 486 EXPECT_EQ( |
479 OK, | 487 OK, |
480 InitializeSession( | 488 InitializeSession( |
481 http_session_.get(), session3.get(), test_host_port_pair3)); | 489 http_session_.get(), session3.get(), test_host_port_pair3)); |
482 GURL url3(kTestHost3); | 490 GURL url3(kTestHost3); |
483 base::WeakPtr<SpdyStream> spdy_stream3 = | 491 base::WeakPtr<SpdyStream> spdy_stream3 = |
484 CreateStreamSynchronously(session3, url3, MEDIUM, BoundNetLog()); | 492 CreateStreamSynchronously( |
| 493 SPDY_BIDIRECTIONAL_STREAM, session3, url3, MEDIUM, BoundNetLog()); |
485 ASSERT_TRUE(spdy_stream3.get() != NULL); | 494 ASSERT_TRUE(spdy_stream3.get() != NULL); |
486 | 495 |
487 // All sessions are active and not closed | 496 // All sessions are active and not closed |
488 EXPECT_TRUE(session1->is_active()); | 497 EXPECT_TRUE(session1->is_active()); |
489 EXPECT_FALSE(session1->IsClosed()); | 498 EXPECT_FALSE(session1->IsClosed()); |
490 EXPECT_TRUE(session2->is_active()); | 499 EXPECT_TRUE(session2->is_active()); |
491 EXPECT_FALSE(session2->IsClosed()); | 500 EXPECT_FALSE(session2->IsClosed()); |
492 EXPECT_TRUE(session3->is_active()); | 501 EXPECT_TRUE(session3->is_active()); |
493 EXPECT_FALSE(session3->IsClosed()); | 502 EXPECT_FALSE(session3->IsClosed()); |
494 | 503 |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
577 spdy_session_pool_->http_server_properties()->SetSpdySetting( | 586 spdy_session_pool_->http_server_properties()->SetSpdySetting( |
578 test_host_port_pair_, | 587 test_host_port_pair_, |
579 kSpdySettingsIds1, | 588 kSpdySettingsIds1, |
580 SETTINGS_FLAG_PLEASE_PERSIST, | 589 SETTINGS_FLAG_PLEASE_PERSIST, |
581 1); | 590 1); |
582 | 591 |
583 scoped_refptr<SpdySession> session = CreateInitializedSession(); | 592 scoped_refptr<SpdySession> session = CreateInitializedSession(); |
584 | 593 |
585 // Create 2 streams. First will succeed. Second will be pending. | 594 // Create 2 streams. First will succeed. Second will be pending. |
586 base::WeakPtr<SpdyStream> spdy_stream1 = | 595 base::WeakPtr<SpdyStream> spdy_stream1 = |
587 CreateStreamSynchronously(session, test_url_, MEDIUM, BoundNetLog()); | 596 CreateStreamSynchronously( |
| 597 SPDY_BIDIRECTIONAL_STREAM, session, test_url_, MEDIUM, BoundNetLog()); |
588 ASSERT_TRUE(spdy_stream1.get() != NULL); | 598 ASSERT_TRUE(spdy_stream1.get() != NULL); |
589 | 599 |
590 StreamReleaserCallback stream_releaser; | 600 StreamReleaserCallback stream_releaser; |
591 SpdyStreamRequest request; | 601 SpdyStreamRequest request; |
592 ASSERT_EQ(ERR_IO_PENDING, | 602 ASSERT_EQ(ERR_IO_PENDING, |
593 request.StartRequest(session, test_url_, MEDIUM, | 603 request.StartRequest( |
594 BoundNetLog(), | 604 SPDY_BIDIRECTIONAL_STREAM, session, test_url_, MEDIUM, |
595 stream_releaser.MakeCallback(&request))); | 605 BoundNetLog(), |
| 606 stream_releaser.MakeCallback(&request))); |
596 | 607 |
597 EXPECT_EQ(OK, stream_releaser.WaitForResult()); | 608 EXPECT_EQ(OK, stream_releaser.WaitForResult()); |
598 } | 609 } |
599 | 610 |
600 // Start with max concurrent streams set to 1 (that is persisted). Receive a | 611 // Start with max concurrent streams set to 1 (that is persisted). Receive a |
601 // settings frame setting max concurrent streams to 2 and which also clears the | 612 // settings frame setting max concurrent streams to 2 and which also clears the |
602 // persisted data. Verify that persisted data is correct. | 613 // persisted data. Verify that persisted data is correct. |
603 TEST_F(SpdySessionSpdy2Test, ClearSettings) { | 614 TEST_F(SpdySessionSpdy2Test, ClearSettings) { |
604 session_deps_.host_resolver->set_synchronous_mode(true); | 615 session_deps_.host_resolver->set_synchronous_mode(true); |
605 | 616 |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
637 SETTINGS_FLAG_PLEASE_PERSIST, | 648 SETTINGS_FLAG_PLEASE_PERSIST, |
638 1); | 649 1); |
639 | 650 |
640 EXPECT_EQ(1u, spdy_session_pool_->http_server_properties()->GetSpdySettings( | 651 EXPECT_EQ(1u, spdy_session_pool_->http_server_properties()->GetSpdySettings( |
641 test_host_port_pair_).size()); | 652 test_host_port_pair_).size()); |
642 | 653 |
643 scoped_refptr<SpdySession> session = CreateInitializedSession(); | 654 scoped_refptr<SpdySession> session = CreateInitializedSession(); |
644 | 655 |
645 // Create 2 streams. First will succeed. Second will be pending. | 656 // Create 2 streams. First will succeed. Second will be pending. |
646 base::WeakPtr<SpdyStream> spdy_stream1 = | 657 base::WeakPtr<SpdyStream> spdy_stream1 = |
647 CreateStreamSynchronously(session, test_url_, MEDIUM, BoundNetLog()); | 658 CreateStreamSynchronously( |
| 659 SPDY_BIDIRECTIONAL_STREAM, session, test_url_, MEDIUM, BoundNetLog()); |
648 ASSERT_TRUE(spdy_stream1.get() != NULL); | 660 ASSERT_TRUE(spdy_stream1.get() != NULL); |
649 | 661 |
650 StreamReleaserCallback stream_releaser; | 662 StreamReleaserCallback stream_releaser; |
651 SpdyStreamRequest request; | 663 SpdyStreamRequest request; |
652 ASSERT_EQ(ERR_IO_PENDING, | 664 ASSERT_EQ(ERR_IO_PENDING, |
653 request.StartRequest(session, test_url_, MEDIUM, | 665 request.StartRequest( |
654 BoundNetLog(), | 666 SPDY_BIDIRECTIONAL_STREAM, session, test_url_, MEDIUM, |
655 stream_releaser.MakeCallback(&request))); | 667 BoundNetLog(), |
| 668 stream_releaser.MakeCallback(&request))); |
656 | 669 |
657 EXPECT_EQ(OK, stream_releaser.WaitForResult()); | 670 EXPECT_EQ(OK, stream_releaser.WaitForResult()); |
658 | 671 |
659 // Make sure that persisted data is cleared. | 672 // Make sure that persisted data is cleared. |
660 EXPECT_EQ(0u, spdy_session_pool_->http_server_properties()->GetSpdySettings( | 673 EXPECT_EQ(0u, spdy_session_pool_->http_server_properties()->GetSpdySettings( |
661 test_host_port_pair_).size()); | 674 test_host_port_pair_).size()); |
662 | 675 |
663 // Make sure session's max_concurrent_streams is 2. | 676 // Make sure session's max_concurrent_streams is 2. |
664 EXPECT_EQ(2u, session->max_concurrent_streams()); | 677 EXPECT_EQ(2u, session->max_concurrent_streams()); |
665 | 678 |
(...skipping 26 matching lines...) Expand all Loading... |
692 spdy_session_pool_->http_server_properties()->SetSpdySetting( | 705 spdy_session_pool_->http_server_properties()->SetSpdySetting( |
693 test_host_port_pair_, | 706 test_host_port_pair_, |
694 SETTINGS_MAX_CONCURRENT_STREAMS, | 707 SETTINGS_MAX_CONCURRENT_STREAMS, |
695 SETTINGS_FLAG_PLEASE_PERSIST, | 708 SETTINGS_FLAG_PLEASE_PERSIST, |
696 1); | 709 1); |
697 | 710 |
698 scoped_refptr<SpdySession> session = CreateInitializedSession(); | 711 scoped_refptr<SpdySession> session = CreateInitializedSession(); |
699 | 712 |
700 // Create 2 streams. First will succeed. Second will be pending. | 713 // Create 2 streams. First will succeed. Second will be pending. |
701 base::WeakPtr<SpdyStream> spdy_stream1 = | 714 base::WeakPtr<SpdyStream> spdy_stream1 = |
702 CreateStreamSynchronously(session, test_url_, MEDIUM, BoundNetLog()); | 715 CreateStreamSynchronously( |
| 716 SPDY_BIDIRECTIONAL_STREAM, session, test_url_, MEDIUM, BoundNetLog()); |
703 ASSERT_TRUE(spdy_stream1.get() != NULL); | 717 ASSERT_TRUE(spdy_stream1.get() != NULL); |
704 | 718 |
705 // Use scoped_ptr to let us invalidate the memory when we want to, to trigger | 719 // Use scoped_ptr to let us invalidate the memory when we want to, to trigger |
706 // a valgrind error if the callback is invoked when it's not supposed to be. | 720 // a valgrind error if the callback is invoked when it's not supposed to be. |
707 scoped_ptr<TestCompletionCallback> callback(new TestCompletionCallback); | 721 scoped_ptr<TestCompletionCallback> callback(new TestCompletionCallback); |
708 | 722 |
709 SpdyStreamRequest request; | 723 SpdyStreamRequest request; |
710 ASSERT_EQ(ERR_IO_PENDING, | 724 ASSERT_EQ(ERR_IO_PENDING, |
711 request.StartRequest(session, test_url_, MEDIUM, | 725 request.StartRequest( |
712 BoundNetLog(), | 726 SPDY_BIDIRECTIONAL_STREAM, session, test_url_, MEDIUM, |
713 callback->callback())); | 727 BoundNetLog(), |
| 728 callback->callback())); |
714 | 729 |
715 // Release the first one, this will allow the second to be created. | 730 // Release the first one, this will allow the second to be created. |
716 spdy_stream1->Cancel(); | 731 spdy_stream1->Cancel(); |
717 EXPECT_EQ(NULL, spdy_stream1.get()); | 732 EXPECT_EQ(NULL, spdy_stream1.get()); |
718 | 733 |
719 request.CancelRequest(); | 734 request.CancelRequest(); |
720 callback.reset(); | 735 callback.reset(); |
721 | 736 |
722 // Should not crash when running the pending callback. | 737 // Should not crash when running the pending callback. |
723 base::MessageLoop::current()->RunUntilIdle(); | 738 base::MessageLoop::current()->RunUntilIdle(); |
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
977 session = NULL; | 992 session = NULL; |
978 spdy_session_pool->Remove(session2); | 993 spdy_session_pool->Remove(session2); |
979 session2 = NULL; | 994 session2 = NULL; |
980 break; | 995 break; |
981 case SPDY_POOL_CLOSE_CURRENT_SESSIONS: | 996 case SPDY_POOL_CLOSE_CURRENT_SESSIONS: |
982 spdy_session_pool->CloseCurrentSessions(net::ERR_ABORTED); | 997 spdy_session_pool->CloseCurrentSessions(net::ERR_ABORTED); |
983 break; | 998 break; |
984 case SPDY_POOL_CLOSE_IDLE_SESSIONS: | 999 case SPDY_POOL_CLOSE_IDLE_SESSIONS: |
985 GURL url(test_hosts[0].url); | 1000 GURL url(test_hosts[0].url); |
986 base::WeakPtr<SpdyStream> spdy_stream = | 1001 base::WeakPtr<SpdyStream> spdy_stream = |
987 CreateStreamSynchronously(session, url, MEDIUM, BoundNetLog()); | 1002 CreateStreamSynchronously( |
| 1003 SPDY_BIDIRECTIONAL_STREAM, session, url, MEDIUM, BoundNetLog()); |
988 GURL url1(test_hosts[1].url); | 1004 GURL url1(test_hosts[1].url); |
989 base::WeakPtr<SpdyStream> spdy_stream1 = | 1005 base::WeakPtr<SpdyStream> spdy_stream1 = |
990 CreateStreamSynchronously(session1, url1, MEDIUM, BoundNetLog()); | 1006 CreateStreamSynchronously( |
| 1007 SPDY_BIDIRECTIONAL_STREAM, session1, url1, MEDIUM, BoundNetLog()); |
991 GURL url2(test_hosts[2].url); | 1008 GURL url2(test_hosts[2].url); |
992 base::WeakPtr<SpdyStream> spdy_stream2 = | 1009 base::WeakPtr<SpdyStream> spdy_stream2 = |
993 CreateStreamSynchronously(session2, url2, MEDIUM, BoundNetLog()); | 1010 CreateStreamSynchronously( |
| 1011 SPDY_BIDIRECTIONAL_STREAM, session2, url2, MEDIUM, BoundNetLog()); |
994 | 1012 |
995 // Close streams to make spdy_session and spdy_session1 inactive. | 1013 // Close streams to make spdy_session and spdy_session1 inactive. |
996 session->CloseCreatedStream(spdy_stream, OK); | 1014 session->CloseCreatedStream(spdy_stream, OK); |
997 EXPECT_EQ(NULL, spdy_stream.get()); | 1015 EXPECT_EQ(NULL, spdy_stream.get()); |
998 session1->CloseCreatedStream(spdy_stream1, OK); | 1016 session1->CloseCreatedStream(spdy_stream1, OK); |
999 EXPECT_EQ(NULL, spdy_stream1.get()); | 1017 EXPECT_EQ(NULL, spdy_stream1.get()); |
1000 | 1018 |
1001 // Check spdy_session and spdy_session1 are not closed. | 1019 // Check spdy_session and spdy_session1 are not closed. |
1002 EXPECT_FALSE(session->is_active()); | 1020 EXPECT_FALSE(session->is_active()); |
1003 EXPECT_FALSE(session->IsClosed()); | 1021 EXPECT_FALSE(session->IsClosed()); |
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1145 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); | 1163 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); |
1146 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); | 1164 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
1147 | 1165 |
1148 CreateNetworkSession(); | 1166 CreateNetworkSession(); |
1149 | 1167 |
1150 scoped_refptr<SpdySession> session = CreateInitializedSession(); | 1168 scoped_refptr<SpdySession> session = CreateInitializedSession(); |
1151 | 1169 |
1152 GURL url("http://www.google.com"); | 1170 GURL url("http://www.google.com"); |
1153 | 1171 |
1154 base::WeakPtr<SpdyStream> spdy_stream1 = | 1172 base::WeakPtr<SpdyStream> spdy_stream1 = |
1155 CreateStreamSynchronously(session, url, LOWEST, BoundNetLog()); | 1173 CreateStreamSynchronously( |
| 1174 SPDY_BIDIRECTIONAL_STREAM, session, url, LOWEST, BoundNetLog()); |
1156 ASSERT_TRUE(spdy_stream1.get() != NULL); | 1175 ASSERT_TRUE(spdy_stream1.get() != NULL); |
1157 EXPECT_EQ(0u, spdy_stream1->stream_id()); | 1176 EXPECT_EQ(0u, spdy_stream1->stream_id()); |
1158 test::StreamDelegateDoNothing delegate1(spdy_stream1); | 1177 test::StreamDelegateDoNothing delegate1(spdy_stream1); |
1159 spdy_stream1->SetDelegate(&delegate1); | 1178 spdy_stream1->SetDelegate(&delegate1); |
1160 | 1179 |
1161 base::WeakPtr<SpdyStream> spdy_stream2 = | 1180 base::WeakPtr<SpdyStream> spdy_stream2 = |
1162 CreateStreamSynchronously(session, url, HIGHEST, BoundNetLog()); | 1181 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, |
| 1182 session, url, HIGHEST, BoundNetLog()); |
1163 ASSERT_TRUE(spdy_stream2.get() != NULL); | 1183 ASSERT_TRUE(spdy_stream2.get() != NULL); |
1164 EXPECT_EQ(0u, spdy_stream2->stream_id()); | 1184 EXPECT_EQ(0u, spdy_stream2->stream_id()); |
1165 test::StreamDelegateDoNothing delegate2(spdy_stream2); | 1185 test::StreamDelegateDoNothing delegate2(spdy_stream2); |
1166 spdy_stream2->SetDelegate(&delegate2); | 1186 spdy_stream2->SetDelegate(&delegate2); |
1167 | 1187 |
1168 scoped_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock); | 1188 scoped_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock); |
1169 (*headers)["method"] = "GET"; | 1189 (*headers)["method"] = "GET"; |
1170 (*headers)["scheme"] = url.scheme(); | 1190 (*headers)["scheme"] = url.scheme(); |
1171 (*headers)["host"] = url.host(); | 1191 (*headers)["host"] = url.host(); |
1172 (*headers)["url"] = url.path(); | 1192 (*headers)["url"] = url.path(); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1214 | 1234 |
1215 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); | 1235 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); |
1216 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl); | 1236 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl); |
1217 | 1237 |
1218 CreateDeterministicNetworkSession(); | 1238 CreateDeterministicNetworkSession(); |
1219 | 1239 |
1220 scoped_refptr<SpdySession> session = CreateInitializedSession(); | 1240 scoped_refptr<SpdySession> session = CreateInitializedSession(); |
1221 | 1241 |
1222 GURL url1("http://www.google.com"); | 1242 GURL url1("http://www.google.com"); |
1223 base::WeakPtr<SpdyStream> spdy_stream1 = | 1243 base::WeakPtr<SpdyStream> spdy_stream1 = |
1224 CreateStreamSynchronously(session, url1, HIGHEST, BoundNetLog()); | 1244 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, |
| 1245 session, url1, HIGHEST, BoundNetLog()); |
1225 ASSERT_TRUE(spdy_stream1.get() != NULL); | 1246 ASSERT_TRUE(spdy_stream1.get() != NULL); |
1226 EXPECT_EQ(0u, spdy_stream1->stream_id()); | 1247 EXPECT_EQ(0u, spdy_stream1->stream_id()); |
1227 test::StreamDelegateDoNothing delegate1(spdy_stream1); | 1248 test::StreamDelegateDoNothing delegate1(spdy_stream1); |
1228 spdy_stream1->SetDelegate(&delegate1); | 1249 spdy_stream1->SetDelegate(&delegate1); |
1229 | 1250 |
1230 GURL url2("http://www.google.com"); | 1251 GURL url2("http://www.google.com"); |
1231 base::WeakPtr<SpdyStream> spdy_stream2 = | 1252 base::WeakPtr<SpdyStream> spdy_stream2 = |
1232 CreateStreamSynchronously(session, url2, LOWEST, BoundNetLog()); | 1253 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, |
| 1254 session, url2, LOWEST, BoundNetLog()); |
1233 ASSERT_TRUE(spdy_stream2.get() != NULL); | 1255 ASSERT_TRUE(spdy_stream2.get() != NULL); |
1234 EXPECT_EQ(0u, spdy_stream2->stream_id()); | 1256 EXPECT_EQ(0u, spdy_stream2->stream_id()); |
1235 test::StreamDelegateDoNothing delegate2(spdy_stream2); | 1257 test::StreamDelegateDoNothing delegate2(spdy_stream2); |
1236 spdy_stream2->SetDelegate(&delegate2); | 1258 spdy_stream2->SetDelegate(&delegate2); |
1237 | 1259 |
1238 scoped_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock); | 1260 scoped_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock); |
1239 (*headers)["method"] = "GET"; | 1261 (*headers)["method"] = "GET"; |
1240 (*headers)["scheme"] = url1.scheme(); | 1262 (*headers)["scheme"] = url1.scheme(); |
1241 (*headers)["host"] = url1.host(); | 1263 (*headers)["host"] = url1.host(); |
1242 (*headers)["url"] = url1.path(); | 1264 (*headers)["url"] = url1.path(); |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1287 | 1309 |
1288 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); | 1310 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); |
1289 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl); | 1311 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl); |
1290 | 1312 |
1291 CreateDeterministicNetworkSession(); | 1313 CreateDeterministicNetworkSession(); |
1292 | 1314 |
1293 scoped_refptr<SpdySession> session = CreateInitializedSession(); | 1315 scoped_refptr<SpdySession> session = CreateInitializedSession(); |
1294 | 1316 |
1295 GURL url1("http://www.google.com"); | 1317 GURL url1("http://www.google.com"); |
1296 base::WeakPtr<SpdyStream> spdy_stream1 = | 1318 base::WeakPtr<SpdyStream> spdy_stream1 = |
1297 CreateStreamSynchronously(session, url1, HIGHEST, BoundNetLog()); | 1319 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, |
| 1320 session, url1, HIGHEST, BoundNetLog()); |
1298 ASSERT_TRUE(spdy_stream1.get() != NULL); | 1321 ASSERT_TRUE(spdy_stream1.get() != NULL); |
1299 EXPECT_EQ(0u, spdy_stream1->stream_id()); | 1322 EXPECT_EQ(0u, spdy_stream1->stream_id()); |
1300 | 1323 |
1301 GURL url2("http://www.google.com"); | 1324 GURL url2("http://www.google.com"); |
1302 base::WeakPtr<SpdyStream> spdy_stream2 = | 1325 base::WeakPtr<SpdyStream> spdy_stream2 = |
1303 CreateStreamSynchronously(session, url2, LOWEST, BoundNetLog()); | 1326 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, |
| 1327 session, url2, LOWEST, BoundNetLog()); |
1304 ASSERT_TRUE(spdy_stream2.get() != NULL); | 1328 ASSERT_TRUE(spdy_stream2.get() != NULL); |
1305 EXPECT_EQ(0u, spdy_stream2->stream_id()); | 1329 EXPECT_EQ(0u, spdy_stream2->stream_id()); |
1306 | 1330 |
1307 scoped_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock); | 1331 scoped_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock); |
1308 (*headers)["method"] = "GET"; | 1332 (*headers)["method"] = "GET"; |
1309 (*headers)["scheme"] = url1.scheme(); | 1333 (*headers)["scheme"] = url1.scheme(); |
1310 (*headers)["host"] = url1.host(); | 1334 (*headers)["host"] = url1.host(); |
1311 (*headers)["url"] = url1.path(); | 1335 (*headers)["url"] = url1.path(); |
1312 (*headers)["version"] = "HTTP/1.1"; | 1336 (*headers)["version"] = "HTTP/1.1"; |
1313 scoped_ptr<SpdyHeaderBlock> headers2(new SpdyHeaderBlock); | 1337 scoped_ptr<SpdyHeaderBlock> headers2(new SpdyHeaderBlock); |
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1533 | 1557 |
1534 CreateDeterministicNetworkSession(); | 1558 CreateDeterministicNetworkSession(); |
1535 | 1559 |
1536 scoped_refptr<SpdySession> session = CreateInitializedSession(); | 1560 scoped_refptr<SpdySession> session = CreateInitializedSession(); |
1537 | 1561 |
1538 // Read the settings frame. | 1562 // Read the settings frame. |
1539 data.RunFor(1); | 1563 data.RunFor(1); |
1540 | 1564 |
1541 GURL url1("http://www.google.com"); | 1565 GURL url1("http://www.google.com"); |
1542 base::WeakPtr<SpdyStream> spdy_stream1 = | 1566 base::WeakPtr<SpdyStream> spdy_stream1 = |
1543 CreateStreamSynchronously(session, url1, LOWEST, BoundNetLog()); | 1567 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, |
| 1568 session, url1, LOWEST, BoundNetLog()); |
1544 ASSERT_TRUE(spdy_stream1.get() != NULL); | 1569 ASSERT_TRUE(spdy_stream1.get() != NULL); |
1545 EXPECT_EQ(0u, spdy_stream1->stream_id()); | 1570 EXPECT_EQ(0u, spdy_stream1->stream_id()); |
1546 test::StreamDelegateDoNothing delegate1(spdy_stream1); | 1571 test::StreamDelegateDoNothing delegate1(spdy_stream1); |
1547 spdy_stream1->SetDelegate(&delegate1); | 1572 spdy_stream1->SetDelegate(&delegate1); |
1548 | 1573 |
1549 TestCompletionCallback callback2; | 1574 TestCompletionCallback callback2; |
1550 GURL url2("http://www.google.com"); | 1575 GURL url2("http://www.google.com"); |
1551 SpdyStreamRequest request2; | 1576 SpdyStreamRequest request2; |
1552 ASSERT_EQ(ERR_IO_PENDING, | 1577 ASSERT_EQ(ERR_IO_PENDING, |
1553 request2.StartRequest(session, url2, LOWEST, | 1578 request2.StartRequest(SPDY_REQUEST_RESPONSE_STREAM, |
1554 BoundNetLog(), | 1579 session, url2, LOWEST, BoundNetLog(), |
1555 callback2.callback())); | 1580 callback2.callback())); |
1556 | 1581 |
1557 TestCompletionCallback callback3; | 1582 TestCompletionCallback callback3; |
1558 GURL url3("http://www.google.com"); | 1583 GURL url3("http://www.google.com"); |
1559 SpdyStreamRequest request3; | 1584 SpdyStreamRequest request3; |
1560 ASSERT_EQ(ERR_IO_PENDING, | 1585 ASSERT_EQ(ERR_IO_PENDING, |
1561 request3.StartRequest(session, url3, LOWEST, | 1586 request3.StartRequest(SPDY_REQUEST_RESPONSE_STREAM, |
1562 BoundNetLog(), | 1587 session, url3, LOWEST, BoundNetLog(), |
1563 callback3.callback())); | 1588 callback3.callback())); |
1564 | 1589 |
1565 EXPECT_EQ(1u, session->num_active_streams() + session->num_created_streams()); | 1590 EXPECT_EQ(1u, session->num_active_streams() + session->num_created_streams()); |
1566 EXPECT_EQ(2u, session->pending_create_stream_queues(LOWEST)); | 1591 EXPECT_EQ(2u, session->pending_create_stream_queues(LOWEST)); |
1567 | 1592 |
1568 scoped_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock); | 1593 scoped_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock); |
1569 (*headers)["method"] = "GET"; | 1594 (*headers)["method"] = "GET"; |
1570 (*headers)["scheme"] = url1.scheme(); | 1595 (*headers)["scheme"] = url1.scheme(); |
1571 (*headers)["host"] = url1.host(); | 1596 (*headers)["host"] = url1.host(); |
1572 (*headers)["url"] = url1.path(); | 1597 (*headers)["url"] = url1.path(); |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1640 spdy_session_pool_->http_server_properties()->SetSpdySetting( | 1665 spdy_session_pool_->http_server_properties()->SetSpdySetting( |
1641 test_host_port_pair_, | 1666 test_host_port_pair_, |
1642 SETTINGS_MAX_CONCURRENT_STREAMS, | 1667 SETTINGS_MAX_CONCURRENT_STREAMS, |
1643 SETTINGS_FLAG_PLEASE_PERSIST, | 1668 SETTINGS_FLAG_PLEASE_PERSIST, |
1644 1); | 1669 1); |
1645 | 1670 |
1646 scoped_refptr<SpdySession> session = CreateInitializedSession(); | 1671 scoped_refptr<SpdySession> session = CreateInitializedSession(); |
1647 | 1672 |
1648 GURL url1("http://www.google.com"); | 1673 GURL url1("http://www.google.com"); |
1649 base::WeakPtr<SpdyStream> spdy_stream1 = | 1674 base::WeakPtr<SpdyStream> spdy_stream1 = |
1650 CreateStreamSynchronously(session, url1, LOWEST, BoundNetLog()); | 1675 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, |
| 1676 session, url1, LOWEST, BoundNetLog()); |
1651 ASSERT_TRUE(spdy_stream1.get() != NULL); | 1677 ASSERT_TRUE(spdy_stream1.get() != NULL); |
1652 EXPECT_EQ(0u, spdy_stream1->stream_id()); | 1678 EXPECT_EQ(0u, spdy_stream1->stream_id()); |
1653 | 1679 |
1654 TestCompletionCallback callback2; | 1680 TestCompletionCallback callback2; |
1655 GURL url2("http://www.google.com"); | 1681 GURL url2("http://www.google.com"); |
1656 SpdyStreamRequest request2; | 1682 SpdyStreamRequest request2; |
1657 ASSERT_EQ(ERR_IO_PENDING, | 1683 ASSERT_EQ(ERR_IO_PENDING, |
1658 request2.StartRequest(session, url2, LOWEST, | 1684 request2.StartRequest(SPDY_BIDIRECTIONAL_STREAM, |
| 1685 session, url2, LOWEST, |
1659 BoundNetLog(), | 1686 BoundNetLog(), |
1660 callback2.callback())); | 1687 callback2.callback())); |
1661 | 1688 |
1662 TestCompletionCallback callback3; | 1689 TestCompletionCallback callback3; |
1663 GURL url3("http://www.google.com"); | 1690 GURL url3("http://www.google.com"); |
1664 SpdyStreamRequest request3; | 1691 SpdyStreamRequest request3; |
1665 ASSERT_EQ(ERR_IO_PENDING, | 1692 ASSERT_EQ(ERR_IO_PENDING, |
1666 request3.StartRequest(session, url3, LOWEST, | 1693 request3.StartRequest(SPDY_BIDIRECTIONAL_STREAM, |
| 1694 session, url3, LOWEST, |
1667 BoundNetLog(), | 1695 BoundNetLog(), |
1668 callback3.callback())); | 1696 callback3.callback())); |
1669 | 1697 |
1670 EXPECT_EQ(1u, session->num_active_streams() + session->num_created_streams()); | 1698 EXPECT_EQ(1u, session->num_active_streams() + session->num_created_streams()); |
1671 EXPECT_EQ(2u, session->pending_create_stream_queues(LOWEST)); | 1699 EXPECT_EQ(2u, session->pending_create_stream_queues(LOWEST)); |
1672 | 1700 |
1673 // Cancel the first stream, this will allow the second stream to be created. | 1701 // Cancel the first stream, this will allow the second stream to be created. |
1674 EXPECT_TRUE(spdy_stream1.get() != NULL); | 1702 EXPECT_TRUE(spdy_stream1.get() != NULL); |
1675 spdy_stream1->Cancel(); | 1703 spdy_stream1->Cancel(); |
1676 EXPECT_EQ(NULL, spdy_stream1.get()); | 1704 EXPECT_EQ(NULL, spdy_stream1.get()); |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1803 | 1831 |
1804 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); | 1832 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); |
1805 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl); | 1833 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl); |
1806 | 1834 |
1807 CreateDeterministicNetworkSession(); | 1835 CreateDeterministicNetworkSession(); |
1808 | 1836 |
1809 scoped_refptr<SpdySession> session = CreateInitializedSession(); | 1837 scoped_refptr<SpdySession> session = CreateInitializedSession(); |
1810 | 1838 |
1811 GURL url1("http://www.google.com"); | 1839 GURL url1("http://www.google.com"); |
1812 base::WeakPtr<SpdyStream> spdy_stream1 = | 1840 base::WeakPtr<SpdyStream> spdy_stream1 = |
1813 CreateStreamSynchronously(session, url1, MEDIUM, BoundNetLog()); | 1841 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, |
| 1842 session, url1, MEDIUM, BoundNetLog()); |
1814 ASSERT_TRUE(spdy_stream1.get() != NULL); | 1843 ASSERT_TRUE(spdy_stream1.get() != NULL); |
1815 EXPECT_EQ(0u, spdy_stream1->stream_id()); | 1844 EXPECT_EQ(0u, spdy_stream1->stream_id()); |
1816 test::StreamDelegateDoNothing delegate1(spdy_stream1); | 1845 test::StreamDelegateDoNothing delegate1(spdy_stream1); |
1817 spdy_stream1->SetDelegate(&delegate1); | 1846 spdy_stream1->SetDelegate(&delegate1); |
1818 | 1847 |
1819 scoped_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock); | 1848 scoped_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock); |
1820 (*headers)["method"] = "GET"; | 1849 (*headers)["method"] = "GET"; |
1821 (*headers)["scheme"] = url1.scheme(); | 1850 (*headers)["scheme"] = url1.scheme(); |
1822 (*headers)["host"] = url1.host(); | 1851 (*headers)["host"] = url1.host(); |
1823 (*headers)["url"] = url1.path(); | 1852 (*headers)["url"] = url1.path(); |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1896 | 1925 |
1897 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); | 1926 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); |
1898 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl); | 1927 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl); |
1899 | 1928 |
1900 CreateDeterministicNetworkSession(); | 1929 CreateDeterministicNetworkSession(); |
1901 | 1930 |
1902 scoped_refptr<SpdySession> session = CreateInitializedSession(); | 1931 scoped_refptr<SpdySession> session = CreateInitializedSession(); |
1903 | 1932 |
1904 GURL url1("http://www.google.com"); | 1933 GURL url1("http://www.google.com"); |
1905 base::WeakPtr<SpdyStream> spdy_stream1 = | 1934 base::WeakPtr<SpdyStream> spdy_stream1 = |
1906 CreateStreamSynchronously(session, url1, MEDIUM, BoundNetLog()); | 1935 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, |
| 1936 session, url1, MEDIUM, BoundNetLog()); |
1907 ASSERT_TRUE(spdy_stream1.get() != NULL); | 1937 ASSERT_TRUE(spdy_stream1.get() != NULL); |
1908 EXPECT_EQ(0u, spdy_stream1->stream_id()); | 1938 EXPECT_EQ(0u, spdy_stream1->stream_id()); |
1909 test::StreamDelegateDoNothing delegate1(spdy_stream1); | 1939 test::StreamDelegateDoNothing delegate1(spdy_stream1); |
1910 spdy_stream1->SetDelegate(&delegate1); | 1940 spdy_stream1->SetDelegate(&delegate1); |
1911 | 1941 |
1912 scoped_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock); | 1942 scoped_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock); |
1913 (*headers)["method"] = "GET"; | 1943 (*headers)["method"] = "GET"; |
1914 (*headers)["scheme"] = url1.scheme(); | 1944 (*headers)["scheme"] = url1.scheme(); |
1915 (*headers)["host"] = url1.host(); | 1945 (*headers)["host"] = url1.host(); |
1916 (*headers)["url"] = url1.path(); | 1946 (*headers)["url"] = url1.path(); |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2012 | 2042 |
2013 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); | 2043 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); |
2014 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl); | 2044 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl); |
2015 | 2045 |
2016 CreateDeterministicNetworkSession(); | 2046 CreateDeterministicNetworkSession(); |
2017 | 2047 |
2018 scoped_refptr<SpdySession> session = CreateInitializedSession(); | 2048 scoped_refptr<SpdySession> session = CreateInitializedSession(); |
2019 | 2049 |
2020 GURL url1("http://www.google.com"); | 2050 GURL url1("http://www.google.com"); |
2021 base::WeakPtr<SpdyStream> spdy_stream1 = | 2051 base::WeakPtr<SpdyStream> spdy_stream1 = |
2022 CreateStreamSynchronously(session, url1, MEDIUM, BoundNetLog()); | 2052 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, |
| 2053 session, url1, MEDIUM, BoundNetLog()); |
2023 ASSERT_TRUE(spdy_stream1.get() != NULL); | 2054 ASSERT_TRUE(spdy_stream1.get() != NULL); |
2024 EXPECT_EQ(0u, spdy_stream1->stream_id()); | 2055 EXPECT_EQ(0u, spdy_stream1->stream_id()); |
2025 test::StreamDelegateDoNothing delegate1(spdy_stream1); | 2056 test::StreamDelegateDoNothing delegate1(spdy_stream1); |
2026 spdy_stream1->SetDelegate(&delegate1); | 2057 spdy_stream1->SetDelegate(&delegate1); |
2027 | 2058 |
2028 scoped_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock); | 2059 scoped_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock); |
2029 (*headers)["method"] = "GET"; | 2060 (*headers)["method"] = "GET"; |
2030 (*headers)["scheme"] = url1.scheme(); | 2061 (*headers)["scheme"] = url1.scheme(); |
2031 (*headers)["host"] = url1.host(); | 2062 (*headers)["host"] = url1.host(); |
2032 (*headers)["url"] = url1.path(); | 2063 (*headers)["url"] = url1.path(); |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2090 | 2121 |
2091 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); | 2122 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); |
2092 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl); | 2123 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl); |
2093 | 2124 |
2094 CreateDeterministicNetworkSession(); | 2125 CreateDeterministicNetworkSession(); |
2095 | 2126 |
2096 scoped_refptr<SpdySession> session = CreateInitializedSession(); | 2127 scoped_refptr<SpdySession> session = CreateInitializedSession(); |
2097 | 2128 |
2098 GURL url1("http://www.google.com"); | 2129 GURL url1("http://www.google.com"); |
2099 base::WeakPtr<SpdyStream> spdy_stream1 = | 2130 base::WeakPtr<SpdyStream> spdy_stream1 = |
2100 CreateStreamSynchronously(session, url1, MEDIUM, BoundNetLog()); | 2131 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, |
| 2132 session, url1, MEDIUM, BoundNetLog()); |
2101 session = NULL; | 2133 session = NULL; |
2102 ASSERT_TRUE(spdy_stream1.get() != NULL); | 2134 ASSERT_TRUE(spdy_stream1.get() != NULL); |
2103 EXPECT_EQ(0u, spdy_stream1->stream_id()); | 2135 EXPECT_EQ(0u, spdy_stream1->stream_id()); |
2104 | 2136 |
2105 scoped_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock); | 2137 scoped_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock); |
2106 (*headers)["method"] = "GET"; | 2138 (*headers)["method"] = "GET"; |
2107 (*headers)["scheme"] = url1.scheme(); | 2139 (*headers)["scheme"] = url1.scheme(); |
2108 (*headers)["host"] = url1.host(); | 2140 (*headers)["host"] = url1.host(); |
2109 (*headers)["url"] = url1.path(); | 2141 (*headers)["url"] = url1.path(); |
2110 (*headers)["version"] = "HTTP/1.1"; | 2142 (*headers)["version"] = "HTTP/1.1"; |
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2312 EXPECT_EQ( | 2344 EXPECT_EQ( |
2313 OK, | 2345 OK, |
2314 InitializeSession(http_session_.get(), session1.get(), | 2346 InitializeSession(http_session_.get(), session1.get(), |
2315 key1.host_port_pair())); | 2347 key1.host_port_pair())); |
2316 EXPECT_FALSE(pool->IsStalled()); | 2348 EXPECT_FALSE(pool->IsStalled()); |
2317 | 2349 |
2318 // Create a stream using the session, and send a request. | 2350 // Create a stream using the session, and send a request. |
2319 | 2351 |
2320 TestCompletionCallback callback1; | 2352 TestCompletionCallback callback1; |
2321 base::WeakPtr<SpdyStream> spdy_stream1 = | 2353 base::WeakPtr<SpdyStream> spdy_stream1 = |
2322 CreateStreamSynchronously(session1, url1, DEFAULT_PRIORITY, | 2354 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, |
| 2355 session1, url1, DEFAULT_PRIORITY, |
2323 BoundNetLog()); | 2356 BoundNetLog()); |
2324 ASSERT_TRUE(spdy_stream1.get()); | 2357 ASSERT_TRUE(spdy_stream1.get()); |
2325 | 2358 |
2326 scoped_ptr<SpdyHeaderBlock> headers( | 2359 scoped_ptr<SpdyHeaderBlock> headers( |
2327 spdy_util_.ConstructGetHeaderBlock(url1.spec())); | 2360 spdy_util_.ConstructGetHeaderBlock(url1.spec())); |
2328 spdy_stream1->SendRequestHeaders(headers.Pass(), NO_MORE_DATA_TO_SEND); | 2361 spdy_stream1->SendRequestHeaders(headers.Pass(), NO_MORE_DATA_TO_SEND); |
2329 EXPECT_TRUE(spdy_stream1->HasUrl()); | 2362 EXPECT_TRUE(spdy_stream1->HasUrl()); |
2330 base::MessageLoop::current()->RunUntilIdle(); | 2363 base::MessageLoop::current()->RunUntilIdle(); |
2331 | 2364 |
2332 // Release the session, so holding onto a pointer here does not affect | 2365 // Release the session, so holding onto a pointer here does not affect |
(...skipping 23 matching lines...) Expand all Loading... |
2356 // Cancelling the request should still not release the session's socket, | 2389 // Cancelling the request should still not release the session's socket, |
2357 // since the session is still kept alive by the SpdySessionPool. | 2390 // since the session is still kept alive by the SpdySessionPool. |
2358 ASSERT_TRUE(spdy_stream1.get()); | 2391 ASSERT_TRUE(spdy_stream1.get()); |
2359 spdy_stream1->Cancel(); | 2392 spdy_stream1->Cancel(); |
2360 base::RunLoop().RunUntilIdle(); | 2393 base::RunLoop().RunUntilIdle(); |
2361 EXPECT_TRUE(pool->IsStalled()); | 2394 EXPECT_TRUE(pool->IsStalled()); |
2362 EXPECT_FALSE(callback2.have_result()); | 2395 EXPECT_FALSE(callback2.have_result()); |
2363 } | 2396 } |
2364 | 2397 |
2365 } // namespace net | 2398 } // namespace net |
OLD | NEW |