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

Side by Side Diff: net/spdy/spdy_session_unittest.cc

Issue 129873010: Deprecate instead of close SPDY sessions upon network change. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: sync (r249187) Created 6 years, 10 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « net/spdy/spdy_session_pool.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/bind.h" 7 #include "base/bind.h"
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/run_loop.h" 10 #include "base/run_loop.h"
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 TEST_P(SpdySessionTest, PendingStreamCancellingAnother) { 231 TEST_P(SpdySessionTest, PendingStreamCancellingAnother) {
232 session_deps_.host_resolver->set_synchronous_mode(true); 232 session_deps_.host_resolver->set_synchronous_mode(true);
233 233
234 MockRead reads[] = {MockRead(ASYNC, 0, 0), }; 234 MockRead reads[] = {MockRead(ASYNC, 0, 0), };
235 235
236 DeterministicSocketData data(reads, arraysize(reads), NULL, 0); 236 DeterministicSocketData data(reads, arraysize(reads), NULL, 0);
237 MockConnect connect_data(SYNCHRONOUS, OK); 237 MockConnect connect_data(SYNCHRONOUS, OK);
238 data.set_connect_data(connect_data); 238 data.set_connect_data(connect_data);
239 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 239 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
240 240
241 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
242 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
243
244 CreateDeterministicNetworkSession(); 241 CreateDeterministicNetworkSession();
245 242
246 base::WeakPtr<SpdySession> session = 243 base::WeakPtr<SpdySession> session =
247 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 244 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
248 245
249 // Create the maximum number of concurrent streams. 246 // Create the maximum number of concurrent streams.
250 for (size_t i = 0; i < kInitialMaxConcurrentStreams; ++i) { 247 for (size_t i = 0; i < kInitialMaxConcurrentStreams; ++i) {
251 base::WeakPtr<SpdyStream> spdy_stream = CreateStreamSynchronously( 248 base::WeakPtr<SpdyStream> spdy_stream = CreateStreamSynchronously(
252 SPDY_BIDIRECTIONAL_STREAM, session, test_url_, MEDIUM, BoundNetLog()); 249 SPDY_BIDIRECTIONAL_STREAM, session, test_url_, MEDIUM, BoundNetLog());
253 ASSERT_TRUE(spdy_stream != NULL); 250 ASSERT_TRUE(spdy_stream != NULL);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 288
292 MockConnect connect_data(SYNCHRONOUS, OK); 289 MockConnect connect_data(SYNCHRONOUS, OK);
293 scoped_ptr<SpdyFrame> goaway(spdy_util_.ConstructSpdyGoAway(1)); 290 scoped_ptr<SpdyFrame> goaway(spdy_util_.ConstructSpdyGoAway(1));
294 MockRead reads[] = { 291 MockRead reads[] = {
295 CreateMockRead(*goaway, 0), 292 CreateMockRead(*goaway, 0),
296 }; 293 };
297 DeterministicSocketData data(reads, arraysize(reads), NULL, 0); 294 DeterministicSocketData data(reads, arraysize(reads), NULL, 0);
298 data.set_connect_data(connect_data); 295 data.set_connect_data(connect_data);
299 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 296 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
300 297
301 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
302 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
303
304 CreateDeterministicNetworkSession(); 298 CreateDeterministicNetworkSession();
305 299
306 base::WeakPtr<SpdySession> session = 300 base::WeakPtr<SpdySession> session =
307 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 301 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
308 302
309 EXPECT_EQ(spdy_util_.spdy_version(), session->GetProtocolVersion()); 303 EXPECT_EQ(spdy_util_.spdy_version(), session->GetProtocolVersion());
310 304
311 EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key_)); 305 EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key_));
312 306
313 // Read and process the GOAWAY frame. 307 // Read and process the GOAWAY frame.
(...skipping 11 matching lines...) Expand all
325 319
326 MockConnect connect_data(SYNCHRONOUS, OK); 320 MockConnect connect_data(SYNCHRONOUS, OK);
327 scoped_ptr<SpdyFrame> goaway(spdy_util_.ConstructSpdyGoAway(1)); 321 scoped_ptr<SpdyFrame> goaway(spdy_util_.ConstructSpdyGoAway(1));
328 MockRead reads[] = { 322 MockRead reads[] = {
329 CreateMockRead(*goaway, 0, SYNCHRONOUS), 323 CreateMockRead(*goaway, 0, SYNCHRONOUS),
330 }; 324 };
331 DeterministicSocketData data(reads, arraysize(reads), NULL, 0); 325 DeterministicSocketData data(reads, arraysize(reads), NULL, 0);
332 data.set_connect_data(connect_data); 326 data.set_connect_data(connect_data);
333 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 327 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
334 328
335 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
336 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
337
338 CreateDeterministicNetworkSession(); 329 CreateDeterministicNetworkSession();
339 330
340 data.StopAfter(1); 331 data.StopAfter(1);
341 332
342 TryCreateInsecureSpdySessionExpectingFailure( 333 TryCreateInsecureSpdySessionExpectingFailure(
343 http_session_, key_, ERR_CONNECTION_CLOSED, BoundNetLog()); 334 http_session_, key_, ERR_CONNECTION_CLOSED, BoundNetLog());
344 335
345 EXPECT_FALSE(HasSpdySession(spdy_session_pool_, key_)); 336 EXPECT_FALSE(HasSpdySession(spdy_session_pool_, key_));
346 } 337 }
347 338
(...skipping 14 matching lines...) Expand all
362 spdy_util_.ConstructSpdyGet(NULL, 0, false, 3, MEDIUM, true)); 353 spdy_util_.ConstructSpdyGet(NULL, 0, false, 3, MEDIUM, true));
363 MockWrite writes[] = { 354 MockWrite writes[] = {
364 CreateMockWrite(*req1, 0), 355 CreateMockWrite(*req1, 0),
365 CreateMockWrite(*req2, 1), 356 CreateMockWrite(*req2, 1),
366 }; 357 };
367 DeterministicSocketData data(reads, arraysize(reads), 358 DeterministicSocketData data(reads, arraysize(reads),
368 writes, arraysize(writes)); 359 writes, arraysize(writes));
369 data.set_connect_data(connect_data); 360 data.set_connect_data(connect_data);
370 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 361 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
371 362
372 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
373 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
374
375 CreateDeterministicNetworkSession(); 363 CreateDeterministicNetworkSession();
376 364
377 base::WeakPtr<SpdySession> session = 365 base::WeakPtr<SpdySession> session =
378 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 366 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
379 367
380 EXPECT_EQ(spdy_util_.spdy_version(), session->GetProtocolVersion()); 368 EXPECT_EQ(spdy_util_.spdy_version(), session->GetProtocolVersion());
381 369
382 GURL url("http://www.google.com"); 370 GURL url(kDefaultURL);
383 base::WeakPtr<SpdyStream> spdy_stream1 = 371 base::WeakPtr<SpdyStream> spdy_stream1 =
384 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 372 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
385 session, url, MEDIUM, BoundNetLog()); 373 session, url, MEDIUM, BoundNetLog());
386 test::StreamDelegateDoNothing delegate1(spdy_stream1); 374 test::StreamDelegateDoNothing delegate1(spdy_stream1);
387 spdy_stream1->SetDelegate(&delegate1); 375 spdy_stream1->SetDelegate(&delegate1);
388 376
389 base::WeakPtr<SpdyStream> spdy_stream2 = 377 base::WeakPtr<SpdyStream> spdy_stream2 =
390 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 378 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
391 session, url, MEDIUM, BoundNetLog()); 379 session, url, MEDIUM, BoundNetLog());
392 test::StreamDelegateDoNothing delegate2(spdy_stream2); 380 test::StreamDelegateDoNothing delegate2(spdy_stream2);
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
446 spdy_util_.ConstructSpdyGet(NULL, 0, false, 3, MEDIUM, true)); 434 spdy_util_.ConstructSpdyGet(NULL, 0, false, 3, MEDIUM, true));
447 MockWrite writes[] = { 435 MockWrite writes[] = {
448 CreateMockWrite(*req1, 0), 436 CreateMockWrite(*req1, 0),
449 CreateMockWrite(*req2, 1), 437 CreateMockWrite(*req2, 1),
450 }; 438 };
451 DeterministicSocketData data(reads, arraysize(reads), 439 DeterministicSocketData data(reads, arraysize(reads),
452 writes, arraysize(writes)); 440 writes, arraysize(writes));
453 data.set_connect_data(connect_data); 441 data.set_connect_data(connect_data);
454 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 442 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
455 443
456 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
457 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
458
459 CreateDeterministicNetworkSession(); 444 CreateDeterministicNetworkSession();
460 445
461 base::WeakPtr<SpdySession> session = 446 base::WeakPtr<SpdySession> session =
462 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 447 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
463 448
464 EXPECT_EQ(spdy_util_.spdy_version(), session->GetProtocolVersion()); 449 EXPECT_EQ(spdy_util_.spdy_version(), session->GetProtocolVersion());
465 450
466 GURL url("http://www.google.com"); 451 GURL url(kDefaultURL);
467 base::WeakPtr<SpdyStream> spdy_stream1 = 452 base::WeakPtr<SpdyStream> spdy_stream1 =
468 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 453 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
469 session, url, MEDIUM, BoundNetLog()); 454 session, url, MEDIUM, BoundNetLog());
470 test::StreamDelegateDoNothing delegate1(spdy_stream1); 455 test::StreamDelegateDoNothing delegate1(spdy_stream1);
471 spdy_stream1->SetDelegate(&delegate1); 456 spdy_stream1->SetDelegate(&delegate1);
472 457
473 base::WeakPtr<SpdyStream> spdy_stream2 = 458 base::WeakPtr<SpdyStream> spdy_stream2 =
474 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 459 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
475 session, url, MEDIUM, BoundNetLog()); 460 session, url, MEDIUM, BoundNetLog());
476 test::StreamDelegateDoNothing delegate2(spdy_stream2); 461 test::StreamDelegateDoNothing delegate2(spdy_stream2);
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
528 spdy_util_.ConstructSpdyGet(NULL, 0, false, 3, MEDIUM, true)); 513 spdy_util_.ConstructSpdyGet(NULL, 0, false, 3, MEDIUM, true));
529 MockWrite writes[] = { 514 MockWrite writes[] = {
530 CreateMockWrite(*req1, 0), 515 CreateMockWrite(*req1, 0),
531 CreateMockWrite(*req2, 1), 516 CreateMockWrite(*req2, 1),
532 }; 517 };
533 DeterministicSocketData data(reads, arraysize(reads), 518 DeterministicSocketData data(reads, arraysize(reads),
534 writes, arraysize(writes)); 519 writes, arraysize(writes));
535 data.set_connect_data(connect_data); 520 data.set_connect_data(connect_data);
536 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 521 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
537 522
538 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
539 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
540
541 CreateDeterministicNetworkSession(); 523 CreateDeterministicNetworkSession();
542 524
543 base::WeakPtr<SpdySession> session = 525 base::WeakPtr<SpdySession> session =
544 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 526 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
545 527
546 EXPECT_EQ(spdy_util_.spdy_version(), session->GetProtocolVersion()); 528 EXPECT_EQ(spdy_util_.spdy_version(), session->GetProtocolVersion());
547 529
548 GURL url("http://www.google.com"); 530 GURL url(kDefaultURL);
549 base::WeakPtr<SpdyStream> spdy_stream1 = 531 base::WeakPtr<SpdyStream> spdy_stream1 =
550 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 532 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
551 session, url, MEDIUM, BoundNetLog()); 533 session, url, MEDIUM, BoundNetLog());
552 test::StreamDelegateDoNothing delegate1(spdy_stream1); 534 test::StreamDelegateDoNothing delegate1(spdy_stream1);
553 spdy_stream1->SetDelegate(&delegate1); 535 spdy_stream1->SetDelegate(&delegate1);
554 536
555 base::WeakPtr<SpdyStream> spdy_stream2 = 537 base::WeakPtr<SpdyStream> spdy_stream2 =
556 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 538 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
557 session, url, MEDIUM, BoundNetLog()); 539 session, url, MEDIUM, BoundNetLog());
558 test::StreamDelegateDoNothing delegate2(spdy_stream2); 540 test::StreamDelegateDoNothing delegate2(spdy_stream2);
(...skipping 28 matching lines...) Expand all
587 569
588 session->CloseSessionOnError(ERR_ABORTED, "Aborting session"); 570 session->CloseSessionOnError(ERR_ABORTED, "Aborting session");
589 571
590 EXPECT_EQ(NULL, spdy_stream1.get()); 572 EXPECT_EQ(NULL, spdy_stream1.get());
591 EXPECT_TRUE(session == NULL); 573 EXPECT_TRUE(session == NULL);
592 } 574 }
593 575
594 // Try to create a stream after receiving a GOAWAY frame. It should 576 // Try to create a stream after receiving a GOAWAY frame. It should
595 // fail. 577 // fail.
596 TEST_P(SpdySessionTest, CreateStreamAfterGoAway) { 578 TEST_P(SpdySessionTest, CreateStreamAfterGoAway) {
597 const char kStreamUrl[] = "http://www.google.com";
598 session_deps_.host_resolver->set_synchronous_mode(true); 579 session_deps_.host_resolver->set_synchronous_mode(true);
599 580
600 MockConnect connect_data(SYNCHRONOUS, OK); 581 MockConnect connect_data(SYNCHRONOUS, OK);
601 scoped_ptr<SpdyFrame> goaway(spdy_util_.ConstructSpdyGoAway(1)); 582 scoped_ptr<SpdyFrame> goaway(spdy_util_.ConstructSpdyGoAway(1));
602 MockRead reads[] = { 583 MockRead reads[] = {
603 CreateMockRead(*goaway, 1), 584 CreateMockRead(*goaway, 1),
604 MockRead(ASYNC, 0, 2) // EOF 585 MockRead(ASYNC, 0, 2) // EOF
605 }; 586 };
606 scoped_ptr<SpdyFrame> req( 587 scoped_ptr<SpdyFrame> req(
607 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, MEDIUM, true)); 588 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, MEDIUM, true));
608 MockWrite writes[] = { 589 MockWrite writes[] = {
609 CreateMockWrite(*req, 0), 590 CreateMockWrite(*req, 0),
610 }; 591 };
611 DeterministicSocketData data(reads, arraysize(reads), 592 DeterministicSocketData data(reads, arraysize(reads),
612 writes, arraysize(writes)); 593 writes, arraysize(writes));
613 data.set_connect_data(connect_data); 594 data.set_connect_data(connect_data);
614 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 595 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
615 596
616 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
617 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
618
619 CreateDeterministicNetworkSession(); 597 CreateDeterministicNetworkSession();
620 598
621 base::WeakPtr<SpdySession> session = 599 base::WeakPtr<SpdySession> session =
622 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 600 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
623 601
624 EXPECT_EQ(spdy_util_.spdy_version(), session->GetProtocolVersion()); 602 EXPECT_EQ(spdy_util_.spdy_version(), session->GetProtocolVersion());
625 603
626 GURL url(kStreamUrl); 604 GURL url(kDefaultURL);
627 base::WeakPtr<SpdyStream> spdy_stream = 605 base::WeakPtr<SpdyStream> spdy_stream =
628 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 606 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
629 session, url, MEDIUM, BoundNetLog()); 607 session, url, MEDIUM, BoundNetLog());
630 test::StreamDelegateDoNothing delegate(spdy_stream); 608 test::StreamDelegateDoNothing delegate(spdy_stream);
631 spdy_stream->SetDelegate(&delegate); 609 spdy_stream->SetDelegate(&delegate);
632 610
633 scoped_ptr<SpdyHeaderBlock> headers( 611 scoped_ptr<SpdyHeaderBlock> headers(
634 spdy_util_.ConstructGetHeaderBlock(url.spec())); 612 spdy_util_.ConstructGetHeaderBlock(url.spec()));
635 spdy_stream->SendRequestHeaders(headers.Pass(), NO_MORE_DATA_TO_SEND); 613 spdy_stream->SendRequestHeaders(headers.Pass(), NO_MORE_DATA_TO_SEND);
636 EXPECT_TRUE(spdy_stream->HasUrlFromHeaders()); 614 EXPECT_TRUE(spdy_stream->HasUrlFromHeaders());
(...skipping 18 matching lines...) Expand all
655 633
656 // Read and process EOF. 634 // Read and process EOF.
657 data.RunFor(1); 635 data.RunFor(1);
658 636
659 EXPECT_TRUE(session == NULL); 637 EXPECT_TRUE(session == NULL);
660 } 638 }
661 639
662 // Receiving a SYN_STREAM frame after a GOAWAY frame should result in 640 // Receiving a SYN_STREAM frame after a GOAWAY frame should result in
663 // the stream being refused. 641 // the stream being refused.
664 TEST_P(SpdySessionTest, SynStreamAfterGoAway) { 642 TEST_P(SpdySessionTest, SynStreamAfterGoAway) {
665 const char kStreamUrl[] = "http://www.google.com";
666 session_deps_.host_resolver->set_synchronous_mode(true); 643 session_deps_.host_resolver->set_synchronous_mode(true);
667 644
668 MockConnect connect_data(SYNCHRONOUS, OK); 645 MockConnect connect_data(SYNCHRONOUS, OK);
669 scoped_ptr<SpdyFrame> goaway(spdy_util_.ConstructSpdyGoAway(1)); 646 scoped_ptr<SpdyFrame> goaway(spdy_util_.ConstructSpdyGoAway(1));
670 scoped_ptr<SpdyFrame> 647 scoped_ptr<SpdyFrame>
671 push(spdy_util_.ConstructSpdyPush(NULL, 0, 2, 1, kStreamUrl)); 648 push(spdy_util_.ConstructSpdyPush(NULL, 0, 2, 1, kDefaultURL));
672 MockRead reads[] = { 649 MockRead reads[] = {
673 CreateMockRead(*goaway, 1), 650 CreateMockRead(*goaway, 1),
674 CreateMockRead(*push, 2), 651 CreateMockRead(*push, 2),
675 MockRead(ASYNC, 0, 4) // EOF 652 MockRead(ASYNC, 0, 4) // EOF
676 }; 653 };
677 scoped_ptr<SpdyFrame> req( 654 scoped_ptr<SpdyFrame> req(
678 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, MEDIUM, true)); 655 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, MEDIUM, true));
679 scoped_ptr<SpdyFrame> rst( 656 scoped_ptr<SpdyFrame> rst(
680 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_REFUSED_STREAM)); 657 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_REFUSED_STREAM));
681 MockWrite writes[] = { 658 MockWrite writes[] = {
682 CreateMockWrite(*req, 0), 659 CreateMockWrite(*req, 0),
683 CreateMockWrite(*rst, 3) 660 CreateMockWrite(*rst, 3)
684 }; 661 };
685 DeterministicSocketData data(reads, arraysize(reads), 662 DeterministicSocketData data(reads, arraysize(reads),
686 writes, arraysize(writes)); 663 writes, arraysize(writes));
687 data.set_connect_data(connect_data); 664 data.set_connect_data(connect_data);
688 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 665 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
689 666
690 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
691 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
692
693 CreateDeterministicNetworkSession(); 667 CreateDeterministicNetworkSession();
694 668
695 base::WeakPtr<SpdySession> session = 669 base::WeakPtr<SpdySession> session =
696 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 670 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
697 671
698 EXPECT_EQ(spdy_util_.spdy_version(), session->GetProtocolVersion()); 672 EXPECT_EQ(spdy_util_.spdy_version(), session->GetProtocolVersion());
699 673
700 GURL url(kStreamUrl); 674 GURL url(kDefaultURL);
701 base::WeakPtr<SpdyStream> spdy_stream = 675 base::WeakPtr<SpdyStream> spdy_stream =
702 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 676 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
703 session, url, MEDIUM, BoundNetLog()); 677 session, url, MEDIUM, BoundNetLog());
704 test::StreamDelegateDoNothing delegate(spdy_stream); 678 test::StreamDelegateDoNothing delegate(spdy_stream);
705 spdy_stream->SetDelegate(&delegate); 679 spdy_stream->SetDelegate(&delegate);
706 680
707 scoped_ptr<SpdyHeaderBlock> headers( 681 scoped_ptr<SpdyHeaderBlock> headers(
708 spdy_util_.ConstructGetHeaderBlock(url.spec())); 682 spdy_util_.ConstructGetHeaderBlock(url.spec()));
709 spdy_stream->SendRequestHeaders(headers.Pass(), NO_MORE_DATA_TO_SEND); 683 spdy_stream->SendRequestHeaders(headers.Pass(), NO_MORE_DATA_TO_SEND);
710 EXPECT_TRUE(spdy_stream->HasUrlFromHeaders()); 684 EXPECT_TRUE(spdy_stream->HasUrlFromHeaders());
(...skipping 10 matching lines...) Expand all
721 EXPECT_FALSE(HasSpdySession(spdy_session_pool_, key_)); 695 EXPECT_FALSE(HasSpdySession(spdy_session_pool_, key_));
722 EXPECT_TRUE(session->IsStreamActive(1)); 696 EXPECT_TRUE(session->IsStreamActive(1));
723 697
724 // Read and process the SYN_STREAM frame, the subsequent RST_STREAM, 698 // Read and process the SYN_STREAM frame, the subsequent RST_STREAM,
725 // and EOF. 699 // and EOF.
726 data.RunFor(3); 700 data.RunFor(3);
727 701
728 EXPECT_TRUE(session == NULL); 702 EXPECT_TRUE(session == NULL);
729 } 703 }
730 704
705 // A session observing a network change with active streams should close
706 // when the last active stream is closed.
707 TEST_P(SpdySessionTest, NetworkChangeWithActiveStreams) {
708 session_deps_.host_resolver->set_synchronous_mode(true);
709
710 MockConnect connect_data(SYNCHRONOUS, OK);
711 MockRead reads[] = {
712 MockRead(ASYNC, 0, 1) // EOF
713 };
714 scoped_ptr<SpdyFrame> req1(
715 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, MEDIUM, true));
716 MockWrite writes[] = {
717 CreateMockWrite(*req1, 0),
718 };
719 DeterministicSocketData data(reads, arraysize(reads),
720 writes, arraysize(writes));
721 data.set_connect_data(connect_data);
722 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
723
724 CreateDeterministicNetworkSession();
725
726 base::WeakPtr<SpdySession> session =
727 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
728
729 EXPECT_EQ(spdy_util_.spdy_version(), session->GetProtocolVersion());
730
731 base::WeakPtr<SpdyStream> spdy_stream =
732 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session,
733 GURL(kDefaultURL), MEDIUM, BoundNetLog());
734 test::StreamDelegateDoNothing delegate(spdy_stream);
735 spdy_stream->SetDelegate(&delegate);
736
737 scoped_ptr<SpdyHeaderBlock> headers(
738 spdy_util_.ConstructGetHeaderBlock(kDefaultURL));
739
740 spdy_stream->SendRequestHeaders(headers.Pass(), NO_MORE_DATA_TO_SEND);
741 EXPECT_TRUE(spdy_stream->HasUrlFromHeaders());
742
743 data.RunFor(1);
744
745 EXPECT_EQ(1u, spdy_stream->stream_id());
746
747 EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key_));
748
749 spdy_session_pool_->OnIPAddressChanged();
750
751 // The SpdySessionPool behavior differs based on how the OSs reacts to
752 // network changes; see comment in SpdySessionPool::OnIPAddressChanged().
753 #if defined(OS_ANDROID) || defined(OS_WIN) || defined(OS_IOS)
754 // For OSs where the TCP connections will close upon relevant network
755 // changes, SpdySessionPool doesn't need to force them to close, so in these
756 // cases verify the session has become unavailable but remains open and the
757 // pre-existing stream is still active.
758 EXPECT_FALSE(HasSpdySession(spdy_session_pool_, key_));
759
760 EXPECT_FALSE(session->IsClosed());
761
762 EXPECT_TRUE(session->IsStreamActive(1));
763
764 // Should close the session.
765 spdy_stream->Close();
766 #endif
767 EXPECT_EQ(NULL, spdy_stream.get());
768
769 EXPECT_TRUE(session == NULL);
770 }
771
731 TEST_P(SpdySessionTest, ClientPing) { 772 TEST_P(SpdySessionTest, ClientPing) {
732 session_deps_.enable_ping = true; 773 session_deps_.enable_ping = true;
733 session_deps_.host_resolver->set_synchronous_mode(true); 774 session_deps_.host_resolver->set_synchronous_mode(true);
734 775
735 MockConnect connect_data(SYNCHRONOUS, OK); 776 MockConnect connect_data(SYNCHRONOUS, OK);
736 scoped_ptr<SpdyFrame> read_ping(spdy_util_.ConstructSpdyPing(1)); 777 scoped_ptr<SpdyFrame> read_ping(spdy_util_.ConstructSpdyPing(1));
737 MockRead reads[] = { 778 MockRead reads[] = {
738 CreateMockRead(*read_ping, 1), 779 CreateMockRead(*read_ping, 1),
739 MockRead(ASYNC, 0, 0, 2) // EOF 780 MockRead(ASYNC, 0, 0, 2) // EOF
740 }; 781 };
741 scoped_ptr<SpdyFrame> write_ping(spdy_util_.ConstructSpdyPing(1)); 782 scoped_ptr<SpdyFrame> write_ping(spdy_util_.ConstructSpdyPing(1));
742 MockWrite writes[] = { 783 MockWrite writes[] = {
743 CreateMockWrite(*write_ping, 0), 784 CreateMockWrite(*write_ping, 0),
744 }; 785 };
745 DeterministicSocketData data( 786 DeterministicSocketData data(
746 reads, arraysize(reads), writes, arraysize(writes)); 787 reads, arraysize(reads), writes, arraysize(writes));
747 data.set_connect_data(connect_data); 788 data.set_connect_data(connect_data);
748 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 789 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
749 790
750 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
751 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
752
753 CreateDeterministicNetworkSession(); 791 CreateDeterministicNetworkSession();
754 792
755 base::WeakPtr<SpdySession> session = 793 base::WeakPtr<SpdySession> session =
756 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 794 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
757 795
758 base::WeakPtr<SpdyStream> spdy_stream1 = 796 base::WeakPtr<SpdyStream> spdy_stream1 =
759 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, 797 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM,
760 session, test_url_, MEDIUM, BoundNetLog()); 798 session, test_url_, MEDIUM, BoundNetLog());
761 ASSERT_TRUE(spdy_stream1.get() != NULL); 799 ASSERT_TRUE(spdy_stream1.get() != NULL);
762 test::StreamDelegateSendImmediate delegate(spdy_stream1, NULL); 800 test::StreamDelegateSendImmediate delegate(spdy_stream1, NULL);
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
798 }; 836 };
799 scoped_ptr<SpdyFrame> write_ping(spdy_util_.ConstructSpdyPing(2)); 837 scoped_ptr<SpdyFrame> write_ping(spdy_util_.ConstructSpdyPing(2));
800 MockWrite writes[] = { 838 MockWrite writes[] = {
801 CreateMockWrite(*write_ping), 839 CreateMockWrite(*write_ping),
802 }; 840 };
803 StaticSocketDataProvider data( 841 StaticSocketDataProvider data(
804 reads, arraysize(reads), writes, arraysize(writes)); 842 reads, arraysize(reads), writes, arraysize(writes));
805 data.set_connect_data(connect_data); 843 data.set_connect_data(connect_data);
806 session_deps_.socket_factory->AddSocketDataProvider(&data); 844 session_deps_.socket_factory->AddSocketDataProvider(&data);
807 845
808 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
809 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
810
811 CreateNetworkSession(); 846 CreateNetworkSession();
812 847
813 base::WeakPtr<SpdySession> session = 848 base::WeakPtr<SpdySession> session =
814 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 849 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
815 850
816 base::WeakPtr<SpdyStream> spdy_stream1 = 851 base::WeakPtr<SpdyStream> spdy_stream1 =
817 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, 852 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM,
818 session, test_url_, MEDIUM, BoundNetLog()); 853 session, test_url_, MEDIUM, BoundNetLog());
819 ASSERT_TRUE(spdy_stream1.get() != NULL); 854 ASSERT_TRUE(spdy_stream1.get() != NULL);
820 test::StreamDelegateSendImmediate delegate(spdy_stream1, NULL); 855 test::StreamDelegateSendImmediate delegate(spdy_stream1, NULL);
(...skipping 29 matching lines...) Expand all
850 MockRead(ASYNC, 0, 2) // EOF 885 MockRead(ASYNC, 0, 2) // EOF
851 }; 886 };
852 887
853 session_deps_.host_resolver->set_synchronous_mode(true); 888 session_deps_.host_resolver->set_synchronous_mode(true);
854 889
855 DeterministicSocketData data(reads, arraysize(reads), 890 DeterministicSocketData data(reads, arraysize(reads),
856 writes, arraysize(writes)); 891 writes, arraysize(writes));
857 data.set_connect_data(connect_data); 892 data.set_connect_data(connect_data);
858 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 893 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
859 894
860 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
861 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
862
863 CreateDeterministicNetworkSession(); 895 CreateDeterministicNetworkSession();
864 896
865 base::WeakPtr<SpdySession> session = 897 base::WeakPtr<SpdySession> session =
866 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 898 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
867 899
868 GURL url("http://www.google.com"); 900 GURL url(kDefaultURL);
869 base::WeakPtr<SpdyStream> spdy_stream = 901 base::WeakPtr<SpdyStream> spdy_stream =
870 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 902 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
871 session, url, LOWEST, BoundNetLog()); 903 session, url, LOWEST, BoundNetLog());
872 test::StreamDelegateDoNothing delegate(spdy_stream); 904 test::StreamDelegateDoNothing delegate(spdy_stream);
873 spdy_stream->SetDelegate(&delegate); 905 spdy_stream->SetDelegate(&delegate);
874 906
875 scoped_ptr<SpdyHeaderBlock> headers( 907 scoped_ptr<SpdyHeaderBlock> headers(
876 spdy_util_.ConstructGetHeaderBlock(url.spec())); 908 spdy_util_.ConstructGetHeaderBlock(url.spec()));
877 spdy_stream->SendRequestHeaders(headers.Pass(), NO_MORE_DATA_TO_SEND); 909 spdy_stream->SendRequestHeaders(headers.Pass(), NO_MORE_DATA_TO_SEND);
878 910
(...skipping 25 matching lines...) Expand all
904 CreateMockRead(*push_a, 1), CreateMockRead(*push_a_body, 2), 936 CreateMockRead(*push_a, 1), CreateMockRead(*push_a_body, 2),
905 CreateMockRead(*push_b, 3), MockRead(ASYNC, 0, 5), // EOF 937 CreateMockRead(*push_b, 3), MockRead(ASYNC, 0, 5), // EOF
906 }; 938 };
907 DeterministicSocketData data( 939 DeterministicSocketData data(
908 reads, arraysize(reads), writes, arraysize(writes)); 940 reads, arraysize(reads), writes, arraysize(writes));
909 941
910 MockConnect connect_data(SYNCHRONOUS, OK); 942 MockConnect connect_data(SYNCHRONOUS, OK);
911 data.set_connect_data(connect_data); 943 data.set_connect_data(connect_data);
912 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 944 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
913 945
914 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
915 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
916
917 CreateDeterministicNetworkSession(); 946 CreateDeterministicNetworkSession();
918 base::WeakPtr<SpdySession> session = 947 base::WeakPtr<SpdySession> session =
919 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 948 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
920 949
921 // Process the principal request, and the first push stream request & body. 950 // Process the principal request, and the first push stream request & body.
922 GURL url("http://www.google.com"); 951 GURL url(kDefaultURL);
923 base::WeakPtr<SpdyStream> spdy_stream = CreateStreamSynchronously( 952 base::WeakPtr<SpdyStream> spdy_stream = CreateStreamSynchronously(
924 SPDY_REQUEST_RESPONSE_STREAM, session, url, MEDIUM, BoundNetLog()); 953 SPDY_REQUEST_RESPONSE_STREAM, session, url, MEDIUM, BoundNetLog());
925 test::StreamDelegateDoNothing delegate(spdy_stream); 954 test::StreamDelegateDoNothing delegate(spdy_stream);
926 spdy_stream->SetDelegate(&delegate); 955 spdy_stream->SetDelegate(&delegate);
927 956
928 scoped_ptr<SpdyHeaderBlock> headers( 957 scoped_ptr<SpdyHeaderBlock> headers(
929 spdy_util_.ConstructGetHeaderBlock(url.spec())); 958 spdy_util_.ConstructGetHeaderBlock(url.spec()));
930 spdy_stream->SendRequestHeaders(headers.Pass(), NO_MORE_DATA_TO_SEND); 959 spdy_stream->SendRequestHeaders(headers.Pass(), NO_MORE_DATA_TO_SEND);
931 960
932 data.RunFor(3); 961 data.RunFor(3);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
975 1004
976 MockConnect connect_data(SYNCHRONOUS, OK); 1005 MockConnect connect_data(SYNCHRONOUS, OK);
977 MockRead reads[] = { 1006 MockRead reads[] = {
978 MockRead(ASYNC, 0, 0, 0) // EOF 1007 MockRead(ASYNC, 0, 0, 0) // EOF
979 }; 1008 };
980 scoped_ptr<SpdyFrame> write_ping(spdy_util_.ConstructSpdyPing(1)); 1009 scoped_ptr<SpdyFrame> write_ping(spdy_util_.ConstructSpdyPing(1));
981 DeterministicSocketData data(reads, arraysize(reads), NULL, 0); 1010 DeterministicSocketData data(reads, arraysize(reads), NULL, 0);
982 data.set_connect_data(connect_data); 1011 data.set_connect_data(connect_data);
983 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 1012 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
984 1013
985 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
986 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
987
988 CreateDeterministicNetworkSession(); 1014 CreateDeterministicNetworkSession();
989 1015
990 base::WeakPtr<SpdySession> session = 1016 base::WeakPtr<SpdySession> session =
991 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 1017 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
992 1018
993 base::WeakPtr<SpdyStream> spdy_stream1 = 1019 base::WeakPtr<SpdyStream> spdy_stream1 =
994 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, 1020 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM,
995 session, test_url_, MEDIUM, BoundNetLog()); 1021 session, test_url_, MEDIUM, BoundNetLog());
996 ASSERT_TRUE(spdy_stream1.get() != NULL); 1022 ASSERT_TRUE(spdy_stream1.get() != NULL);
997 test::StreamDelegateSendImmediate delegate(spdy_stream1, NULL); 1023 test::StreamDelegateSendImmediate delegate(spdy_stream1, NULL);
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1042 MockRead reads[] = { 1068 MockRead reads[] = {
1043 CreateMockRead(*settings_frame, 0), 1069 CreateMockRead(*settings_frame, 0),
1044 MockRead(ASYNC, 0, 1), 1070 MockRead(ASYNC, 0, 1),
1045 }; 1071 };
1046 1072
1047 DeterministicSocketData data(reads, arraysize(reads), NULL, 0); 1073 DeterministicSocketData data(reads, arraysize(reads), NULL, 0);
1048 MockConnect connect_data(SYNCHRONOUS, OK); 1074 MockConnect connect_data(SYNCHRONOUS, OK);
1049 data.set_connect_data(connect_data); 1075 data.set_connect_data(connect_data);
1050 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 1076 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
1051 1077
1052 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
1053 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
1054
1055 CreateDeterministicNetworkSession(); 1078 CreateDeterministicNetworkSession();
1056 1079
1057 base::WeakPtr<SpdySession> session = 1080 base::WeakPtr<SpdySession> session =
1058 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 1081 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
1059 1082
1060 // Create the maximum number of concurrent streams. 1083 // Create the maximum number of concurrent streams.
1061 for (size_t i = 0; i < kInitialMaxConcurrentStreams; ++i) { 1084 for (size_t i = 0; i < kInitialMaxConcurrentStreams; ++i) {
1062 base::WeakPtr<SpdyStream> spdy_stream = 1085 base::WeakPtr<SpdyStream> spdy_stream =
1063 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, 1086 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM,
1064 session, test_url_, MEDIUM, BoundNetLog()); 1087 session, test_url_, MEDIUM, BoundNetLog());
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1099 MockRead reads[] = { 1122 MockRead reads[] = {
1100 CreateMockRead(*settings_frame, 0), 1123 CreateMockRead(*settings_frame, 0),
1101 MockRead(ASYNC, 0, 1), 1124 MockRead(ASYNC, 0, 1),
1102 }; 1125 };
1103 1126
1104 DeterministicSocketData data(reads, arraysize(reads), NULL, 0); 1127 DeterministicSocketData data(reads, arraysize(reads), NULL, 0);
1105 MockConnect connect_data(SYNCHRONOUS, OK); 1128 MockConnect connect_data(SYNCHRONOUS, OK);
1106 data.set_connect_data(connect_data); 1129 data.set_connect_data(connect_data);
1107 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 1130 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
1108 1131
1109 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
1110 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
1111
1112 CreateDeterministicNetworkSession(); 1132 CreateDeterministicNetworkSession();
1113 1133
1114 // Initialize the SpdySetting with the default. 1134 // Initialize the SpdySetting with the default.
1115 spdy_session_pool_->http_server_properties()->SetSpdySetting( 1135 spdy_session_pool_->http_server_properties()->SetSpdySetting(
1116 test_host_port_pair_, 1136 test_host_port_pair_,
1117 SETTINGS_MAX_CONCURRENT_STREAMS, 1137 SETTINGS_MAX_CONCURRENT_STREAMS,
1118 SETTINGS_FLAG_PLEASE_PERSIST, 1138 SETTINGS_FLAG_PLEASE_PERSIST,
1119 kInitialMaxConcurrentStreams); 1139 kInitialMaxConcurrentStreams);
1120 1140
1121 EXPECT_FALSE( 1141 EXPECT_FALSE(
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
1170 MockRead reads[] = { 1190 MockRead reads[] = {
1171 MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever. 1191 MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever.
1172 }; 1192 };
1173 1193
1174 StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0); 1194 StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0);
1175 MockConnect connect_data(SYNCHRONOUS, OK); 1195 MockConnect connect_data(SYNCHRONOUS, OK);
1176 1196
1177 data.set_connect_data(connect_data); 1197 data.set_connect_data(connect_data);
1178 session_deps_.socket_factory->AddSocketDataProvider(&data); 1198 session_deps_.socket_factory->AddSocketDataProvider(&data);
1179 1199
1180 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
1181 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
1182
1183 CreateNetworkSession(); 1200 CreateNetworkSession();
1184 1201
1185 // Initialize the SpdySetting with 1 max concurrent streams. 1202 // Initialize the SpdySetting with 1 max concurrent streams.
1186 spdy_session_pool_->http_server_properties()->SetSpdySetting( 1203 spdy_session_pool_->http_server_properties()->SetSpdySetting(
1187 test_host_port_pair_, 1204 test_host_port_pair_,
1188 SETTINGS_MAX_CONCURRENT_STREAMS, 1205 SETTINGS_MAX_CONCURRENT_STREAMS,
1189 SETTINGS_FLAG_PLEASE_PERSIST, 1206 SETTINGS_FLAG_PLEASE_PERSIST,
1190 1); 1207 1);
1191 1208
1192 base::WeakPtr<SpdySession> session = 1209 base::WeakPtr<SpdySession> session =
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
1273 spdy_util_.ConstructSpdySettings(server_settings)); 1290 spdy_util_.ConstructSpdySettings(server_settings));
1274 writes.push_back(CreateMockWrite(*server_settings_frame)); 1291 writes.push_back(CreateMockWrite(*server_settings_frame));
1275 1292
1276 session_deps_.stream_initial_recv_window_size = kInitialRecvWindowSize; 1293 session_deps_.stream_initial_recv_window_size = kInitialRecvWindowSize;
1277 1294
1278 StaticSocketDataProvider data(reads, arraysize(reads), 1295 StaticSocketDataProvider data(reads, arraysize(reads),
1279 vector_as_array(&writes), writes.size()); 1296 vector_as_array(&writes), writes.size());
1280 data.set_connect_data(connect_data); 1297 data.set_connect_data(connect_data);
1281 session_deps_.socket_factory->AddSocketDataProvider(&data); 1298 session_deps_.socket_factory->AddSocketDataProvider(&data);
1282 1299
1283 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
1284 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
1285
1286 CreateNetworkSession(); 1300 CreateNetworkSession();
1287 1301
1288 spdy_session_pool_->http_server_properties()->SetSpdySetting( 1302 spdy_session_pool_->http_server_properties()->SetSpdySetting(
1289 test_host_port_pair_, 1303 test_host_port_pair_,
1290 SETTINGS_MAX_CONCURRENT_STREAMS, 1304 SETTINGS_MAX_CONCURRENT_STREAMS,
1291 SETTINGS_FLAG_PLEASE_PERSIST, 1305 SETTINGS_FLAG_PLEASE_PERSIST,
1292 initial_max_concurrent_streams); 1306 initial_max_concurrent_streams);
1293 1307
1294 SpdySessionPoolPeer pool_peer(spdy_session_pool_); 1308 SpdySessionPoolPeer pool_peer(spdy_session_pool_);
1295 pool_peer.SetEnableSendingInitialData(true); 1309 pool_peer.SetEnableSendingInitialData(true);
(...skipping 30 matching lines...) Expand all
1326 1340
1327 MockConnect connect_data(SYNCHRONOUS, OK); 1341 MockConnect connect_data(SYNCHRONOUS, OK);
1328 MockRead reads[] = { 1342 MockRead reads[] = {
1329 MockRead(ASYNC, 0, 0) // EOF 1343 MockRead(ASYNC, 0, 0) // EOF
1330 }; 1344 };
1331 1345
1332 StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0); 1346 StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0);
1333 data.set_connect_data(connect_data); 1347 data.set_connect_data(connect_data);
1334 session_deps_.socket_factory->AddSocketDataProvider(&data); 1348 session_deps_.socket_factory->AddSocketDataProvider(&data);
1335 1349
1336 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
1337 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
1338
1339 CreateNetworkSession(); 1350 CreateNetworkSession();
1340 1351
1341 base::WeakPtr<SpdySession> session = 1352 base::WeakPtr<SpdySession> session =
1342 CreateInsecureSpdySession(http_session_, key_, log.bound()); 1353 CreateInsecureSpdySession(http_session_, key_, log.bound());
1343 EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key_)); 1354 EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key_));
1344 1355
1345 // Flush the read completion task. 1356 // Flush the read completion task.
1346 base::MessageLoop::current()->RunUntilIdle(); 1357 base::MessageLoop::current()->RunUntilIdle();
1347 1358
1348 net::CapturingNetLog::CapturedEntryList entries; 1359 net::CapturingNetLog::CapturedEntryList entries;
(...skipping 22 matching lines...) Expand all
1371 scoped_ptr<SpdyFrame> goaway(spdy_util_.ConstructSpdyGoAway()); 1382 scoped_ptr<SpdyFrame> goaway(spdy_util_.ConstructSpdyGoAway());
1372 MockRead reads[] = { 1383 MockRead reads[] = {
1373 CreateMockRead(*goaway), 1384 CreateMockRead(*goaway),
1374 MockRead(SYNCHRONOUS, 0, 0) // EOF 1385 MockRead(SYNCHRONOUS, 0, 0) // EOF
1375 }; 1386 };
1376 1387
1377 StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0); 1388 StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0);
1378 data.set_connect_data(connect_data); 1389 data.set_connect_data(connect_data);
1379 session_deps_.socket_factory->AddSocketDataProvider(&data); 1390 session_deps_.socket_factory->AddSocketDataProvider(&data);
1380 1391
1381 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
1382 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
1383
1384 CreateNetworkSession(); 1392 CreateNetworkSession();
1385 1393
1386 CapturingBoundNetLog log; 1394 CapturingBoundNetLog log;
1387 base::WeakPtr<SpdySession> session = 1395 base::WeakPtr<SpdySession> session =
1388 CreateInsecureSpdySession(http_session_, key_, log.bound()); 1396 CreateInsecureSpdySession(http_session_, key_, log.bound());
1389 EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key_)); 1397 EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key_));
1390 1398
1391 // Flush the read completion task. 1399 // Flush the read completion task.
1392 base::MessageLoop::current()->RunUntilIdle(); 1400 base::MessageLoop::current()->RunUntilIdle();
1393 1401
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
1446 MockRead(ASYNC, 0, 6) // EOF 1454 MockRead(ASYNC, 0, 6) // EOF
1447 }; 1455 };
1448 1456
1449 session_deps_.host_resolver->set_synchronous_mode(true); 1457 session_deps_.host_resolver->set_synchronous_mode(true);
1450 1458
1451 DeterministicSocketData data(reads, arraysize(reads), 1459 DeterministicSocketData data(reads, arraysize(reads),
1452 writes, arraysize(writes)); 1460 writes, arraysize(writes));
1453 data.set_connect_data(connect_data); 1461 data.set_connect_data(connect_data);
1454 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 1462 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
1455 1463
1456 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
1457 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
1458
1459 CreateDeterministicNetworkSession(); 1464 CreateDeterministicNetworkSession();
1460 1465
1461 base::WeakPtr<SpdySession> session = 1466 base::WeakPtr<SpdySession> session =
1462 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 1467 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
1463 1468
1464 GURL url("http://www.google.com"); 1469 GURL url(kDefaultURL);
1465 1470
1466 base::WeakPtr<SpdyStream> spdy_stream_lowest = 1471 base::WeakPtr<SpdyStream> spdy_stream_lowest =
1467 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 1472 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
1468 session, url, LOWEST, BoundNetLog()); 1473 session, url, LOWEST, BoundNetLog());
1469 ASSERT_TRUE(spdy_stream_lowest); 1474 ASSERT_TRUE(spdy_stream_lowest);
1470 EXPECT_EQ(0u, spdy_stream_lowest->stream_id()); 1475 EXPECT_EQ(0u, spdy_stream_lowest->stream_id());
1471 test::StreamDelegateDoNothing delegate_lowest(spdy_stream_lowest); 1476 test::StreamDelegateDoNothing delegate_lowest(spdy_stream_lowest);
1472 spdy_stream_lowest->SetDelegate(&delegate_lowest); 1477 spdy_stream_lowest->SetDelegate(&delegate_lowest);
1473 1478
1474 base::WeakPtr<SpdyStream> spdy_stream_highest = 1479 base::WeakPtr<SpdyStream> spdy_stream_highest =
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1519 MockRead(ASYNC, 0, 3) // EOF 1524 MockRead(ASYNC, 0, 3) // EOF
1520 }; 1525 };
1521 1526
1522 session_deps_.host_resolver->set_synchronous_mode(true); 1527 session_deps_.host_resolver->set_synchronous_mode(true);
1523 1528
1524 DeterministicSocketData data(reads, arraysize(reads), 1529 DeterministicSocketData data(reads, arraysize(reads),
1525 writes, arraysize(writes)); 1530 writes, arraysize(writes));
1526 data.set_connect_data(connect_data); 1531 data.set_connect_data(connect_data);
1527 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 1532 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
1528 1533
1529 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
1530 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
1531
1532 CreateDeterministicNetworkSession(); 1534 CreateDeterministicNetworkSession();
1533 1535
1534 base::WeakPtr<SpdySession> session = 1536 base::WeakPtr<SpdySession> session =
1535 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 1537 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
1536 1538
1537 GURL url1("http://www.google.com"); 1539 GURL url1(kDefaultURL);
1538 base::WeakPtr<SpdyStream> spdy_stream1 = 1540 base::WeakPtr<SpdyStream> spdy_stream1 =
1539 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 1541 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
1540 session, url1, HIGHEST, BoundNetLog()); 1542 session, url1, HIGHEST, BoundNetLog());
1541 ASSERT_TRUE(spdy_stream1.get() != NULL); 1543 ASSERT_TRUE(spdy_stream1.get() != NULL);
1542 EXPECT_EQ(0u, spdy_stream1->stream_id()); 1544 EXPECT_EQ(0u, spdy_stream1->stream_id());
1543 test::StreamDelegateDoNothing delegate1(spdy_stream1); 1545 test::StreamDelegateDoNothing delegate1(spdy_stream1);
1544 spdy_stream1->SetDelegate(&delegate1); 1546 spdy_stream1->SetDelegate(&delegate1);
1545 1547
1546 GURL url2("http://www.google.com"); 1548 GURL url2(kDefaultURL);
1547 base::WeakPtr<SpdyStream> spdy_stream2 = 1549 base::WeakPtr<SpdyStream> spdy_stream2 =
1548 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 1550 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
1549 session, url2, LOWEST, BoundNetLog()); 1551 session, url2, LOWEST, BoundNetLog());
1550 ASSERT_TRUE(spdy_stream2.get() != NULL); 1552 ASSERT_TRUE(spdy_stream2.get() != NULL);
1551 EXPECT_EQ(0u, spdy_stream2->stream_id()); 1553 EXPECT_EQ(0u, spdy_stream2->stream_id());
1552 test::StreamDelegateDoNothing delegate2(spdy_stream2); 1554 test::StreamDelegateDoNothing delegate2(spdy_stream2);
1553 spdy_stream2->SetDelegate(&delegate2); 1555 spdy_stream2->SetDelegate(&delegate2);
1554 1556
1555 scoped_ptr<SpdyHeaderBlock> headers( 1557 scoped_ptr<SpdyHeaderBlock> headers(
1556 spdy_util_.ConstructGetHeaderBlock(url1.spec())); 1558 spdy_util_.ConstructGetHeaderBlock(url1.spec()));
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1592 }; 1594 };
1593 1595
1594 MockRead reads[] = { 1596 MockRead reads[] = {
1595 MockRead(ASYNC, 0, 0) // EOF 1597 MockRead(ASYNC, 0, 0) // EOF
1596 }; 1598 };
1597 DeterministicSocketData data(reads, arraysize(reads), 1599 DeterministicSocketData data(reads, arraysize(reads),
1598 writes, arraysize(writes)); 1600 writes, arraysize(writes));
1599 data.set_connect_data(connect_data); 1601 data.set_connect_data(connect_data);
1600 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 1602 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
1601 1603
1602 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
1603 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
1604
1605 CreateDeterministicNetworkSession(); 1604 CreateDeterministicNetworkSession();
1606 1605
1607 base::WeakPtr<SpdySession> session = 1606 base::WeakPtr<SpdySession> session =
1608 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 1607 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
1609 1608
1610 GURL url1("http://www.google.com"); 1609 GURL url1(kDefaultURL);
1611 base::WeakPtr<SpdyStream> spdy_stream1 = 1610 base::WeakPtr<SpdyStream> spdy_stream1 =
1612 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, 1611 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM,
1613 session, url1, HIGHEST, BoundNetLog()); 1612 session, url1, HIGHEST, BoundNetLog());
1614 ASSERT_TRUE(spdy_stream1.get() != NULL); 1613 ASSERT_TRUE(spdy_stream1.get() != NULL);
1615 EXPECT_EQ(0u, spdy_stream1->stream_id()); 1614 EXPECT_EQ(0u, spdy_stream1->stream_id());
1616 1615
1617 GURL url2("http://www.google.com"); 1616 GURL url2(kDefaultURL);
1618 base::WeakPtr<SpdyStream> spdy_stream2 = 1617 base::WeakPtr<SpdyStream> spdy_stream2 =
1619 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, 1618 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM,
1620 session, url2, LOWEST, BoundNetLog()); 1619 session, url2, LOWEST, BoundNetLog());
1621 ASSERT_TRUE(spdy_stream2.get() != NULL); 1620 ASSERT_TRUE(spdy_stream2.get() != NULL);
1622 EXPECT_EQ(0u, spdy_stream2->stream_id()); 1621 EXPECT_EQ(0u, spdy_stream2->stream_id());
1623 1622
1624 test::ClosingDelegate delegate1(spdy_stream1); 1623 test::ClosingDelegate delegate1(spdy_stream1);
1625 spdy_stream1->SetDelegate(&delegate1); 1624 spdy_stream1->SetDelegate(&delegate1);
1626 1625
1627 test::ClosingDelegate delegate2(spdy_stream2); 1626 test::ClosingDelegate delegate2(spdy_stream2);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1666 }; 1665 };
1667 1666
1668 MockRead reads[] = { 1667 MockRead reads[] = {
1669 MockRead(ASYNC, 0, 0) // EOF 1668 MockRead(ASYNC, 0, 0) // EOF
1670 }; 1669 };
1671 DeterministicSocketData data(reads, arraysize(reads), 1670 DeterministicSocketData data(reads, arraysize(reads),
1672 writes, arraysize(writes)); 1671 writes, arraysize(writes));
1673 data.set_connect_data(connect_data); 1672 data.set_connect_data(connect_data);
1674 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 1673 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
1675 1674
1676 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
1677 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
1678
1679 CreateDeterministicNetworkSession(); 1675 CreateDeterministicNetworkSession();
1680 1676
1681 base::WeakPtr<SpdySession> session = 1677 base::WeakPtr<SpdySession> session =
1682 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 1678 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
1683 1679
1684 GURL url1("http://www.google.com"); 1680 GURL url1(kDefaultURL);
1685 base::WeakPtr<SpdyStream> spdy_stream1 = 1681 base::WeakPtr<SpdyStream> spdy_stream1 =
1686 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, 1682 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM,
1687 session, url1, HIGHEST, BoundNetLog()); 1683 session, url1, HIGHEST, BoundNetLog());
1688 ASSERT_TRUE(spdy_stream1.get() != NULL); 1684 ASSERT_TRUE(spdy_stream1.get() != NULL);
1689 EXPECT_EQ(0u, spdy_stream1->stream_id()); 1685 EXPECT_EQ(0u, spdy_stream1->stream_id());
1690 1686
1691 GURL url2("http://www.google.com"); 1687 GURL url2(kDefaultURL);
1692 base::WeakPtr<SpdyStream> spdy_stream2 = 1688 base::WeakPtr<SpdyStream> spdy_stream2 =
1693 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, 1689 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM,
1694 session, url2, LOWEST, BoundNetLog()); 1690 session, url2, LOWEST, BoundNetLog());
1695 ASSERT_TRUE(spdy_stream2.get() != NULL); 1691 ASSERT_TRUE(spdy_stream2.get() != NULL);
1696 EXPECT_EQ(0u, spdy_stream2->stream_id()); 1692 EXPECT_EQ(0u, spdy_stream2->stream_id());
1697 1693
1698 // Make |spdy_stream1| close |spdy_stream2|. 1694 // Make |spdy_stream1| close |spdy_stream2|.
1699 test::ClosingDelegate delegate1(spdy_stream2); 1695 test::ClosingDelegate delegate1(spdy_stream2);
1700 spdy_stream1->SetDelegate(&delegate1); 1696 spdy_stream1->SetDelegate(&delegate1);
1701 1697
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1747 1743
1748 MockRead reads[] = { 1744 MockRead reads[] = {
1749 MockRead(ASYNC, 0, 2) // EOF 1745 MockRead(ASYNC, 0, 2) // EOF
1750 }; 1746 };
1751 1747
1752 DeterministicSocketData data(reads, arraysize(reads), 1748 DeterministicSocketData data(reads, arraysize(reads),
1753 writes, arraysize(writes)); 1749 writes, arraysize(writes));
1754 data.set_connect_data(connect_data); 1750 data.set_connect_data(connect_data);
1755 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 1751 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
1756 1752
1757 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
1758 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
1759
1760 CreateDeterministicNetworkSession(); 1753 CreateDeterministicNetworkSession();
1761 1754
1762 base::WeakPtr<SpdySession> session = 1755 base::WeakPtr<SpdySession> session =
1763 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 1756 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
1764 1757
1765 GURL url1("http://www.google.com"); 1758 GURL url1(kDefaultURL);
1766 base::WeakPtr<SpdyStream> spdy_stream1 = 1759 base::WeakPtr<SpdyStream> spdy_stream1 =
1767 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 1760 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
1768 session, url1, MEDIUM, BoundNetLog()); 1761 session, url1, MEDIUM, BoundNetLog());
1769 ASSERT_TRUE(spdy_stream1.get() != NULL); 1762 ASSERT_TRUE(spdy_stream1.get() != NULL);
1770 EXPECT_EQ(0u, spdy_stream1->stream_id()); 1763 EXPECT_EQ(0u, spdy_stream1->stream_id());
1771 1764
1772 GURL url2("http://www.google.com"); 1765 GURL url2(kDefaultURL);
1773 base::WeakPtr<SpdyStream> spdy_stream2 = 1766 base::WeakPtr<SpdyStream> spdy_stream2 =
1774 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 1767 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
1775 session, url2, MEDIUM, BoundNetLog()); 1768 session, url2, MEDIUM, BoundNetLog());
1776 ASSERT_TRUE(spdy_stream2.get() != NULL); 1769 ASSERT_TRUE(spdy_stream2.get() != NULL);
1777 EXPECT_EQ(0u, spdy_stream2->stream_id()); 1770 EXPECT_EQ(0u, spdy_stream2->stream_id());
1778 1771
1779 test::ClosingDelegate delegate1(spdy_stream1); 1772 test::ClosingDelegate delegate1(spdy_stream1);
1780 spdy_stream1->SetDelegate(&delegate1); 1773 spdy_stream1->SetDelegate(&delegate1);
1781 1774
1782 test::ClosingDelegate delegate2(spdy_stream2); 1775 test::ClosingDelegate delegate2(spdy_stream2);
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
1831 1824
1832 MockRead reads[] = { 1825 MockRead reads[] = {
1833 MockRead(ASYNC, 0, 2) // EOF 1826 MockRead(ASYNC, 0, 2) // EOF
1834 }; 1827 };
1835 1828
1836 DeterministicSocketData data(reads, arraysize(reads), 1829 DeterministicSocketData data(reads, arraysize(reads),
1837 writes, arraysize(writes)); 1830 writes, arraysize(writes));
1838 data.set_connect_data(connect_data); 1831 data.set_connect_data(connect_data);
1839 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 1832 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
1840 1833
1841 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
1842 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
1843
1844 CreateDeterministicNetworkSession(); 1834 CreateDeterministicNetworkSession();
1845 1835
1846 base::WeakPtr<SpdySession> session = 1836 base::WeakPtr<SpdySession> session =
1847 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 1837 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
1848 1838
1849 GURL url1("http://www.google.com"); 1839 GURL url1(kDefaultURL);
1850 base::WeakPtr<SpdyStream> spdy_stream1 = 1840 base::WeakPtr<SpdyStream> spdy_stream1 =
1851 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 1841 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
1852 session, url1, MEDIUM, BoundNetLog()); 1842 session, url1, MEDIUM, BoundNetLog());
1853 ASSERT_TRUE(spdy_stream1.get() != NULL); 1843 ASSERT_TRUE(spdy_stream1.get() != NULL);
1854 EXPECT_EQ(0u, spdy_stream1->stream_id()); 1844 EXPECT_EQ(0u, spdy_stream1->stream_id());
1855 1845
1856 GURL url2("http://www.google.com"); 1846 GURL url2(kDefaultURL);
1857 base::WeakPtr<SpdyStream> spdy_stream2 = 1847 base::WeakPtr<SpdyStream> spdy_stream2 =
1858 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 1848 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
1859 session, url2, MEDIUM, BoundNetLog()); 1849 session, url2, MEDIUM, BoundNetLog());
1860 ASSERT_TRUE(spdy_stream2.get() != NULL); 1850 ASSERT_TRUE(spdy_stream2.get() != NULL);
1861 EXPECT_EQ(0u, spdy_stream2->stream_id()); 1851 EXPECT_EQ(0u, spdy_stream2->stream_id());
1862 1852
1863 // Make |spdy_stream1| close |spdy_stream2|. 1853 // Make |spdy_stream1| close |spdy_stream2|.
1864 test::ClosingDelegate delegate1(spdy_stream2); 1854 test::ClosingDelegate delegate1(spdy_stream2);
1865 spdy_stream1->SetDelegate(&delegate1); 1855 spdy_stream1->SetDelegate(&delegate1);
1866 1856
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
1931 }; 1921 };
1932 1922
1933 MockRead reads[] = { 1923 MockRead reads[] = {
1934 MockRead(ASYNC, 0, 1) // EOF 1924 MockRead(ASYNC, 0, 1) // EOF
1935 }; 1925 };
1936 DeterministicSocketData data(reads, arraysize(reads), 1926 DeterministicSocketData data(reads, arraysize(reads),
1937 writes, arraysize(writes)); 1927 writes, arraysize(writes));
1938 data.set_connect_data(connect_data); 1928 data.set_connect_data(connect_data);
1939 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 1929 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
1940 1930
1941 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
1942 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
1943
1944 CreateDeterministicNetworkSession(); 1931 CreateDeterministicNetworkSession();
1945 1932
1946 base::WeakPtr<SpdySession> session = 1933 base::WeakPtr<SpdySession> session =
1947 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 1934 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
1948 1935
1949 GURL url("http://www.google.com"); 1936 GURL url(kDefaultURL);
1950 base::WeakPtr<SpdyStream> spdy_stream = 1937 base::WeakPtr<SpdyStream> spdy_stream =
1951 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 1938 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
1952 session, url, MEDIUM, BoundNetLog()); 1939 session, url, MEDIUM, BoundNetLog());
1953 ASSERT_TRUE(spdy_stream.get() != NULL); 1940 ASSERT_TRUE(spdy_stream.get() != NULL);
1954 EXPECT_EQ(0u, spdy_stream->stream_id()); 1941 EXPECT_EQ(0u, spdy_stream->stream_id());
1955 1942
1956 SessionClosingDelegate delegate(spdy_stream, session); 1943 SessionClosingDelegate delegate(spdy_stream, session);
1957 spdy_stream->SetDelegate(&delegate); 1944 spdy_stream->SetDelegate(&delegate);
1958 1945
1959 scoped_ptr<SpdyHeaderBlock> headers( 1946 scoped_ptr<SpdyHeaderBlock> headers(
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
2107 CreateMockRead(*resp3, 8), 2094 CreateMockRead(*resp3, 8),
2108 CreateMockRead(*body3, 9), 2095 CreateMockRead(*body3, 9),
2109 MockRead(ASYNC, 0, 10) // EOF 2096 MockRead(ASYNC, 0, 10) // EOF
2110 }; 2097 };
2111 2098
2112 DeterministicSocketData data(reads, arraysize(reads), 2099 DeterministicSocketData data(reads, arraysize(reads),
2113 writes, arraysize(writes)); 2100 writes, arraysize(writes));
2114 data.set_connect_data(connect_data); 2101 data.set_connect_data(connect_data);
2115 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 2102 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
2116 2103
2117 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
2118 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
2119
2120 CreateDeterministicNetworkSession(); 2104 CreateDeterministicNetworkSession();
2121 2105
2122 base::WeakPtr<SpdySession> session = 2106 base::WeakPtr<SpdySession> session =
2123 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 2107 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
2124 2108
2125 // Read the settings frame. 2109 // Read the settings frame.
2126 data.RunFor(1); 2110 data.RunFor(1);
2127 2111
2128 GURL url1("http://www.google.com"); 2112 GURL url1(kDefaultURL);
2129 base::WeakPtr<SpdyStream> spdy_stream1 = 2113 base::WeakPtr<SpdyStream> spdy_stream1 =
2130 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 2114 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
2131 session, url1, LOWEST, BoundNetLog()); 2115 session, url1, LOWEST, BoundNetLog());
2132 ASSERT_TRUE(spdy_stream1.get() != NULL); 2116 ASSERT_TRUE(spdy_stream1.get() != NULL);
2133 EXPECT_EQ(0u, spdy_stream1->stream_id()); 2117 EXPECT_EQ(0u, spdy_stream1->stream_id());
2134 test::StreamDelegateDoNothing delegate1(spdy_stream1); 2118 test::StreamDelegateDoNothing delegate1(spdy_stream1);
2135 spdy_stream1->SetDelegate(&delegate1); 2119 spdy_stream1->SetDelegate(&delegate1);
2136 2120
2137 TestCompletionCallback callback2; 2121 TestCompletionCallback callback2;
2138 GURL url2("http://www.google.com"); 2122 GURL url2(kDefaultURL);
2139 SpdyStreamRequest request2; 2123 SpdyStreamRequest request2;
2140 ASSERT_EQ(ERR_IO_PENDING, 2124 ASSERT_EQ(ERR_IO_PENDING,
2141 request2.StartRequest( 2125 request2.StartRequest(
2142 SPDY_REQUEST_RESPONSE_STREAM, 2126 SPDY_REQUEST_RESPONSE_STREAM,
2143 session, url2, LOWEST, BoundNetLog(), callback2.callback())); 2127 session, url2, LOWEST, BoundNetLog(), callback2.callback()));
2144 2128
2145 TestCompletionCallback callback3; 2129 TestCompletionCallback callback3;
2146 GURL url3("http://www.google.com"); 2130 GURL url3(kDefaultURL);
2147 SpdyStreamRequest request3; 2131 SpdyStreamRequest request3;
2148 ASSERT_EQ(ERR_IO_PENDING, 2132 ASSERT_EQ(ERR_IO_PENDING,
2149 request3.StartRequest( 2133 request3.StartRequest(
2150 SPDY_REQUEST_RESPONSE_STREAM, 2134 SPDY_REQUEST_RESPONSE_STREAM,
2151 session, url3, LOWEST, BoundNetLog(), callback3.callback())); 2135 session, url3, LOWEST, BoundNetLog(), callback3.callback()));
2152 2136
2153 EXPECT_EQ(0u, session->num_active_streams()); 2137 EXPECT_EQ(0u, session->num_active_streams());
2154 EXPECT_EQ(1u, session->num_created_streams()); 2138 EXPECT_EQ(1u, session->num_created_streams());
2155 EXPECT_EQ(2u, session->pending_create_stream_queue_size(LOWEST)); 2139 EXPECT_EQ(2u, session->pending_create_stream_queue_size(LOWEST));
2156 2140
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
2230 MockRead reads[] = { 2214 MockRead reads[] = {
2231 MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever. 2215 MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever.
2232 }; 2216 };
2233 2217
2234 StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0); 2218 StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0);
2235 MockConnect connect_data(SYNCHRONOUS, OK); 2219 MockConnect connect_data(SYNCHRONOUS, OK);
2236 2220
2237 data.set_connect_data(connect_data); 2221 data.set_connect_data(connect_data);
2238 session_deps_.socket_factory->AddSocketDataProvider(&data); 2222 session_deps_.socket_factory->AddSocketDataProvider(&data);
2239 2223
2240 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
2241 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
2242
2243 CreateNetworkSession(); 2224 CreateNetworkSession();
2244 2225
2245 base::WeakPtr<SpdySession> session = 2226 base::WeakPtr<SpdySession> session =
2246 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 2227 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
2247 2228
2248 // Leave room for only one more stream to be created. 2229 // Leave room for only one more stream to be created.
2249 for (size_t i = 0; i < kInitialMaxConcurrentStreams - 1; ++i) { 2230 for (size_t i = 0; i < kInitialMaxConcurrentStreams - 1; ++i) {
2250 base::WeakPtr<SpdyStream> spdy_stream = 2231 base::WeakPtr<SpdyStream> spdy_stream =
2251 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, 2232 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM,
2252 session, test_url_, MEDIUM, BoundNetLog()); 2233 session, test_url_, MEDIUM, BoundNetLog());
2253 ASSERT_TRUE(spdy_stream != NULL); 2234 ASSERT_TRUE(spdy_stream != NULL);
2254 } 2235 }
2255 2236
2256 GURL url1("http://www.google.com"); 2237 GURL url1(kDefaultURL);
2257 base::WeakPtr<SpdyStream> spdy_stream1 = 2238 base::WeakPtr<SpdyStream> spdy_stream1 =
2258 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, 2239 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM,
2259 session, url1, LOWEST, BoundNetLog()); 2240 session, url1, LOWEST, BoundNetLog());
2260 ASSERT_TRUE(spdy_stream1.get() != NULL); 2241 ASSERT_TRUE(spdy_stream1.get() != NULL);
2261 EXPECT_EQ(0u, spdy_stream1->stream_id()); 2242 EXPECT_EQ(0u, spdy_stream1->stream_id());
2262 2243
2263 TestCompletionCallback callback2; 2244 TestCompletionCallback callback2;
2264 GURL url2("http://www.google.com"); 2245 GURL url2(kDefaultURL);
2265 SpdyStreamRequest request2; 2246 SpdyStreamRequest request2;
2266 ASSERT_EQ(ERR_IO_PENDING, 2247 ASSERT_EQ(ERR_IO_PENDING,
2267 request2.StartRequest( 2248 request2.StartRequest(
2268 SPDY_BIDIRECTIONAL_STREAM, session, url2, LOWEST, BoundNetLog(), 2249 SPDY_BIDIRECTIONAL_STREAM, session, url2, LOWEST, BoundNetLog(),
2269 callback2.callback())); 2250 callback2.callback()));
2270 2251
2271 TestCompletionCallback callback3; 2252 TestCompletionCallback callback3;
2272 GURL url3("http://www.google.com"); 2253 GURL url3(kDefaultURL);
2273 SpdyStreamRequest request3; 2254 SpdyStreamRequest request3;
2274 ASSERT_EQ(ERR_IO_PENDING, 2255 ASSERT_EQ(ERR_IO_PENDING,
2275 request3.StartRequest( 2256 request3.StartRequest(
2276 SPDY_BIDIRECTIONAL_STREAM, session, url3, LOWEST, BoundNetLog(), 2257 SPDY_BIDIRECTIONAL_STREAM, session, url3, LOWEST, BoundNetLog(),
2277 callback3.callback())); 2258 callback3.callback()));
2278 2259
2279 EXPECT_EQ(0u, session->num_active_streams()); 2260 EXPECT_EQ(0u, session->num_active_streams());
2280 EXPECT_EQ(kInitialMaxConcurrentStreams, session->num_created_streams()); 2261 EXPECT_EQ(kInitialMaxConcurrentStreams, session->num_created_streams());
2281 EXPECT_EQ(2u, session->pending_create_stream_queue_size(LOWEST)); 2262 EXPECT_EQ(2u, session->pending_create_stream_queue_size(LOWEST));
2282 2263
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
2351 MockRead(ASYNC, 0, 6) // EOF 2332 MockRead(ASYNC, 0, 6) // EOF
2352 }; 2333 };
2353 2334
2354 // Create SpdySession and SpdyStream and send the request. 2335 // Create SpdySession and SpdyStream and send the request.
2355 DeterministicSocketData data(reads, arraysize(reads), 2336 DeterministicSocketData data(reads, arraysize(reads),
2356 writes, arraysize(writes)); 2337 writes, arraysize(writes));
2357 data.set_connect_data(connect_data); 2338 data.set_connect_data(connect_data);
2358 session_deps_.host_resolver->set_synchronous_mode(true); 2339 session_deps_.host_resolver->set_synchronous_mode(true);
2359 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 2340 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
2360 2341
2361 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
2362 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
2363
2364 CreateDeterministicNetworkSession(); 2342 CreateDeterministicNetworkSession();
2365 2343
2366 base::WeakPtr<SpdySession> session = 2344 base::WeakPtr<SpdySession> session =
2367 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 2345 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
2368 2346
2369 GURL url1("http://www.google.com"); 2347 GURL url1(kDefaultURL);
2370 base::WeakPtr<SpdyStream> spdy_stream1 = 2348 base::WeakPtr<SpdyStream> spdy_stream1 =
2371 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 2349 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
2372 session, url1, MEDIUM, BoundNetLog()); 2350 session, url1, MEDIUM, BoundNetLog());
2373 ASSERT_TRUE(spdy_stream1.get() != NULL); 2351 ASSERT_TRUE(spdy_stream1.get() != NULL);
2374 EXPECT_EQ(0u, spdy_stream1->stream_id()); 2352 EXPECT_EQ(0u, spdy_stream1->stream_id());
2375 test::StreamDelegateDoNothing delegate1(spdy_stream1); 2353 test::StreamDelegateDoNothing delegate1(spdy_stream1);
2376 spdy_stream1->SetDelegate(&delegate1); 2354 spdy_stream1->SetDelegate(&delegate1);
2377 2355
2378 scoped_ptr<SpdyHeaderBlock> headers1( 2356 scoped_ptr<SpdyHeaderBlock> headers1(
2379 spdy_util_.ConstructGetHeaderBlock(url1.spec())); 2357 spdy_util_.ConstructGetHeaderBlock(url1.spec()));
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
2445 MockRead(ASYNC, 0, 7) // EOF 2423 MockRead(ASYNC, 0, 7) // EOF
2446 }; 2424 };
2447 2425
2448 // Create SpdySession and SpdyStream and send the request. 2426 // Create SpdySession and SpdyStream and send the request.
2449 DeterministicSocketData data(reads, arraysize(reads), 2427 DeterministicSocketData data(reads, arraysize(reads),
2450 writes, arraysize(writes)); 2428 writes, arraysize(writes));
2451 data.set_connect_data(connect_data); 2429 data.set_connect_data(connect_data);
2452 session_deps_.host_resolver->set_synchronous_mode(true); 2430 session_deps_.host_resolver->set_synchronous_mode(true);
2453 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 2431 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
2454 2432
2455 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
2456 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
2457
2458 CreateDeterministicNetworkSession(); 2433 CreateDeterministicNetworkSession();
2459 2434
2460 base::WeakPtr<SpdySession> session = 2435 base::WeakPtr<SpdySession> session =
2461 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 2436 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
2462 2437
2463 GURL url1("http://www.google.com"); 2438 GURL url1(kDefaultURL);
2464 base::WeakPtr<SpdyStream> spdy_stream1 = 2439 base::WeakPtr<SpdyStream> spdy_stream1 =
2465 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 2440 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
2466 session, url1, MEDIUM, BoundNetLog()); 2441 session, url1, MEDIUM, BoundNetLog());
2467 ASSERT_TRUE(spdy_stream1.get() != NULL); 2442 ASSERT_TRUE(spdy_stream1.get() != NULL);
2468 EXPECT_EQ(0u, spdy_stream1->stream_id()); 2443 EXPECT_EQ(0u, spdy_stream1->stream_id());
2469 test::StreamDelegateDoNothing delegate1(spdy_stream1); 2444 test::StreamDelegateDoNothing delegate1(spdy_stream1);
2470 spdy_stream1->SetDelegate(&delegate1); 2445 spdy_stream1->SetDelegate(&delegate1);
2471 2446
2472 scoped_ptr<SpdyHeaderBlock> headers1( 2447 scoped_ptr<SpdyHeaderBlock> headers1(
2473 spdy_util_.ConstructGetHeaderBlock(url1.spec())); 2448 spdy_util_.ConstructGetHeaderBlock(url1.spec()));
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
2561 MockRead(ASYNC, 0, 12) // EOF 2536 MockRead(ASYNC, 0, 12) // EOF
2562 }; 2537 };
2563 2538
2564 // Create SpdySession and SpdyStream and send the request. 2539 // Create SpdySession and SpdyStream and send the request.
2565 DeterministicSocketData data(reads, arraysize(reads), 2540 DeterministicSocketData data(reads, arraysize(reads),
2566 writes, arraysize(writes)); 2541 writes, arraysize(writes));
2567 data.set_connect_data(connect_data); 2542 data.set_connect_data(connect_data);
2568 session_deps_.host_resolver->set_synchronous_mode(true); 2543 session_deps_.host_resolver->set_synchronous_mode(true);
2569 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 2544 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
2570 2545
2571 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
2572 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
2573
2574 CreateDeterministicNetworkSession(); 2546 CreateDeterministicNetworkSession();
2575 2547
2576 base::WeakPtr<SpdySession> session = 2548 base::WeakPtr<SpdySession> session =
2577 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 2549 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
2578 2550
2579 GURL url1("http://www.google.com"); 2551 GURL url1(kDefaultURL);
2580 base::WeakPtr<SpdyStream> spdy_stream1 = 2552 base::WeakPtr<SpdyStream> spdy_stream1 =
2581 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 2553 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
2582 session, url1, MEDIUM, BoundNetLog()); 2554 session, url1, MEDIUM, BoundNetLog());
2583 ASSERT_TRUE(spdy_stream1.get() != NULL); 2555 ASSERT_TRUE(spdy_stream1.get() != NULL);
2584 EXPECT_EQ(0u, spdy_stream1->stream_id()); 2556 EXPECT_EQ(0u, spdy_stream1->stream_id());
2585 test::StreamDelegateDoNothing delegate1(spdy_stream1); 2557 test::StreamDelegateDoNothing delegate1(spdy_stream1);
2586 spdy_stream1->SetDelegate(&delegate1); 2558 spdy_stream1->SetDelegate(&delegate1);
2587 2559
2588 scoped_ptr<SpdyHeaderBlock> headers1( 2560 scoped_ptr<SpdyHeaderBlock> headers1(
2589 spdy_util_.ConstructGetHeaderBlock(url1.spec())); 2561 spdy_util_.ConstructGetHeaderBlock(url1.spec()));
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
2635 CreateMockRead(*goaway, 3), 2607 CreateMockRead(*goaway, 3),
2636 }; 2608 };
2637 2609
2638 // Create SpdySession and SpdyStream and send the request. 2610 // Create SpdySession and SpdyStream and send the request.
2639 DeterministicSocketData data(reads, arraysize(reads), 2611 DeterministicSocketData data(reads, arraysize(reads),
2640 writes, arraysize(writes)); 2612 writes, arraysize(writes));
2641 data.set_connect_data(connect_data); 2613 data.set_connect_data(connect_data);
2642 session_deps_.host_resolver->set_synchronous_mode(true); 2614 session_deps_.host_resolver->set_synchronous_mode(true);
2643 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 2615 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
2644 2616
2645 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
2646 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
2647
2648 CreateDeterministicNetworkSession(); 2617 CreateDeterministicNetworkSession();
2649 2618
2650 base::WeakPtr<SpdySession> session = 2619 base::WeakPtr<SpdySession> session =
2651 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 2620 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
2652 2621
2653 GURL url1("http://www.google.com"); 2622 GURL url1(kDefaultURL);
2654 base::WeakPtr<SpdyStream> spdy_stream1 = 2623 base::WeakPtr<SpdyStream> spdy_stream1 =
2655 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 2624 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
2656 session, url1, MEDIUM, BoundNetLog()); 2625 session, url1, MEDIUM, BoundNetLog());
2657 test::StreamDelegateDoNothing delegate1(spdy_stream1); 2626 test::StreamDelegateDoNothing delegate1(spdy_stream1);
2658 spdy_stream1->SetDelegate(&delegate1); 2627 spdy_stream1->SetDelegate(&delegate1);
2659 ASSERT_TRUE(spdy_stream1.get() != NULL); 2628 ASSERT_TRUE(spdy_stream1.get() != NULL);
2660 EXPECT_EQ(0u, spdy_stream1->stream_id()); 2629 EXPECT_EQ(0u, spdy_stream1->stream_id());
2661 2630
2662 scoped_ptr<SpdyHeaderBlock> headers1( 2631 scoped_ptr<SpdyHeaderBlock> headers1(
2663 spdy_util_.ConstructGetHeaderBlock(url1.spec())); 2632 spdy_util_.ConstructGetHeaderBlock(url1.spec()));
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
2881 session_deps_.socket_factory->AddSocketDataProvider(&http_data); 2850 session_deps_.socket_factory->AddSocketDataProvider(&http_data);
2882 2851
2883 2852
2884 CreateNetworkSession(); 2853 CreateNetworkSession();
2885 2854
2886 TransportClientSocketPool* pool = 2855 TransportClientSocketPool* pool =
2887 http_session_->GetTransportSocketPool( 2856 http_session_->GetTransportSocketPool(
2888 HttpNetworkSession::NORMAL_SOCKET_POOL); 2857 HttpNetworkSession::NORMAL_SOCKET_POOL);
2889 2858
2890 // Create a SPDY session. 2859 // Create a SPDY session.
2891 GURL url1("http://www.google.com"); 2860 GURL url1(kDefaultURL);
2892 SpdySessionKey key1(HostPortPair(url1.host(), 80), 2861 SpdySessionKey key1(HostPortPair(url1.host(), 80),
2893 ProxyServer::Direct(), kPrivacyModeDisabled); 2862 ProxyServer::Direct(), kPrivacyModeDisabled);
2894 base::WeakPtr<SpdySession> session1 = 2863 base::WeakPtr<SpdySession> session1 =
2895 CreateInsecureSpdySession(http_session_, key1, BoundNetLog()); 2864 CreateInsecureSpdySession(http_session_, key1, BoundNetLog());
2896 EXPECT_FALSE(pool->IsStalled()); 2865 EXPECT_FALSE(pool->IsStalled());
2897 2866
2898 // Create a stream using the session, and send a request. 2867 // Create a stream using the session, and send a request.
2899 2868
2900 TestCompletionCallback callback1; 2869 TestCompletionCallback callback1;
2901 base::WeakPtr<SpdyStream> spdy_stream1 = 2870 base::WeakPtr<SpdyStream> spdy_stream1 =
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
2985 class StreamCreatingDelegate : public test::StreamDelegateDoNothing { 2954 class StreamCreatingDelegate : public test::StreamDelegateDoNothing {
2986 public: 2955 public:
2987 StreamCreatingDelegate(const base::WeakPtr<SpdyStream>& stream, 2956 StreamCreatingDelegate(const base::WeakPtr<SpdyStream>& stream,
2988 const base::WeakPtr<SpdySession>& session) 2957 const base::WeakPtr<SpdySession>& session)
2989 : StreamDelegateDoNothing(stream), 2958 : StreamDelegateDoNothing(stream),
2990 session_(session) {} 2959 session_(session) {}
2991 2960
2992 virtual ~StreamCreatingDelegate() {} 2961 virtual ~StreamCreatingDelegate() {}
2993 2962
2994 virtual void OnClose(int status) OVERRIDE { 2963 virtual void OnClose(int status) OVERRIDE {
2995 GURL url("http://www.google.com"); 2964 GURL url(kDefaultURL);
2996 ignore_result( 2965 ignore_result(
2997 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 2966 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
2998 session_, url, MEDIUM, BoundNetLog())); 2967 session_, url, MEDIUM, BoundNetLog()));
2999 } 2968 }
3000 2969
3001 private: 2970 private:
3002 const base::WeakPtr<SpdySession> session_; 2971 const base::WeakPtr<SpdySession> session_;
3003 }; 2972 };
3004 2973
3005 // Create another stream in response to a stream being reset. Nothing 2974 // Create another stream in response to a stream being reset. Nothing
(...skipping 14 matching lines...) Expand all
3020 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_REFUSED_STREAM)); 2989 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_REFUSED_STREAM));
3021 MockRead reads[] = { 2990 MockRead reads[] = {
3022 CreateMockRead(*rst, 1), 2991 CreateMockRead(*rst, 1),
3023 MockRead(ASYNC, 0, 2) // EOF 2992 MockRead(ASYNC, 0, 2) // EOF
3024 }; 2993 };
3025 DeterministicSocketData data(reads, arraysize(reads), 2994 DeterministicSocketData data(reads, arraysize(reads),
3026 writes, arraysize(writes)); 2995 writes, arraysize(writes));
3027 data.set_connect_data(connect_data); 2996 data.set_connect_data(connect_data);
3028 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 2997 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
3029 2998
3030 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
3031 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
3032
3033 CreateDeterministicNetworkSession(); 2999 CreateDeterministicNetworkSession();
3034 3000
3035 base::WeakPtr<SpdySession> session = 3001 base::WeakPtr<SpdySession> session =
3036 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 3002 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
3037 3003
3038 GURL url("http://www.google.com"); 3004 GURL url(kDefaultURL);
3039 base::WeakPtr<SpdyStream> spdy_stream = 3005 base::WeakPtr<SpdyStream> spdy_stream =
3040 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 3006 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
3041 session, url, MEDIUM, BoundNetLog()); 3007 session, url, MEDIUM, BoundNetLog());
3042 ASSERT_TRUE(spdy_stream.get() != NULL); 3008 ASSERT_TRUE(spdy_stream.get() != NULL);
3043 EXPECT_EQ(0u, spdy_stream->stream_id()); 3009 EXPECT_EQ(0u, spdy_stream->stream_id());
3044 3010
3045 StreamCreatingDelegate delegate(spdy_stream, session); 3011 StreamCreatingDelegate delegate(spdy_stream, session);
3046 spdy_stream->SetDelegate(&delegate); 3012 spdy_stream->SetDelegate(&delegate);
3047 3013
3048 scoped_ptr<SpdyHeaderBlock> headers( 3014 scoped_ptr<SpdyHeaderBlock> headers(
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
3089 MockRead(ASYNC, 0, 1) // EOF 3055 MockRead(ASYNC, 0, 1) // EOF
3090 }; 3056 };
3091 3057
3092 session_deps_.host_resolver->set_synchronous_mode(true); 3058 session_deps_.host_resolver->set_synchronous_mode(true);
3093 3059
3094 scoped_ptr<DeterministicSocketData> data( 3060 scoped_ptr<DeterministicSocketData> data(
3095 new DeterministicSocketData(reads, arraysize(reads), NULL, 0)); 3061 new DeterministicSocketData(reads, arraysize(reads), NULL, 0));
3096 data->set_connect_data(connect_data); 3062 data->set_connect_data(connect_data);
3097 session_deps_.deterministic_socket_factory->AddSocketDataProvider(data.get()); 3063 session_deps_.deterministic_socket_factory->AddSocketDataProvider(data.get());
3098 3064
3099 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
3100 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
3101
3102 CreateDeterministicNetworkSession(); 3065 CreateDeterministicNetworkSession();
3103 3066
3104 base::WeakPtr<SpdySession> session = 3067 base::WeakPtr<SpdySession> session =
3105 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 3068 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
3106 base::WeakPtr<SpdyStream> spdy_stream1 = 3069 base::WeakPtr<SpdyStream> spdy_stream1 =
3107 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, 3070 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM,
3108 session, test_url_, MEDIUM, BoundNetLog()); 3071 session, test_url_, MEDIUM, BoundNetLog());
3109 ASSERT_TRUE(spdy_stream1.get() != NULL); 3072 ASSERT_TRUE(spdy_stream1.get() != NULL);
3110 TestCompletionCallback callback1; 3073 TestCompletionCallback callback1;
3111 EXPECT_NE(spdy_stream1->send_window_size(), window_size); 3074 EXPECT_NE(spdy_stream1->send_window_size(), window_size);
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
3151 kSessionFlowControlStreamId, 3114 kSessionFlowControlStreamId,
3152 kSpdySessionInitialWindowSize + delta_window_size)); 3115 kSpdySessionInitialWindowSize + delta_window_size));
3153 MockWrite writes[] = { 3116 MockWrite writes[] = {
3154 CreateMockWrite(*window_update, 0), 3117 CreateMockWrite(*window_update, 0),
3155 }; 3118 };
3156 DeterministicSocketData data(reads, arraysize(reads), 3119 DeterministicSocketData data(reads, arraysize(reads),
3157 writes, arraysize(writes)); 3120 writes, arraysize(writes));
3158 data.set_connect_data(connect_data); 3121 data.set_connect_data(connect_data);
3159 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 3122 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
3160 3123
3161 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
3162 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
3163
3164 CreateDeterministicNetworkSession(); 3124 CreateDeterministicNetworkSession();
3165 base::WeakPtr<SpdySession> session = 3125 base::WeakPtr<SpdySession> session =
3166 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 3126 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
3167 EXPECT_EQ(SpdySession::FLOW_CONTROL_STREAM_AND_SESSION, 3127 EXPECT_EQ(SpdySession::FLOW_CONTROL_STREAM_AND_SESSION,
3168 session->flow_control_state()); 3128 session->flow_control_state());
3169 3129
3170 EXPECT_EQ(kSpdySessionInitialWindowSize, session->session_recv_window_size_); 3130 EXPECT_EQ(kSpdySessionInitialWindowSize, session->session_recv_window_size_);
3171 EXPECT_EQ(0, session->session_unacked_recv_window_bytes_); 3131 EXPECT_EQ(0, session->session_unacked_recv_window_bytes_);
3172 3132
3173 session->IncreaseRecvWindowSize(delta_window_size); 3133 session->IncreaseRecvWindowSize(delta_window_size);
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
3241 MockConnect connect_data(SYNCHRONOUS, OK); 3201 MockConnect connect_data(SYNCHRONOUS, OK);
3242 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyBodyFrame(1, false)); 3202 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyBodyFrame(1, false));
3243 MockRead reads[] = { 3203 MockRead reads[] = {
3244 CreateMockRead(*resp, 0), 3204 CreateMockRead(*resp, 0),
3245 MockRead(ASYNC, 0, 1) // EOF 3205 MockRead(ASYNC, 0, 1) // EOF
3246 }; 3206 };
3247 DeterministicSocketData data(reads, arraysize(reads), NULL, 0); 3207 DeterministicSocketData data(reads, arraysize(reads), NULL, 0);
3248 data.set_connect_data(connect_data); 3208 data.set_connect_data(connect_data);
3249 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 3209 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
3250 3210
3251 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
3252 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
3253
3254 CreateDeterministicNetworkSession(); 3211 CreateDeterministicNetworkSession();
3255 base::WeakPtr<SpdySession> session = 3212 base::WeakPtr<SpdySession> session =
3256 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 3213 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
3257 EXPECT_EQ(SpdySession::FLOW_CONTROL_STREAM_AND_SESSION, 3214 EXPECT_EQ(SpdySession::FLOW_CONTROL_STREAM_AND_SESSION,
3258 session->flow_control_state()); 3215 session->flow_control_state());
3259 3216
3260 EXPECT_EQ(kSpdySessionInitialWindowSize, session->session_recv_window_size_); 3217 EXPECT_EQ(kSpdySessionInitialWindowSize, session->session_recv_window_size_);
3261 EXPECT_EQ(0, session->session_unacked_recv_window_bytes_); 3218 EXPECT_EQ(0, session->session_unacked_recv_window_bytes_);
3262 3219
3263 data.RunFor(1); 3220 data.RunFor(1);
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
3319 MockRead(ASYNC, 0, 4) // EOF 3276 MockRead(ASYNC, 0, 4) // EOF
3320 }; 3277 };
3321 3278
3322 // Create SpdySession and SpdyStream and send the request. 3279 // Create SpdySession and SpdyStream and send the request.
3323 DeterministicSocketData data(reads, arraysize(reads), 3280 DeterministicSocketData data(reads, arraysize(reads),
3324 writes, arraysize(writes)); 3281 writes, arraysize(writes));
3325 data.set_connect_data(connect_data); 3282 data.set_connect_data(connect_data);
3326 session_deps_.host_resolver->set_synchronous_mode(true); 3283 session_deps_.host_resolver->set_synchronous_mode(true);
3327 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 3284 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
3328 3285
3329 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
3330 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
3331
3332 CreateDeterministicNetworkSession(); 3286 CreateDeterministicNetworkSession();
3333 3287
3334 base::WeakPtr<SpdySession> session = 3288 base::WeakPtr<SpdySession> session =
3335 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 3289 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
3336 3290
3337 GURL url(kStreamUrl); 3291 GURL url(kStreamUrl);
3338 base::WeakPtr<SpdyStream> stream = 3292 base::WeakPtr<SpdyStream> stream =
3339 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, 3293 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM,
3340 session, url, MEDIUM, BoundNetLog()); 3294 session, url, MEDIUM, BoundNetLog());
3341 ASSERT_TRUE(stream.get() != NULL); 3295 ASSERT_TRUE(stream.get() != NULL);
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
3397 MockRead(ASYNC, 0, 2) // EOF 3351 MockRead(ASYNC, 0, 2) // EOF
3398 }; 3352 };
3399 3353
3400 // Create SpdySession and SpdyStream and send the request. 3354 // Create SpdySession and SpdyStream and send the request.
3401 DeterministicSocketData data(reads, arraysize(reads), 3355 DeterministicSocketData data(reads, arraysize(reads),
3402 writes, arraysize(writes)); 3356 writes, arraysize(writes));
3403 data.set_connect_data(connect_data); 3357 data.set_connect_data(connect_data);
3404 session_deps_.host_resolver->set_synchronous_mode(true); 3358 session_deps_.host_resolver->set_synchronous_mode(true);
3405 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 3359 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
3406 3360
3407 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
3408 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
3409
3410 CreateDeterministicNetworkSession(); 3361 CreateDeterministicNetworkSession();
3411 3362
3412 base::WeakPtr<SpdySession> session = 3363 base::WeakPtr<SpdySession> session =
3413 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 3364 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
3414 3365
3415 GURL url(kStreamUrl); 3366 GURL url(kStreamUrl);
3416 base::WeakPtr<SpdyStream> stream = 3367 base::WeakPtr<SpdyStream> stream =
3417 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, 3368 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM,
3418 session, url, MEDIUM, BoundNetLog()); 3369 session, url, MEDIUM, BoundNetLog());
3419 ASSERT_TRUE(stream.get() != NULL); 3370 ASSERT_TRUE(stream.get() != NULL);
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
3489 MockRead(ASYNC, 0, 5) // EOF 3440 MockRead(ASYNC, 0, 5) // EOF
3490 }; 3441 };
3491 3442
3492 // Create SpdySession and SpdyStream and send the request. 3443 // Create SpdySession and SpdyStream and send the request.
3493 DeterministicSocketData data(reads, arraysize(reads), 3444 DeterministicSocketData data(reads, arraysize(reads),
3494 writes, arraysize(writes)); 3445 writes, arraysize(writes));
3495 data.set_connect_data(connect_data); 3446 data.set_connect_data(connect_data);
3496 session_deps_.host_resolver->set_synchronous_mode(true); 3447 session_deps_.host_resolver->set_synchronous_mode(true);
3497 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 3448 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
3498 3449
3499 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
3500 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
3501
3502 CreateDeterministicNetworkSession(); 3450 CreateDeterministicNetworkSession();
3503 3451
3504 base::WeakPtr<SpdySession> session = 3452 base::WeakPtr<SpdySession> session =
3505 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 3453 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
3506 3454
3507 GURL url(kStreamUrl); 3455 GURL url(kStreamUrl);
3508 base::WeakPtr<SpdyStream> stream = 3456 base::WeakPtr<SpdyStream> stream =
3509 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, 3457 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM,
3510 session, url, MEDIUM, BoundNetLog()); 3458 session, url, MEDIUM, BoundNetLog());
3511 ASSERT_TRUE(stream.get() != NULL); 3459 ASSERT_TRUE(stream.get() != NULL);
(...skipping 668 matching lines...) Expand 10 before | Expand all | Expand 10 after
4180 TEST(MapRstStreamStatusToProtocolError, MapsValues) { 4128 TEST(MapRstStreamStatusToProtocolError, MapsValues) {
4181 CHECK_EQ(STATUS_CODE_PROTOCOL_ERROR, 4129 CHECK_EQ(STATUS_CODE_PROTOCOL_ERROR,
4182 MapRstStreamStatusToProtocolError( 4130 MapRstStreamStatusToProtocolError(
4183 RST_STREAM_PROTOCOL_ERROR)); 4131 RST_STREAM_PROTOCOL_ERROR));
4184 CHECK_EQ(STATUS_CODE_FRAME_TOO_LARGE, 4132 CHECK_EQ(STATUS_CODE_FRAME_TOO_LARGE,
4185 MapRstStreamStatusToProtocolError( 4133 MapRstStreamStatusToProtocolError(
4186 RST_STREAM_FRAME_TOO_LARGE)); 4134 RST_STREAM_FRAME_TOO_LARGE));
4187 } 4135 }
4188 4136
4189 } // namespace net 4137 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/spdy_session_pool.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698