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

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: Rename MakeUnavailable and update comment 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
« net/spdy/spdy_session.cc ('K') | « 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);
akalin 2014/01/29 23:26:18 nice cleanup!
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().
akalin 2014/01/29 23:26:18 change , to ;
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
879 // Shift time so that a ping will be sent out. 911 // Shift time so that a ping will be sent out.
880 g_time_delta = base::TimeDelta::FromSeconds(11); 912 g_time_delta = base::TimeDelta::FromSeconds(11);
881 913
882 data.RunFor(2); 914 data.RunFor(2);
883 915
884 session->CloseSessionOnError(ERR_ABORTED, "Aborting"); 916 session->CloseSessionOnError(ERR_ABORTED, "Aborting");
885 } 917 }
886 918
887 TEST_P(SpdySessionTest, DeleteExpiredPushStreams) { 919 TEST_P(SpdySessionTest, DeleteExpiredPushStreams) {
888 session_deps_.host_resolver->set_synchronous_mode(true); 920 session_deps_.host_resolver->set_synchronous_mode(true);
889 921
890 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
891 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
892 session_deps_.time_func = TheNearFuture; 922 session_deps_.time_func = TheNearFuture;
893 923
894 CreateNetworkSession(); 924 CreateNetworkSession();
895 925
896 base::WeakPtr<SpdySession> session = 926 base::WeakPtr<SpdySession> session =
897 CreateFakeSpdySession(spdy_session_pool_, key_); 927 CreateFakeSpdySession(spdy_session_pool_, key_);
898 928
899 session->buffered_spdy_framer_.reset( 929 session->buffered_spdy_framer_.reset(
900 new BufferedSpdyFramer(spdy_util_.spdy_version(), false)); 930 new BufferedSpdyFramer(spdy_util_.spdy_version(), false));
901 931
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
951 981
952 MockConnect connect_data(SYNCHRONOUS, OK); 982 MockConnect connect_data(SYNCHRONOUS, OK);
953 MockRead reads[] = { 983 MockRead reads[] = {
954 MockRead(ASYNC, 0, 0, 0) // EOF 984 MockRead(ASYNC, 0, 0, 0) // EOF
955 }; 985 };
956 scoped_ptr<SpdyFrame> write_ping(spdy_util_.ConstructSpdyPing(1)); 986 scoped_ptr<SpdyFrame> write_ping(spdy_util_.ConstructSpdyPing(1));
957 DeterministicSocketData data(reads, arraysize(reads), NULL, 0); 987 DeterministicSocketData data(reads, arraysize(reads), NULL, 0);
958 data.set_connect_data(connect_data); 988 data.set_connect_data(connect_data);
959 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 989 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
960 990
961 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
962 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
963
964 CreateDeterministicNetworkSession(); 991 CreateDeterministicNetworkSession();
965 992
966 base::WeakPtr<SpdySession> session = 993 base::WeakPtr<SpdySession> session =
967 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 994 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
968 995
969 base::WeakPtr<SpdyStream> spdy_stream1 = 996 base::WeakPtr<SpdyStream> spdy_stream1 =
970 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, 997 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM,
971 session, test_url_, MEDIUM, BoundNetLog()); 998 session, test_url_, MEDIUM, BoundNetLog());
972 ASSERT_TRUE(spdy_stream1.get() != NULL); 999 ASSERT_TRUE(spdy_stream1.get() != NULL);
973 test::StreamDelegateSendImmediate delegate(spdy_stream1, NULL); 1000 test::StreamDelegateSendImmediate delegate(spdy_stream1, NULL);
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1018 MockRead reads[] = { 1045 MockRead reads[] = {
1019 CreateMockRead(*settings_frame, 0), 1046 CreateMockRead(*settings_frame, 0),
1020 MockRead(ASYNC, 0, 1), 1047 MockRead(ASYNC, 0, 1),
1021 }; 1048 };
1022 1049
1023 DeterministicSocketData data(reads, arraysize(reads), NULL, 0); 1050 DeterministicSocketData data(reads, arraysize(reads), NULL, 0);
1024 MockConnect connect_data(SYNCHRONOUS, OK); 1051 MockConnect connect_data(SYNCHRONOUS, OK);
1025 data.set_connect_data(connect_data); 1052 data.set_connect_data(connect_data);
1026 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 1053 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
1027 1054
1028 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
1029 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
1030
1031 CreateDeterministicNetworkSession(); 1055 CreateDeterministicNetworkSession();
1032 1056
1033 base::WeakPtr<SpdySession> session = 1057 base::WeakPtr<SpdySession> session =
1034 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 1058 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
1035 1059
1036 // Create the maximum number of concurrent streams. 1060 // Create the maximum number of concurrent streams.
1037 for (size_t i = 0; i < kInitialMaxConcurrentStreams; ++i) { 1061 for (size_t i = 0; i < kInitialMaxConcurrentStreams; ++i) {
1038 base::WeakPtr<SpdyStream> spdy_stream = 1062 base::WeakPtr<SpdyStream> spdy_stream =
1039 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, 1063 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM,
1040 session, test_url_, MEDIUM, BoundNetLog()); 1064 session, test_url_, MEDIUM, BoundNetLog());
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1075 MockRead reads[] = { 1099 MockRead reads[] = {
1076 CreateMockRead(*settings_frame, 0), 1100 CreateMockRead(*settings_frame, 0),
1077 MockRead(ASYNC, 0, 1), 1101 MockRead(ASYNC, 0, 1),
1078 }; 1102 };
1079 1103
1080 DeterministicSocketData data(reads, arraysize(reads), NULL, 0); 1104 DeterministicSocketData data(reads, arraysize(reads), NULL, 0);
1081 MockConnect connect_data(SYNCHRONOUS, OK); 1105 MockConnect connect_data(SYNCHRONOUS, OK);
1082 data.set_connect_data(connect_data); 1106 data.set_connect_data(connect_data);
1083 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 1107 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
1084 1108
1085 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
1086 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
1087
1088 CreateDeterministicNetworkSession(); 1109 CreateDeterministicNetworkSession();
1089 1110
1090 // Initialize the SpdySetting with the default. 1111 // Initialize the SpdySetting with the default.
1091 spdy_session_pool_->http_server_properties()->SetSpdySetting( 1112 spdy_session_pool_->http_server_properties()->SetSpdySetting(
1092 test_host_port_pair_, 1113 test_host_port_pair_,
1093 SETTINGS_MAX_CONCURRENT_STREAMS, 1114 SETTINGS_MAX_CONCURRENT_STREAMS,
1094 SETTINGS_FLAG_PLEASE_PERSIST, 1115 SETTINGS_FLAG_PLEASE_PERSIST,
1095 kInitialMaxConcurrentStreams); 1116 kInitialMaxConcurrentStreams);
1096 1117
1097 EXPECT_FALSE( 1118 EXPECT_FALSE(
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
1146 MockRead reads[] = { 1167 MockRead reads[] = {
1147 MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever. 1168 MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever.
1148 }; 1169 };
1149 1170
1150 StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0); 1171 StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0);
1151 MockConnect connect_data(SYNCHRONOUS, OK); 1172 MockConnect connect_data(SYNCHRONOUS, OK);
1152 1173
1153 data.set_connect_data(connect_data); 1174 data.set_connect_data(connect_data);
1154 session_deps_.socket_factory->AddSocketDataProvider(&data); 1175 session_deps_.socket_factory->AddSocketDataProvider(&data);
1155 1176
1156 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
1157 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
1158
1159 CreateNetworkSession(); 1177 CreateNetworkSession();
1160 1178
1161 // Initialize the SpdySetting with 1 max concurrent streams. 1179 // Initialize the SpdySetting with 1 max concurrent streams.
1162 spdy_session_pool_->http_server_properties()->SetSpdySetting( 1180 spdy_session_pool_->http_server_properties()->SetSpdySetting(
1163 test_host_port_pair_, 1181 test_host_port_pair_,
1164 SETTINGS_MAX_CONCURRENT_STREAMS, 1182 SETTINGS_MAX_CONCURRENT_STREAMS,
1165 SETTINGS_FLAG_PLEASE_PERSIST, 1183 SETTINGS_FLAG_PLEASE_PERSIST,
1166 1); 1184 1);
1167 1185
1168 base::WeakPtr<SpdySession> session = 1186 base::WeakPtr<SpdySession> session =
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
1249 spdy_util_.ConstructSpdySettings(server_settings)); 1267 spdy_util_.ConstructSpdySettings(server_settings));
1250 writes.push_back(CreateMockWrite(*server_settings_frame)); 1268 writes.push_back(CreateMockWrite(*server_settings_frame));
1251 1269
1252 session_deps_.stream_initial_recv_window_size = kInitialRecvWindowSize; 1270 session_deps_.stream_initial_recv_window_size = kInitialRecvWindowSize;
1253 1271
1254 StaticSocketDataProvider data(reads, arraysize(reads), 1272 StaticSocketDataProvider data(reads, arraysize(reads),
1255 vector_as_array(&writes), writes.size()); 1273 vector_as_array(&writes), writes.size());
1256 data.set_connect_data(connect_data); 1274 data.set_connect_data(connect_data);
1257 session_deps_.socket_factory->AddSocketDataProvider(&data); 1275 session_deps_.socket_factory->AddSocketDataProvider(&data);
1258 1276
1259 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
1260 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
1261
1262 CreateNetworkSession(); 1277 CreateNetworkSession();
1263 1278
1264 spdy_session_pool_->http_server_properties()->SetSpdySetting( 1279 spdy_session_pool_->http_server_properties()->SetSpdySetting(
1265 test_host_port_pair_, 1280 test_host_port_pair_,
1266 SETTINGS_MAX_CONCURRENT_STREAMS, 1281 SETTINGS_MAX_CONCURRENT_STREAMS,
1267 SETTINGS_FLAG_PLEASE_PERSIST, 1282 SETTINGS_FLAG_PLEASE_PERSIST,
1268 initial_max_concurrent_streams); 1283 initial_max_concurrent_streams);
1269 1284
1270 SpdySessionPoolPeer pool_peer(spdy_session_pool_); 1285 SpdySessionPoolPeer pool_peer(spdy_session_pool_);
1271 pool_peer.SetEnableSendingInitialData(true); 1286 pool_peer.SetEnableSendingInitialData(true);
(...skipping 30 matching lines...) Expand all
1302 1317
1303 MockConnect connect_data(SYNCHRONOUS, OK); 1318 MockConnect connect_data(SYNCHRONOUS, OK);
1304 MockRead reads[] = { 1319 MockRead reads[] = {
1305 MockRead(ASYNC, 0, 0) // EOF 1320 MockRead(ASYNC, 0, 0) // EOF
1306 }; 1321 };
1307 1322
1308 StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0); 1323 StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0);
1309 data.set_connect_data(connect_data); 1324 data.set_connect_data(connect_data);
1310 session_deps_.socket_factory->AddSocketDataProvider(&data); 1325 session_deps_.socket_factory->AddSocketDataProvider(&data);
1311 1326
1312 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
1313 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
1314
1315 CreateNetworkSession(); 1327 CreateNetworkSession();
1316 1328
1317 base::WeakPtr<SpdySession> session = 1329 base::WeakPtr<SpdySession> session =
1318 CreateInsecureSpdySession(http_session_, key_, log.bound()); 1330 CreateInsecureSpdySession(http_session_, key_, log.bound());
1319 EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key_)); 1331 EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key_));
1320 1332
1321 // Flush the read completion task. 1333 // Flush the read completion task.
1322 base::MessageLoop::current()->RunUntilIdle(); 1334 base::MessageLoop::current()->RunUntilIdle();
1323 1335
1324 net::CapturingNetLog::CapturedEntryList entries; 1336 net::CapturingNetLog::CapturedEntryList entries;
(...skipping 22 matching lines...) Expand all
1347 scoped_ptr<SpdyFrame> goaway(spdy_util_.ConstructSpdyGoAway()); 1359 scoped_ptr<SpdyFrame> goaway(spdy_util_.ConstructSpdyGoAway());
1348 MockRead reads[] = { 1360 MockRead reads[] = {
1349 CreateMockRead(*goaway), 1361 CreateMockRead(*goaway),
1350 MockRead(SYNCHRONOUS, 0, 0) // EOF 1362 MockRead(SYNCHRONOUS, 0, 0) // EOF
1351 }; 1363 };
1352 1364
1353 StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0); 1365 StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0);
1354 data.set_connect_data(connect_data); 1366 data.set_connect_data(connect_data);
1355 session_deps_.socket_factory->AddSocketDataProvider(&data); 1367 session_deps_.socket_factory->AddSocketDataProvider(&data);
1356 1368
1357 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
1358 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
1359
1360 CreateNetworkSession(); 1369 CreateNetworkSession();
1361 1370
1362 CapturingBoundNetLog log; 1371 CapturingBoundNetLog log;
1363 base::WeakPtr<SpdySession> session = 1372 base::WeakPtr<SpdySession> session =
1364 CreateInsecureSpdySession(http_session_, key_, log.bound()); 1373 CreateInsecureSpdySession(http_session_, key_, log.bound());
1365 EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key_)); 1374 EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key_));
1366 1375
1367 // Flush the read completion task. 1376 // Flush the read completion task.
1368 base::MessageLoop::current()->RunUntilIdle(); 1377 base::MessageLoop::current()->RunUntilIdle();
1369 1378
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
1422 MockRead(ASYNC, 0, 6) // EOF 1431 MockRead(ASYNC, 0, 6) // EOF
1423 }; 1432 };
1424 1433
1425 session_deps_.host_resolver->set_synchronous_mode(true); 1434 session_deps_.host_resolver->set_synchronous_mode(true);
1426 1435
1427 DeterministicSocketData data(reads, arraysize(reads), 1436 DeterministicSocketData data(reads, arraysize(reads),
1428 writes, arraysize(writes)); 1437 writes, arraysize(writes));
1429 data.set_connect_data(connect_data); 1438 data.set_connect_data(connect_data);
1430 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 1439 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
1431 1440
1432 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
1433 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
1434
1435 CreateDeterministicNetworkSession(); 1441 CreateDeterministicNetworkSession();
1436 1442
1437 base::WeakPtr<SpdySession> session = 1443 base::WeakPtr<SpdySession> session =
1438 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 1444 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
1439 1445
1440 GURL url("http://www.google.com"); 1446 GURL url(kDefaultURL);
1441 1447
1442 base::WeakPtr<SpdyStream> spdy_stream_lowest = 1448 base::WeakPtr<SpdyStream> spdy_stream_lowest =
1443 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 1449 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
1444 session, url, LOWEST, BoundNetLog()); 1450 session, url, LOWEST, BoundNetLog());
1445 ASSERT_TRUE(spdy_stream_lowest); 1451 ASSERT_TRUE(spdy_stream_lowest);
1446 EXPECT_EQ(0u, spdy_stream_lowest->stream_id()); 1452 EXPECT_EQ(0u, spdy_stream_lowest->stream_id());
1447 test::StreamDelegateDoNothing delegate_lowest(spdy_stream_lowest); 1453 test::StreamDelegateDoNothing delegate_lowest(spdy_stream_lowest);
1448 spdy_stream_lowest->SetDelegate(&delegate_lowest); 1454 spdy_stream_lowest->SetDelegate(&delegate_lowest);
1449 1455
1450 base::WeakPtr<SpdyStream> spdy_stream_highest = 1456 base::WeakPtr<SpdyStream> spdy_stream_highest =
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1495 MockRead(ASYNC, 0, 3) // EOF 1501 MockRead(ASYNC, 0, 3) // EOF
1496 }; 1502 };
1497 1503
1498 session_deps_.host_resolver->set_synchronous_mode(true); 1504 session_deps_.host_resolver->set_synchronous_mode(true);
1499 1505
1500 DeterministicSocketData data(reads, arraysize(reads), 1506 DeterministicSocketData data(reads, arraysize(reads),
1501 writes, arraysize(writes)); 1507 writes, arraysize(writes));
1502 data.set_connect_data(connect_data); 1508 data.set_connect_data(connect_data);
1503 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 1509 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
1504 1510
1505 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
1506 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
1507
1508 CreateDeterministicNetworkSession(); 1511 CreateDeterministicNetworkSession();
1509 1512
1510 base::WeakPtr<SpdySession> session = 1513 base::WeakPtr<SpdySession> session =
1511 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 1514 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
1512 1515
1513 GURL url1("http://www.google.com"); 1516 GURL url1(kDefaultURL);
1514 base::WeakPtr<SpdyStream> spdy_stream1 = 1517 base::WeakPtr<SpdyStream> spdy_stream1 =
1515 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 1518 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
1516 session, url1, HIGHEST, BoundNetLog()); 1519 session, url1, HIGHEST, BoundNetLog());
1517 ASSERT_TRUE(spdy_stream1.get() != NULL); 1520 ASSERT_TRUE(spdy_stream1.get() != NULL);
1518 EXPECT_EQ(0u, spdy_stream1->stream_id()); 1521 EXPECT_EQ(0u, spdy_stream1->stream_id());
1519 test::StreamDelegateDoNothing delegate1(spdy_stream1); 1522 test::StreamDelegateDoNothing delegate1(spdy_stream1);
1520 spdy_stream1->SetDelegate(&delegate1); 1523 spdy_stream1->SetDelegate(&delegate1);
1521 1524
1522 GURL url2("http://www.google.com"); 1525 GURL url2(kDefaultURL);
1523 base::WeakPtr<SpdyStream> spdy_stream2 = 1526 base::WeakPtr<SpdyStream> spdy_stream2 =
1524 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 1527 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
1525 session, url2, LOWEST, BoundNetLog()); 1528 session, url2, LOWEST, BoundNetLog());
1526 ASSERT_TRUE(spdy_stream2.get() != NULL); 1529 ASSERT_TRUE(spdy_stream2.get() != NULL);
1527 EXPECT_EQ(0u, spdy_stream2->stream_id()); 1530 EXPECT_EQ(0u, spdy_stream2->stream_id());
1528 test::StreamDelegateDoNothing delegate2(spdy_stream2); 1531 test::StreamDelegateDoNothing delegate2(spdy_stream2);
1529 spdy_stream2->SetDelegate(&delegate2); 1532 spdy_stream2->SetDelegate(&delegate2);
1530 1533
1531 scoped_ptr<SpdyHeaderBlock> headers( 1534 scoped_ptr<SpdyHeaderBlock> headers(
1532 spdy_util_.ConstructGetHeaderBlock(url1.spec())); 1535 spdy_util_.ConstructGetHeaderBlock(url1.spec()));
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1568 }; 1571 };
1569 1572
1570 MockRead reads[] = { 1573 MockRead reads[] = {
1571 MockRead(ASYNC, 0, 0) // EOF 1574 MockRead(ASYNC, 0, 0) // EOF
1572 }; 1575 };
1573 DeterministicSocketData data(reads, arraysize(reads), 1576 DeterministicSocketData data(reads, arraysize(reads),
1574 writes, arraysize(writes)); 1577 writes, arraysize(writes));
1575 data.set_connect_data(connect_data); 1578 data.set_connect_data(connect_data);
1576 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 1579 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
1577 1580
1578 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
1579 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
1580
1581 CreateDeterministicNetworkSession(); 1581 CreateDeterministicNetworkSession();
1582 1582
1583 base::WeakPtr<SpdySession> session = 1583 base::WeakPtr<SpdySession> session =
1584 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 1584 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
1585 1585
1586 GURL url1("http://www.google.com"); 1586 GURL url1(kDefaultURL);
1587 base::WeakPtr<SpdyStream> spdy_stream1 = 1587 base::WeakPtr<SpdyStream> spdy_stream1 =
1588 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, 1588 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM,
1589 session, url1, HIGHEST, BoundNetLog()); 1589 session, url1, HIGHEST, BoundNetLog());
1590 ASSERT_TRUE(spdy_stream1.get() != NULL); 1590 ASSERT_TRUE(spdy_stream1.get() != NULL);
1591 EXPECT_EQ(0u, spdy_stream1->stream_id()); 1591 EXPECT_EQ(0u, spdy_stream1->stream_id());
1592 1592
1593 GURL url2("http://www.google.com"); 1593 GURL url2(kDefaultURL);
1594 base::WeakPtr<SpdyStream> spdy_stream2 = 1594 base::WeakPtr<SpdyStream> spdy_stream2 =
1595 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, 1595 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM,
1596 session, url2, LOWEST, BoundNetLog()); 1596 session, url2, LOWEST, BoundNetLog());
1597 ASSERT_TRUE(spdy_stream2.get() != NULL); 1597 ASSERT_TRUE(spdy_stream2.get() != NULL);
1598 EXPECT_EQ(0u, spdy_stream2->stream_id()); 1598 EXPECT_EQ(0u, spdy_stream2->stream_id());
1599 1599
1600 test::ClosingDelegate delegate1(spdy_stream1); 1600 test::ClosingDelegate delegate1(spdy_stream1);
1601 spdy_stream1->SetDelegate(&delegate1); 1601 spdy_stream1->SetDelegate(&delegate1);
1602 1602
1603 test::ClosingDelegate delegate2(spdy_stream2); 1603 test::ClosingDelegate delegate2(spdy_stream2);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1642 }; 1642 };
1643 1643
1644 MockRead reads[] = { 1644 MockRead reads[] = {
1645 MockRead(ASYNC, 0, 0) // EOF 1645 MockRead(ASYNC, 0, 0) // EOF
1646 }; 1646 };
1647 DeterministicSocketData data(reads, arraysize(reads), 1647 DeterministicSocketData data(reads, arraysize(reads),
1648 writes, arraysize(writes)); 1648 writes, arraysize(writes));
1649 data.set_connect_data(connect_data); 1649 data.set_connect_data(connect_data);
1650 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 1650 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
1651 1651
1652 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
1653 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
1654
1655 CreateDeterministicNetworkSession(); 1652 CreateDeterministicNetworkSession();
1656 1653
1657 base::WeakPtr<SpdySession> session = 1654 base::WeakPtr<SpdySession> session =
1658 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 1655 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
1659 1656
1660 GURL url1("http://www.google.com"); 1657 GURL url1(kDefaultURL);
1661 base::WeakPtr<SpdyStream> spdy_stream1 = 1658 base::WeakPtr<SpdyStream> spdy_stream1 =
1662 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, 1659 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM,
1663 session, url1, HIGHEST, BoundNetLog()); 1660 session, url1, HIGHEST, BoundNetLog());
1664 ASSERT_TRUE(spdy_stream1.get() != NULL); 1661 ASSERT_TRUE(spdy_stream1.get() != NULL);
1665 EXPECT_EQ(0u, spdy_stream1->stream_id()); 1662 EXPECT_EQ(0u, spdy_stream1->stream_id());
1666 1663
1667 GURL url2("http://www.google.com"); 1664 GURL url2(kDefaultURL);
1668 base::WeakPtr<SpdyStream> spdy_stream2 = 1665 base::WeakPtr<SpdyStream> spdy_stream2 =
1669 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, 1666 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM,
1670 session, url2, LOWEST, BoundNetLog()); 1667 session, url2, LOWEST, BoundNetLog());
1671 ASSERT_TRUE(spdy_stream2.get() != NULL); 1668 ASSERT_TRUE(spdy_stream2.get() != NULL);
1672 EXPECT_EQ(0u, spdy_stream2->stream_id()); 1669 EXPECT_EQ(0u, spdy_stream2->stream_id());
1673 1670
1674 // Make |spdy_stream1| close |spdy_stream2|. 1671 // Make |spdy_stream1| close |spdy_stream2|.
1675 test::ClosingDelegate delegate1(spdy_stream2); 1672 test::ClosingDelegate delegate1(spdy_stream2);
1676 spdy_stream1->SetDelegate(&delegate1); 1673 spdy_stream1->SetDelegate(&delegate1);
1677 1674
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1723 1720
1724 MockRead reads[] = { 1721 MockRead reads[] = {
1725 MockRead(ASYNC, 0, 2) // EOF 1722 MockRead(ASYNC, 0, 2) // EOF
1726 }; 1723 };
1727 1724
1728 DeterministicSocketData data(reads, arraysize(reads), 1725 DeterministicSocketData data(reads, arraysize(reads),
1729 writes, arraysize(writes)); 1726 writes, arraysize(writes));
1730 data.set_connect_data(connect_data); 1727 data.set_connect_data(connect_data);
1731 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 1728 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
1732 1729
1733 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
1734 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
1735
1736 CreateDeterministicNetworkSession(); 1730 CreateDeterministicNetworkSession();
1737 1731
1738 base::WeakPtr<SpdySession> session = 1732 base::WeakPtr<SpdySession> session =
1739 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 1733 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
1740 1734
1741 GURL url1("http://www.google.com"); 1735 GURL url1(kDefaultURL);
1742 base::WeakPtr<SpdyStream> spdy_stream1 = 1736 base::WeakPtr<SpdyStream> spdy_stream1 =
1743 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 1737 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
1744 session, url1, MEDIUM, BoundNetLog()); 1738 session, url1, MEDIUM, BoundNetLog());
1745 ASSERT_TRUE(spdy_stream1.get() != NULL); 1739 ASSERT_TRUE(spdy_stream1.get() != NULL);
1746 EXPECT_EQ(0u, spdy_stream1->stream_id()); 1740 EXPECT_EQ(0u, spdy_stream1->stream_id());
1747 1741
1748 GURL url2("http://www.google.com"); 1742 GURL url2(kDefaultURL);
1749 base::WeakPtr<SpdyStream> spdy_stream2 = 1743 base::WeakPtr<SpdyStream> spdy_stream2 =
1750 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 1744 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
1751 session, url2, MEDIUM, BoundNetLog()); 1745 session, url2, MEDIUM, BoundNetLog());
1752 ASSERT_TRUE(spdy_stream2.get() != NULL); 1746 ASSERT_TRUE(spdy_stream2.get() != NULL);
1753 EXPECT_EQ(0u, spdy_stream2->stream_id()); 1747 EXPECT_EQ(0u, spdy_stream2->stream_id());
1754 1748
1755 test::ClosingDelegate delegate1(spdy_stream1); 1749 test::ClosingDelegate delegate1(spdy_stream1);
1756 spdy_stream1->SetDelegate(&delegate1); 1750 spdy_stream1->SetDelegate(&delegate1);
1757 1751
1758 test::ClosingDelegate delegate2(spdy_stream2); 1752 test::ClosingDelegate delegate2(spdy_stream2);
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
1807 1801
1808 MockRead reads[] = { 1802 MockRead reads[] = {
1809 MockRead(ASYNC, 0, 2) // EOF 1803 MockRead(ASYNC, 0, 2) // EOF
1810 }; 1804 };
1811 1805
1812 DeterministicSocketData data(reads, arraysize(reads), 1806 DeterministicSocketData data(reads, arraysize(reads),
1813 writes, arraysize(writes)); 1807 writes, arraysize(writes));
1814 data.set_connect_data(connect_data); 1808 data.set_connect_data(connect_data);
1815 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 1809 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
1816 1810
1817 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
1818 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
1819
1820 CreateDeterministicNetworkSession(); 1811 CreateDeterministicNetworkSession();
1821 1812
1822 base::WeakPtr<SpdySession> session = 1813 base::WeakPtr<SpdySession> session =
1823 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 1814 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
1824 1815
1825 GURL url1("http://www.google.com"); 1816 GURL url1(kDefaultURL);
1826 base::WeakPtr<SpdyStream> spdy_stream1 = 1817 base::WeakPtr<SpdyStream> spdy_stream1 =
1827 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 1818 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
1828 session, url1, MEDIUM, BoundNetLog()); 1819 session, url1, MEDIUM, BoundNetLog());
1829 ASSERT_TRUE(spdy_stream1.get() != NULL); 1820 ASSERT_TRUE(spdy_stream1.get() != NULL);
1830 EXPECT_EQ(0u, spdy_stream1->stream_id()); 1821 EXPECT_EQ(0u, spdy_stream1->stream_id());
1831 1822
1832 GURL url2("http://www.google.com"); 1823 GURL url2(kDefaultURL);
1833 base::WeakPtr<SpdyStream> spdy_stream2 = 1824 base::WeakPtr<SpdyStream> spdy_stream2 =
1834 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 1825 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
1835 session, url2, MEDIUM, BoundNetLog()); 1826 session, url2, MEDIUM, BoundNetLog());
1836 ASSERT_TRUE(spdy_stream2.get() != NULL); 1827 ASSERT_TRUE(spdy_stream2.get() != NULL);
1837 EXPECT_EQ(0u, spdy_stream2->stream_id()); 1828 EXPECT_EQ(0u, spdy_stream2->stream_id());
1838 1829
1839 // Make |spdy_stream1| close |spdy_stream2|. 1830 // Make |spdy_stream1| close |spdy_stream2|.
1840 test::ClosingDelegate delegate1(spdy_stream2); 1831 test::ClosingDelegate delegate1(spdy_stream2);
1841 spdy_stream1->SetDelegate(&delegate1); 1832 spdy_stream1->SetDelegate(&delegate1);
1842 1833
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
1907 }; 1898 };
1908 1899
1909 MockRead reads[] = { 1900 MockRead reads[] = {
1910 MockRead(ASYNC, 0, 1) // EOF 1901 MockRead(ASYNC, 0, 1) // EOF
1911 }; 1902 };
1912 DeterministicSocketData data(reads, arraysize(reads), 1903 DeterministicSocketData data(reads, arraysize(reads),
1913 writes, arraysize(writes)); 1904 writes, arraysize(writes));
1914 data.set_connect_data(connect_data); 1905 data.set_connect_data(connect_data);
1915 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 1906 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
1916 1907
1917 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
1918 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
1919
1920 CreateDeterministicNetworkSession(); 1908 CreateDeterministicNetworkSession();
1921 1909
1922 base::WeakPtr<SpdySession> session = 1910 base::WeakPtr<SpdySession> session =
1923 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 1911 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
1924 1912
1925 GURL url("http://www.google.com"); 1913 GURL url(kDefaultURL);
1926 base::WeakPtr<SpdyStream> spdy_stream = 1914 base::WeakPtr<SpdyStream> spdy_stream =
1927 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 1915 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
1928 session, url, MEDIUM, BoundNetLog()); 1916 session, url, MEDIUM, BoundNetLog());
1929 ASSERT_TRUE(spdy_stream.get() != NULL); 1917 ASSERT_TRUE(spdy_stream.get() != NULL);
1930 EXPECT_EQ(0u, spdy_stream->stream_id()); 1918 EXPECT_EQ(0u, spdy_stream->stream_id());
1931 1919
1932 SessionClosingDelegate delegate(spdy_stream, session); 1920 SessionClosingDelegate delegate(spdy_stream, session);
1933 spdy_stream->SetDelegate(&delegate); 1921 spdy_stream->SetDelegate(&delegate);
1934 1922
1935 scoped_ptr<SpdyHeaderBlock> headers( 1923 scoped_ptr<SpdyHeaderBlock> headers(
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
2083 CreateMockRead(*resp3, 8), 2071 CreateMockRead(*resp3, 8),
2084 CreateMockRead(*body3, 9), 2072 CreateMockRead(*body3, 9),
2085 MockRead(ASYNC, 0, 10) // EOF 2073 MockRead(ASYNC, 0, 10) // EOF
2086 }; 2074 };
2087 2075
2088 DeterministicSocketData data(reads, arraysize(reads), 2076 DeterministicSocketData data(reads, arraysize(reads),
2089 writes, arraysize(writes)); 2077 writes, arraysize(writes));
2090 data.set_connect_data(connect_data); 2078 data.set_connect_data(connect_data);
2091 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 2079 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
2092 2080
2093 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
2094 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
2095
2096 CreateDeterministicNetworkSession(); 2081 CreateDeterministicNetworkSession();
2097 2082
2098 base::WeakPtr<SpdySession> session = 2083 base::WeakPtr<SpdySession> session =
2099 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 2084 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
2100 2085
2101 // Read the settings frame. 2086 // Read the settings frame.
2102 data.RunFor(1); 2087 data.RunFor(1);
2103 2088
2104 GURL url1("http://www.google.com"); 2089 GURL url1(kDefaultURL);
2105 base::WeakPtr<SpdyStream> spdy_stream1 = 2090 base::WeakPtr<SpdyStream> spdy_stream1 =
2106 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 2091 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
2107 session, url1, LOWEST, BoundNetLog()); 2092 session, url1, LOWEST, BoundNetLog());
2108 ASSERT_TRUE(spdy_stream1.get() != NULL); 2093 ASSERT_TRUE(spdy_stream1.get() != NULL);
2109 EXPECT_EQ(0u, spdy_stream1->stream_id()); 2094 EXPECT_EQ(0u, spdy_stream1->stream_id());
2110 test::StreamDelegateDoNothing delegate1(spdy_stream1); 2095 test::StreamDelegateDoNothing delegate1(spdy_stream1);
2111 spdy_stream1->SetDelegate(&delegate1); 2096 spdy_stream1->SetDelegate(&delegate1);
2112 2097
2113 TestCompletionCallback callback2; 2098 TestCompletionCallback callback2;
2114 GURL url2("http://www.google.com"); 2099 GURL url2(kDefaultURL);
2115 SpdyStreamRequest request2; 2100 SpdyStreamRequest request2;
2116 ASSERT_EQ(ERR_IO_PENDING, 2101 ASSERT_EQ(ERR_IO_PENDING,
2117 request2.StartRequest( 2102 request2.StartRequest(
2118 SPDY_REQUEST_RESPONSE_STREAM, 2103 SPDY_REQUEST_RESPONSE_STREAM,
2119 session, url2, LOWEST, BoundNetLog(), callback2.callback())); 2104 session, url2, LOWEST, BoundNetLog(), callback2.callback()));
2120 2105
2121 TestCompletionCallback callback3; 2106 TestCompletionCallback callback3;
2122 GURL url3("http://www.google.com"); 2107 GURL url3(kDefaultURL);
2123 SpdyStreamRequest request3; 2108 SpdyStreamRequest request3;
2124 ASSERT_EQ(ERR_IO_PENDING, 2109 ASSERT_EQ(ERR_IO_PENDING,
2125 request3.StartRequest( 2110 request3.StartRequest(
2126 SPDY_REQUEST_RESPONSE_STREAM, 2111 SPDY_REQUEST_RESPONSE_STREAM,
2127 session, url3, LOWEST, BoundNetLog(), callback3.callback())); 2112 session, url3, LOWEST, BoundNetLog(), callback3.callback()));
2128 2113
2129 EXPECT_EQ(0u, session->num_active_streams()); 2114 EXPECT_EQ(0u, session->num_active_streams());
2130 EXPECT_EQ(1u, session->num_created_streams()); 2115 EXPECT_EQ(1u, session->num_created_streams());
2131 EXPECT_EQ(2u, session->pending_create_stream_queue_size(LOWEST)); 2116 EXPECT_EQ(2u, session->pending_create_stream_queue_size(LOWEST));
2132 2117
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
2206 MockRead reads[] = { 2191 MockRead reads[] = {
2207 MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever. 2192 MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever.
2208 }; 2193 };
2209 2194
2210 StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0); 2195 StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0);
2211 MockConnect connect_data(SYNCHRONOUS, OK); 2196 MockConnect connect_data(SYNCHRONOUS, OK);
2212 2197
2213 data.set_connect_data(connect_data); 2198 data.set_connect_data(connect_data);
2214 session_deps_.socket_factory->AddSocketDataProvider(&data); 2199 session_deps_.socket_factory->AddSocketDataProvider(&data);
2215 2200
2216 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
2217 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
2218
2219 CreateNetworkSession(); 2201 CreateNetworkSession();
2220 2202
2221 base::WeakPtr<SpdySession> session = 2203 base::WeakPtr<SpdySession> session =
2222 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 2204 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
2223 2205
2224 // Leave room for only one more stream to be created. 2206 // Leave room for only one more stream to be created.
2225 for (size_t i = 0; i < kInitialMaxConcurrentStreams - 1; ++i) { 2207 for (size_t i = 0; i < kInitialMaxConcurrentStreams - 1; ++i) {
2226 base::WeakPtr<SpdyStream> spdy_stream = 2208 base::WeakPtr<SpdyStream> spdy_stream =
2227 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, 2209 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM,
2228 session, test_url_, MEDIUM, BoundNetLog()); 2210 session, test_url_, MEDIUM, BoundNetLog());
2229 ASSERT_TRUE(spdy_stream != NULL); 2211 ASSERT_TRUE(spdy_stream != NULL);
2230 } 2212 }
2231 2213
2232 GURL url1("http://www.google.com"); 2214 GURL url1(kDefaultURL);
2233 base::WeakPtr<SpdyStream> spdy_stream1 = 2215 base::WeakPtr<SpdyStream> spdy_stream1 =
2234 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, 2216 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM,
2235 session, url1, LOWEST, BoundNetLog()); 2217 session, url1, LOWEST, BoundNetLog());
2236 ASSERT_TRUE(spdy_stream1.get() != NULL); 2218 ASSERT_TRUE(spdy_stream1.get() != NULL);
2237 EXPECT_EQ(0u, spdy_stream1->stream_id()); 2219 EXPECT_EQ(0u, spdy_stream1->stream_id());
2238 2220
2239 TestCompletionCallback callback2; 2221 TestCompletionCallback callback2;
2240 GURL url2("http://www.google.com"); 2222 GURL url2(kDefaultURL);
2241 SpdyStreamRequest request2; 2223 SpdyStreamRequest request2;
2242 ASSERT_EQ(ERR_IO_PENDING, 2224 ASSERT_EQ(ERR_IO_PENDING,
2243 request2.StartRequest( 2225 request2.StartRequest(
2244 SPDY_BIDIRECTIONAL_STREAM, session, url2, LOWEST, BoundNetLog(), 2226 SPDY_BIDIRECTIONAL_STREAM, session, url2, LOWEST, BoundNetLog(),
2245 callback2.callback())); 2227 callback2.callback()));
2246 2228
2247 TestCompletionCallback callback3; 2229 TestCompletionCallback callback3;
2248 GURL url3("http://www.google.com"); 2230 GURL url3(kDefaultURL);
2249 SpdyStreamRequest request3; 2231 SpdyStreamRequest request3;
2250 ASSERT_EQ(ERR_IO_PENDING, 2232 ASSERT_EQ(ERR_IO_PENDING,
2251 request3.StartRequest( 2233 request3.StartRequest(
2252 SPDY_BIDIRECTIONAL_STREAM, session, url3, LOWEST, BoundNetLog(), 2234 SPDY_BIDIRECTIONAL_STREAM, session, url3, LOWEST, BoundNetLog(),
2253 callback3.callback())); 2235 callback3.callback()));
2254 2236
2255 EXPECT_EQ(0u, session->num_active_streams()); 2237 EXPECT_EQ(0u, session->num_active_streams());
2256 EXPECT_EQ(kInitialMaxConcurrentStreams, session->num_created_streams()); 2238 EXPECT_EQ(kInitialMaxConcurrentStreams, session->num_created_streams());
2257 EXPECT_EQ(2u, session->pending_create_stream_queue_size(LOWEST)); 2239 EXPECT_EQ(2u, session->pending_create_stream_queue_size(LOWEST));
2258 2240
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
2327 MockRead(ASYNC, 0, 6) // EOF 2309 MockRead(ASYNC, 0, 6) // EOF
2328 }; 2310 };
2329 2311
2330 // Create SpdySession and SpdyStream and send the request. 2312 // Create SpdySession and SpdyStream and send the request.
2331 DeterministicSocketData data(reads, arraysize(reads), 2313 DeterministicSocketData data(reads, arraysize(reads),
2332 writes, arraysize(writes)); 2314 writes, arraysize(writes));
2333 data.set_connect_data(connect_data); 2315 data.set_connect_data(connect_data);
2334 session_deps_.host_resolver->set_synchronous_mode(true); 2316 session_deps_.host_resolver->set_synchronous_mode(true);
2335 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 2317 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
2336 2318
2337 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
2338 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
2339
2340 CreateDeterministicNetworkSession(); 2319 CreateDeterministicNetworkSession();
2341 2320
2342 base::WeakPtr<SpdySession> session = 2321 base::WeakPtr<SpdySession> session =
2343 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 2322 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
2344 2323
2345 GURL url1("http://www.google.com"); 2324 GURL url1(kDefaultURL);
2346 base::WeakPtr<SpdyStream> spdy_stream1 = 2325 base::WeakPtr<SpdyStream> spdy_stream1 =
2347 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 2326 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
2348 session, url1, MEDIUM, BoundNetLog()); 2327 session, url1, MEDIUM, BoundNetLog());
2349 ASSERT_TRUE(spdy_stream1.get() != NULL); 2328 ASSERT_TRUE(spdy_stream1.get() != NULL);
2350 EXPECT_EQ(0u, spdy_stream1->stream_id()); 2329 EXPECT_EQ(0u, spdy_stream1->stream_id());
2351 test::StreamDelegateDoNothing delegate1(spdy_stream1); 2330 test::StreamDelegateDoNothing delegate1(spdy_stream1);
2352 spdy_stream1->SetDelegate(&delegate1); 2331 spdy_stream1->SetDelegate(&delegate1);
2353 2332
2354 scoped_ptr<SpdyHeaderBlock> headers1( 2333 scoped_ptr<SpdyHeaderBlock> headers1(
2355 spdy_util_.ConstructGetHeaderBlock(url1.spec())); 2334 spdy_util_.ConstructGetHeaderBlock(url1.spec()));
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
2421 MockRead(ASYNC, 0, 7) // EOF 2400 MockRead(ASYNC, 0, 7) // EOF
2422 }; 2401 };
2423 2402
2424 // Create SpdySession and SpdyStream and send the request. 2403 // Create SpdySession and SpdyStream and send the request.
2425 DeterministicSocketData data(reads, arraysize(reads), 2404 DeterministicSocketData data(reads, arraysize(reads),
2426 writes, arraysize(writes)); 2405 writes, arraysize(writes));
2427 data.set_connect_data(connect_data); 2406 data.set_connect_data(connect_data);
2428 session_deps_.host_resolver->set_synchronous_mode(true); 2407 session_deps_.host_resolver->set_synchronous_mode(true);
2429 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 2408 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
2430 2409
2431 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
2432 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
2433
2434 CreateDeterministicNetworkSession(); 2410 CreateDeterministicNetworkSession();
2435 2411
2436 base::WeakPtr<SpdySession> session = 2412 base::WeakPtr<SpdySession> session =
2437 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 2413 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
2438 2414
2439 GURL url1("http://www.google.com"); 2415 GURL url1(kDefaultURL);
2440 base::WeakPtr<SpdyStream> spdy_stream1 = 2416 base::WeakPtr<SpdyStream> spdy_stream1 =
2441 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 2417 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
2442 session, url1, MEDIUM, BoundNetLog()); 2418 session, url1, MEDIUM, BoundNetLog());
2443 ASSERT_TRUE(spdy_stream1.get() != NULL); 2419 ASSERT_TRUE(spdy_stream1.get() != NULL);
2444 EXPECT_EQ(0u, spdy_stream1->stream_id()); 2420 EXPECT_EQ(0u, spdy_stream1->stream_id());
2445 test::StreamDelegateDoNothing delegate1(spdy_stream1); 2421 test::StreamDelegateDoNothing delegate1(spdy_stream1);
2446 spdy_stream1->SetDelegate(&delegate1); 2422 spdy_stream1->SetDelegate(&delegate1);
2447 2423
2448 scoped_ptr<SpdyHeaderBlock> headers1( 2424 scoped_ptr<SpdyHeaderBlock> headers1(
2449 spdy_util_.ConstructGetHeaderBlock(url1.spec())); 2425 spdy_util_.ConstructGetHeaderBlock(url1.spec()));
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
2537 MockRead(ASYNC, 0, 12) // EOF 2513 MockRead(ASYNC, 0, 12) // EOF
2538 }; 2514 };
2539 2515
2540 // Create SpdySession and SpdyStream and send the request. 2516 // Create SpdySession and SpdyStream and send the request.
2541 DeterministicSocketData data(reads, arraysize(reads), 2517 DeterministicSocketData data(reads, arraysize(reads),
2542 writes, arraysize(writes)); 2518 writes, arraysize(writes));
2543 data.set_connect_data(connect_data); 2519 data.set_connect_data(connect_data);
2544 session_deps_.host_resolver->set_synchronous_mode(true); 2520 session_deps_.host_resolver->set_synchronous_mode(true);
2545 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 2521 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
2546 2522
2547 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
2548 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
2549
2550 CreateDeterministicNetworkSession(); 2523 CreateDeterministicNetworkSession();
2551 2524
2552 base::WeakPtr<SpdySession> session = 2525 base::WeakPtr<SpdySession> session =
2553 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 2526 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
2554 2527
2555 GURL url1("http://www.google.com"); 2528 GURL url1(kDefaultURL);
2556 base::WeakPtr<SpdyStream> spdy_stream1 = 2529 base::WeakPtr<SpdyStream> spdy_stream1 =
2557 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 2530 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
2558 session, url1, MEDIUM, BoundNetLog()); 2531 session, url1, MEDIUM, BoundNetLog());
2559 ASSERT_TRUE(spdy_stream1.get() != NULL); 2532 ASSERT_TRUE(spdy_stream1.get() != NULL);
2560 EXPECT_EQ(0u, spdy_stream1->stream_id()); 2533 EXPECT_EQ(0u, spdy_stream1->stream_id());
2561 test::StreamDelegateDoNothing delegate1(spdy_stream1); 2534 test::StreamDelegateDoNothing delegate1(spdy_stream1);
2562 spdy_stream1->SetDelegate(&delegate1); 2535 spdy_stream1->SetDelegate(&delegate1);
2563 2536
2564 scoped_ptr<SpdyHeaderBlock> headers1( 2537 scoped_ptr<SpdyHeaderBlock> headers1(
2565 spdy_util_.ConstructGetHeaderBlock(url1.spec())); 2538 spdy_util_.ConstructGetHeaderBlock(url1.spec()));
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
2611 CreateMockRead(*goaway, 3), 2584 CreateMockRead(*goaway, 3),
2612 }; 2585 };
2613 2586
2614 // Create SpdySession and SpdyStream and send the request. 2587 // Create SpdySession and SpdyStream and send the request.
2615 DeterministicSocketData data(reads, arraysize(reads), 2588 DeterministicSocketData data(reads, arraysize(reads),
2616 writes, arraysize(writes)); 2589 writes, arraysize(writes));
2617 data.set_connect_data(connect_data); 2590 data.set_connect_data(connect_data);
2618 session_deps_.host_resolver->set_synchronous_mode(true); 2591 session_deps_.host_resolver->set_synchronous_mode(true);
2619 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 2592 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
2620 2593
2621 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
2622 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
2623
2624 CreateDeterministicNetworkSession(); 2594 CreateDeterministicNetworkSession();
2625 2595
2626 base::WeakPtr<SpdySession> session = 2596 base::WeakPtr<SpdySession> session =
2627 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 2597 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
2628 2598
2629 GURL url1("http://www.google.com"); 2599 GURL url1(kDefaultURL);
2630 base::WeakPtr<SpdyStream> spdy_stream1 = 2600 base::WeakPtr<SpdyStream> spdy_stream1 =
2631 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 2601 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
2632 session, url1, MEDIUM, BoundNetLog()); 2602 session, url1, MEDIUM, BoundNetLog());
2633 test::StreamDelegateDoNothing delegate1(spdy_stream1); 2603 test::StreamDelegateDoNothing delegate1(spdy_stream1);
2634 spdy_stream1->SetDelegate(&delegate1); 2604 spdy_stream1->SetDelegate(&delegate1);
2635 ASSERT_TRUE(spdy_stream1.get() != NULL); 2605 ASSERT_TRUE(spdy_stream1.get() != NULL);
2636 EXPECT_EQ(0u, spdy_stream1->stream_id()); 2606 EXPECT_EQ(0u, spdy_stream1->stream_id());
2637 2607
2638 scoped_ptr<SpdyHeaderBlock> headers1( 2608 scoped_ptr<SpdyHeaderBlock> headers1(
2639 spdy_util_.ConstructGetHeaderBlock(url1.spec())); 2609 spdy_util_.ConstructGetHeaderBlock(url1.spec()));
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
2857 session_deps_.socket_factory->AddSocketDataProvider(&http_data); 2827 session_deps_.socket_factory->AddSocketDataProvider(&http_data);
2858 2828
2859 2829
2860 CreateNetworkSession(); 2830 CreateNetworkSession();
2861 2831
2862 TransportClientSocketPool* pool = 2832 TransportClientSocketPool* pool =
2863 http_session_->GetTransportSocketPool( 2833 http_session_->GetTransportSocketPool(
2864 HttpNetworkSession::NORMAL_SOCKET_POOL); 2834 HttpNetworkSession::NORMAL_SOCKET_POOL);
2865 2835
2866 // Create a SPDY session. 2836 // Create a SPDY session.
2867 GURL url1("http://www.google.com"); 2837 GURL url1(kDefaultURL);
2868 SpdySessionKey key1(HostPortPair(url1.host(), 80), 2838 SpdySessionKey key1(HostPortPair(url1.host(), 80),
2869 ProxyServer::Direct(), kPrivacyModeDisabled); 2839 ProxyServer::Direct(), kPrivacyModeDisabled);
2870 base::WeakPtr<SpdySession> session1 = 2840 base::WeakPtr<SpdySession> session1 =
2871 CreateInsecureSpdySession(http_session_, key1, BoundNetLog()); 2841 CreateInsecureSpdySession(http_session_, key1, BoundNetLog());
2872 EXPECT_FALSE(pool->IsStalled()); 2842 EXPECT_FALSE(pool->IsStalled());
2873 2843
2874 // Create a stream using the session, and send a request. 2844 // Create a stream using the session, and send a request.
2875 2845
2876 TestCompletionCallback callback1; 2846 TestCompletionCallback callback1;
2877 base::WeakPtr<SpdyStream> spdy_stream1 = 2847 base::WeakPtr<SpdyStream> spdy_stream1 =
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
2961 class StreamCreatingDelegate : public test::StreamDelegateDoNothing { 2931 class StreamCreatingDelegate : public test::StreamDelegateDoNothing {
2962 public: 2932 public:
2963 StreamCreatingDelegate(const base::WeakPtr<SpdyStream>& stream, 2933 StreamCreatingDelegate(const base::WeakPtr<SpdyStream>& stream,
2964 const base::WeakPtr<SpdySession>& session) 2934 const base::WeakPtr<SpdySession>& session)
2965 : StreamDelegateDoNothing(stream), 2935 : StreamDelegateDoNothing(stream),
2966 session_(session) {} 2936 session_(session) {}
2967 2937
2968 virtual ~StreamCreatingDelegate() {} 2938 virtual ~StreamCreatingDelegate() {}
2969 2939
2970 virtual void OnClose(int status) OVERRIDE { 2940 virtual void OnClose(int status) OVERRIDE {
2971 GURL url("http://www.google.com"); 2941 GURL url(kDefaultURL);
2972 ignore_result( 2942 ignore_result(
2973 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 2943 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
2974 session_, url, MEDIUM, BoundNetLog())); 2944 session_, url, MEDIUM, BoundNetLog()));
2975 } 2945 }
2976 2946
2977 private: 2947 private:
2978 const base::WeakPtr<SpdySession> session_; 2948 const base::WeakPtr<SpdySession> session_;
2979 }; 2949 };
2980 2950
2981 // Create another stream in response to a stream being reset. Nothing 2951 // Create another stream in response to a stream being reset. Nothing
(...skipping 14 matching lines...) Expand all
2996 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_REFUSED_STREAM)); 2966 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_REFUSED_STREAM));
2997 MockRead reads[] = { 2967 MockRead reads[] = {
2998 CreateMockRead(*rst, 1), 2968 CreateMockRead(*rst, 1),
2999 MockRead(ASYNC, 0, 2) // EOF 2969 MockRead(ASYNC, 0, 2) // EOF
3000 }; 2970 };
3001 DeterministicSocketData data(reads, arraysize(reads), 2971 DeterministicSocketData data(reads, arraysize(reads),
3002 writes, arraysize(writes)); 2972 writes, arraysize(writes));
3003 data.set_connect_data(connect_data); 2973 data.set_connect_data(connect_data);
3004 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 2974 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
3005 2975
3006 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
3007 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
3008
3009 CreateDeterministicNetworkSession(); 2976 CreateDeterministicNetworkSession();
3010 2977
3011 base::WeakPtr<SpdySession> session = 2978 base::WeakPtr<SpdySession> session =
3012 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 2979 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
3013 2980
3014 GURL url("http://www.google.com"); 2981 GURL url(kDefaultURL);
3015 base::WeakPtr<SpdyStream> spdy_stream = 2982 base::WeakPtr<SpdyStream> spdy_stream =
3016 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, 2983 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM,
3017 session, url, MEDIUM, BoundNetLog()); 2984 session, url, MEDIUM, BoundNetLog());
3018 ASSERT_TRUE(spdy_stream.get() != NULL); 2985 ASSERT_TRUE(spdy_stream.get() != NULL);
3019 EXPECT_EQ(0u, spdy_stream->stream_id()); 2986 EXPECT_EQ(0u, spdy_stream->stream_id());
3020 2987
3021 StreamCreatingDelegate delegate(spdy_stream, session); 2988 StreamCreatingDelegate delegate(spdy_stream, session);
3022 spdy_stream->SetDelegate(&delegate); 2989 spdy_stream->SetDelegate(&delegate);
3023 2990
3024 scoped_ptr<SpdyHeaderBlock> headers( 2991 scoped_ptr<SpdyHeaderBlock> headers(
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
3065 MockRead(ASYNC, 0, 1) // EOF 3032 MockRead(ASYNC, 0, 1) // EOF
3066 }; 3033 };
3067 3034
3068 session_deps_.host_resolver->set_synchronous_mode(true); 3035 session_deps_.host_resolver->set_synchronous_mode(true);
3069 3036
3070 scoped_ptr<DeterministicSocketData> data( 3037 scoped_ptr<DeterministicSocketData> data(
3071 new DeterministicSocketData(reads, arraysize(reads), NULL, 0)); 3038 new DeterministicSocketData(reads, arraysize(reads), NULL, 0));
3072 data->set_connect_data(connect_data); 3039 data->set_connect_data(connect_data);
3073 session_deps_.deterministic_socket_factory->AddSocketDataProvider(data.get()); 3040 session_deps_.deterministic_socket_factory->AddSocketDataProvider(data.get());
3074 3041
3075 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
3076 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
3077
3078 CreateDeterministicNetworkSession(); 3042 CreateDeterministicNetworkSession();
3079 3043
3080 base::WeakPtr<SpdySession> session = 3044 base::WeakPtr<SpdySession> session =
3081 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 3045 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
3082 base::WeakPtr<SpdyStream> spdy_stream1 = 3046 base::WeakPtr<SpdyStream> spdy_stream1 =
3083 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, 3047 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM,
3084 session, test_url_, MEDIUM, BoundNetLog()); 3048 session, test_url_, MEDIUM, BoundNetLog());
3085 ASSERT_TRUE(spdy_stream1.get() != NULL); 3049 ASSERT_TRUE(spdy_stream1.get() != NULL);
3086 TestCompletionCallback callback1; 3050 TestCompletionCallback callback1;
3087 EXPECT_NE(spdy_stream1->send_window_size(), window_size); 3051 EXPECT_NE(spdy_stream1->send_window_size(), window_size);
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
3127 kSessionFlowControlStreamId, 3091 kSessionFlowControlStreamId,
3128 kSpdySessionInitialWindowSize + delta_window_size)); 3092 kSpdySessionInitialWindowSize + delta_window_size));
3129 MockWrite writes[] = { 3093 MockWrite writes[] = {
3130 CreateMockWrite(*window_update, 0), 3094 CreateMockWrite(*window_update, 0),
3131 }; 3095 };
3132 DeterministicSocketData data(reads, arraysize(reads), 3096 DeterministicSocketData data(reads, arraysize(reads),
3133 writes, arraysize(writes)); 3097 writes, arraysize(writes));
3134 data.set_connect_data(connect_data); 3098 data.set_connect_data(connect_data);
3135 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 3099 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
3136 3100
3137 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
3138 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
3139
3140 CreateDeterministicNetworkSession(); 3101 CreateDeterministicNetworkSession();
3141 base::WeakPtr<SpdySession> session = 3102 base::WeakPtr<SpdySession> session =
3142 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 3103 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
3143 EXPECT_EQ(SpdySession::FLOW_CONTROL_STREAM_AND_SESSION, 3104 EXPECT_EQ(SpdySession::FLOW_CONTROL_STREAM_AND_SESSION,
3144 session->flow_control_state()); 3105 session->flow_control_state());
3145 3106
3146 EXPECT_EQ(kSpdySessionInitialWindowSize, session->session_recv_window_size_); 3107 EXPECT_EQ(kSpdySessionInitialWindowSize, session->session_recv_window_size_);
3147 EXPECT_EQ(0, session->session_unacked_recv_window_bytes_); 3108 EXPECT_EQ(0, session->session_unacked_recv_window_bytes_);
3148 3109
3149 session->IncreaseRecvWindowSize(delta_window_size); 3110 session->IncreaseRecvWindowSize(delta_window_size);
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
3217 MockConnect connect_data(SYNCHRONOUS, OK); 3178 MockConnect connect_data(SYNCHRONOUS, OK);
3218 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyBodyFrame(1, false)); 3179 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyBodyFrame(1, false));
3219 MockRead reads[] = { 3180 MockRead reads[] = {
3220 CreateMockRead(*resp, 0), 3181 CreateMockRead(*resp, 0),
3221 MockRead(ASYNC, 0, 1) // EOF 3182 MockRead(ASYNC, 0, 1) // EOF
3222 }; 3183 };
3223 DeterministicSocketData data(reads, arraysize(reads), NULL, 0); 3184 DeterministicSocketData data(reads, arraysize(reads), NULL, 0);
3224 data.set_connect_data(connect_data); 3185 data.set_connect_data(connect_data);
3225 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 3186 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
3226 3187
3227 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
3228 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
3229
3230 CreateDeterministicNetworkSession(); 3188 CreateDeterministicNetworkSession();
3231 base::WeakPtr<SpdySession> session = 3189 base::WeakPtr<SpdySession> session =
3232 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 3190 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
3233 EXPECT_EQ(SpdySession::FLOW_CONTROL_STREAM_AND_SESSION, 3191 EXPECT_EQ(SpdySession::FLOW_CONTROL_STREAM_AND_SESSION,
3234 session->flow_control_state()); 3192 session->flow_control_state());
3235 3193
3236 EXPECT_EQ(kSpdySessionInitialWindowSize, session->session_recv_window_size_); 3194 EXPECT_EQ(kSpdySessionInitialWindowSize, session->session_recv_window_size_);
3237 EXPECT_EQ(0, session->session_unacked_recv_window_bytes_); 3195 EXPECT_EQ(0, session->session_unacked_recv_window_bytes_);
3238 3196
3239 data.RunFor(1); 3197 data.RunFor(1);
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
3295 MockRead(ASYNC, 0, 4) // EOF 3253 MockRead(ASYNC, 0, 4) // EOF
3296 }; 3254 };
3297 3255
3298 // Create SpdySession and SpdyStream and send the request. 3256 // Create SpdySession and SpdyStream and send the request.
3299 DeterministicSocketData data(reads, arraysize(reads), 3257 DeterministicSocketData data(reads, arraysize(reads),
3300 writes, arraysize(writes)); 3258 writes, arraysize(writes));
3301 data.set_connect_data(connect_data); 3259 data.set_connect_data(connect_data);
3302 session_deps_.host_resolver->set_synchronous_mode(true); 3260 session_deps_.host_resolver->set_synchronous_mode(true);
3303 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 3261 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
3304 3262
3305 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
3306 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
3307
3308 CreateDeterministicNetworkSession(); 3263 CreateDeterministicNetworkSession();
3309 3264
3310 base::WeakPtr<SpdySession> session = 3265 base::WeakPtr<SpdySession> session =
3311 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 3266 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
3312 3267
3313 GURL url(kStreamUrl); 3268 GURL url(kStreamUrl);
3314 base::WeakPtr<SpdyStream> stream = 3269 base::WeakPtr<SpdyStream> stream =
3315 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, 3270 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM,
3316 session, url, MEDIUM, BoundNetLog()); 3271 session, url, MEDIUM, BoundNetLog());
3317 ASSERT_TRUE(stream.get() != NULL); 3272 ASSERT_TRUE(stream.get() != NULL);
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
3373 MockRead(ASYNC, 0, 2) // EOF 3328 MockRead(ASYNC, 0, 2) // EOF
3374 }; 3329 };
3375 3330
3376 // Create SpdySession and SpdyStream and send the request. 3331 // Create SpdySession and SpdyStream and send the request.
3377 DeterministicSocketData data(reads, arraysize(reads), 3332 DeterministicSocketData data(reads, arraysize(reads),
3378 writes, arraysize(writes)); 3333 writes, arraysize(writes));
3379 data.set_connect_data(connect_data); 3334 data.set_connect_data(connect_data);
3380 session_deps_.host_resolver->set_synchronous_mode(true); 3335 session_deps_.host_resolver->set_synchronous_mode(true);
3381 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 3336 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
3382 3337
3383 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
3384 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
3385
3386 CreateDeterministicNetworkSession(); 3338 CreateDeterministicNetworkSession();
3387 3339
3388 base::WeakPtr<SpdySession> session = 3340 base::WeakPtr<SpdySession> session =
3389 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 3341 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
3390 3342
3391 GURL url(kStreamUrl); 3343 GURL url(kStreamUrl);
3392 base::WeakPtr<SpdyStream> stream = 3344 base::WeakPtr<SpdyStream> stream =
3393 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, 3345 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM,
3394 session, url, MEDIUM, BoundNetLog()); 3346 session, url, MEDIUM, BoundNetLog());
3395 ASSERT_TRUE(stream.get() != NULL); 3347 ASSERT_TRUE(stream.get() != NULL);
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
3465 MockRead(ASYNC, 0, 5) // EOF 3417 MockRead(ASYNC, 0, 5) // EOF
3466 }; 3418 };
3467 3419
3468 // Create SpdySession and SpdyStream and send the request. 3420 // Create SpdySession and SpdyStream and send the request.
3469 DeterministicSocketData data(reads, arraysize(reads), 3421 DeterministicSocketData data(reads, arraysize(reads),
3470 writes, arraysize(writes)); 3422 writes, arraysize(writes));
3471 data.set_connect_data(connect_data); 3423 data.set_connect_data(connect_data);
3472 session_deps_.host_resolver->set_synchronous_mode(true); 3424 session_deps_.host_resolver->set_synchronous_mode(true);
3473 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); 3425 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data);
3474 3426
3475 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
3476 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl);
3477
3478 CreateDeterministicNetworkSession(); 3427 CreateDeterministicNetworkSession();
3479 3428
3480 base::WeakPtr<SpdySession> session = 3429 base::WeakPtr<SpdySession> session =
3481 CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); 3430 CreateInsecureSpdySession(http_session_, key_, BoundNetLog());
3482 3431
3483 GURL url(kStreamUrl); 3432 GURL url(kStreamUrl);
3484 base::WeakPtr<SpdyStream> stream = 3433 base::WeakPtr<SpdyStream> stream =
3485 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, 3434 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM,
3486 session, url, MEDIUM, BoundNetLog()); 3435 session, url, MEDIUM, BoundNetLog());
3487 ASSERT_TRUE(stream.get() != NULL); 3436 ASSERT_TRUE(stream.get() != NULL);
(...skipping 647 matching lines...) Expand 10 before | Expand all | Expand 10 after
4135 EXPECT_TRUE(delegate1.send_headers_completed()); 4084 EXPECT_TRUE(delegate1.send_headers_completed());
4136 EXPECT_EQ(std::string(), delegate1.TakeReceivedData()); 4085 EXPECT_EQ(std::string(), delegate1.TakeReceivedData());
4137 4086
4138 EXPECT_TRUE(delegate2.send_headers_completed()); 4087 EXPECT_TRUE(delegate2.send_headers_completed());
4139 EXPECT_EQ(std::string(), delegate2.TakeReceivedData()); 4088 EXPECT_EQ(std::string(), delegate2.TakeReceivedData());
4140 4089
4141 EXPECT_TRUE(data.at_write_eof()); 4090 EXPECT_TRUE(data.at_write_eof());
4142 } 4091 }
4143 4092
4144 } // namespace net 4093 } // namespace net
OLDNEW
« net/spdy/spdy_session.cc ('K') | « net/spdy/spdy_session_pool.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698