OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "net/quic/quic_session.h" | 5 #include "net/quic/quic_session.h" |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 409 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
420 CloseStream(stream6->id()); | 420 CloseStream(stream6->id()); |
421 | 421 |
422 InSequence s; | 422 InSequence s; |
423 EXPECT_CALL(*stream2, OnCanWrite()); | 423 EXPECT_CALL(*stream2, OnCanWrite()); |
424 EXPECT_CALL(*stream4, OnCanWrite()); | 424 EXPECT_CALL(*stream4, OnCanWrite()); |
425 session_.OnCanWrite(); | 425 session_.OnCanWrite(); |
426 EXPECT_FALSE(session_.HasPendingWrites()); | 426 EXPECT_FALSE(session_.HasPendingWrites()); |
427 } | 427 } |
428 | 428 |
429 TEST_P(QuicSessionTest, SendGoAway) { | 429 TEST_P(QuicSessionTest, SendGoAway) { |
430 // After sending a GoAway, ensure new incoming streams cannot be created and | |
431 // result in a RST being sent. | |
432 EXPECT_CALL(*connection_, | 430 EXPECT_CALL(*connection_, |
433 SendGoAway(QUIC_PEER_GOING_AWAY, 0u, "Going Away.")); | 431 SendGoAway(QUIC_PEER_GOING_AWAY, 0u, "Going Away.")); |
434 session_.SendGoAway(QUIC_PEER_GOING_AWAY, "Going Away."); | 432 session_.SendGoAway(QUIC_PEER_GOING_AWAY, "Going Away."); |
435 EXPECT_TRUE(session_.goaway_sent()); | 433 EXPECT_TRUE(session_.goaway_sent()); |
436 | 434 |
437 EXPECT_CALL(*connection_, SendRstStream(3u, QUIC_STREAM_PEER_GOING_AWAY, 0)); | 435 EXPECT_CALL(*connection_, |
438 EXPECT_FALSE(session_.GetIncomingDataStream(3u)); | 436 SendRstStream(3u, QUIC_STREAM_PEER_GOING_AWAY, 0)).Times(0); |
| 437 EXPECT_TRUE(session_.GetIncomingDataStream(3u)); |
| 438 } |
| 439 |
| 440 TEST_P(QuicSessionTest, DoNotSendGoAwayTwice) { |
| 441 EXPECT_CALL(*connection_, |
| 442 SendGoAway(QUIC_PEER_GOING_AWAY, 0u, "Going Away.")).Times(1); |
| 443 session_.SendGoAway(QUIC_PEER_GOING_AWAY, "Going Away."); |
| 444 EXPECT_TRUE(session_.goaway_sent()); |
| 445 session_.SendGoAway(QUIC_PEER_GOING_AWAY, "Going Away."); |
439 } | 446 } |
440 | 447 |
441 TEST_P(QuicSessionTest, IncreasedTimeoutAfterCryptoHandshake) { | 448 TEST_P(QuicSessionTest, IncreasedTimeoutAfterCryptoHandshake) { |
442 EXPECT_EQ(kDefaultInitialTimeoutSecs, | 449 EXPECT_EQ(kDefaultInitialTimeoutSecs, |
443 QuicConnectionPeer::GetNetworkTimeout(connection_).ToSeconds()); | 450 QuicConnectionPeer::GetNetworkTimeout(connection_).ToSeconds()); |
444 CryptoHandshakeMessage msg; | 451 CryptoHandshakeMessage msg; |
445 session_.crypto_stream_.OnHandshakeMessage(msg); | 452 session_.crypto_stream_.OnHandshakeMessage(msg); |
446 EXPECT_EQ(kDefaultTimeoutSecs, | 453 EXPECT_EQ(kDefaultTimeoutSecs, |
447 QuicConnectionPeer::GetNetworkTimeout(connection_).ToSeconds()); | 454 QuicConnectionPeer::GetNetworkTimeout(connection_).ToSeconds()); |
448 } | 455 } |
449 | 456 |
450 TEST_P(QuicSessionTest, RstStreamBeforeHeadersDecompressed) { | 457 TEST_P(QuicSessionTest, RstStreamBeforeHeadersDecompressed) { |
451 QuicStreamId stream_id1 = 5; | 458 QuicStreamId stream_id1 = 5; |
452 // Send two bytes of payload. | 459 // Send two bytes of payload. |
453 QuicStreamFrame data1(stream_id1, false, 0, MakeIOVector("HT")); | 460 QuicStreamFrame data1(stream_id1, false, 0, MakeIOVector("HT")); |
454 vector<QuicStreamFrame> frames; | 461 vector<QuicStreamFrame> frames; |
455 frames.push_back(data1); | 462 frames.push_back(data1); |
456 EXPECT_TRUE(session_.OnStreamFrames(frames)); | 463 EXPECT_TRUE(session_.OnStreamFrames(frames)); |
457 EXPECT_EQ(1u, session_.GetNumOpenStreams()); | 464 EXPECT_EQ(1u, session_.GetNumOpenStreams()); |
458 | 465 |
459 QuicRstStreamFrame rst1(stream_id1, QUIC_STREAM_NO_ERROR, 0); | 466 QuicRstStreamFrame rst1(stream_id1, QUIC_STREAM_NO_ERROR, 0); |
460 session_.OnRstStream(rst1); | 467 session_.OnRstStream(rst1); |
461 EXPECT_EQ(0u, session_.GetNumOpenStreams()); | 468 EXPECT_EQ(0u, session_.GetNumOpenStreams()); |
462 } | 469 } |
463 | 470 |
464 } // namespace | 471 } // namespace |
465 } // namespace test | 472 } // namespace test |
466 } // namespace net | 473 } // namespace net |
OLD | NEW |