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/core/quic_connection.h" | 5 #include "net/quic/core/quic_connection.h" |
6 | 6 |
7 #include <errno.h> | 7 #include <errno.h> |
8 #include <memory> | 8 #include <memory> |
9 #include <ostream> | 9 #include <ostream> |
10 #include <utility> | 10 #include <utility> |
11 | 11 |
12 #include "base/bind.h" | 12 #include "base/bind.h" |
13 #include "base/macros.h" | 13 #include "base/macros.h" |
14 #include "net/base/net_errors.h" | 14 #include "net/base/net_errors.h" |
15 #include "net/quic/core/congestion_control/loss_detection_interface.h" | 15 #include "net/quic/core/congestion_control/loss_detection_interface.h" |
16 #include "net/quic/core/congestion_control/send_algorithm_interface.h" | 16 #include "net/quic/core/congestion_control/send_algorithm_interface.h" |
17 #include "net/quic/core/crypto/null_encrypter.h" | 17 #include "net/quic/core/crypto/null_encrypter.h" |
18 #include "net/quic/core/crypto/quic_decrypter.h" | 18 #include "net/quic/core/crypto/quic_decrypter.h" |
19 #include "net/quic/core/crypto/quic_encrypter.h" | 19 #include "net/quic/core/crypto/quic_encrypter.h" |
20 #include "net/quic/core/quic_packets.h" | 20 #include "net/quic/core/quic_packets.h" |
21 #include "net/quic/core/quic_simple_buffer_allocator.h" | 21 #include "net/quic/core/quic_simple_buffer_allocator.h" |
22 #include "net/quic/core/quic_utils.h" | 22 #include "net/quic/core/quic_utils.h" |
23 #include "net/quic/platform/api/quic_flags.h" | 23 #include "net/quic/platform/api/quic_flags.h" |
24 #include "net/quic/platform/api/quic_logging.h" | 24 #include "net/quic/platform/api/quic_logging.h" |
25 #include "net/quic/platform/api/quic_reference_counted.h" | 25 #include "net/quic/platform/api/quic_reference_counted.h" |
26 #include "net/quic/platform/api/quic_str_cat.h" | 26 #include "net/quic/platform/api/quic_str_cat.h" |
| 27 #include "net/quic/platform/api/quic_string_piece.h" |
| 28 #include "net/quic/platform/api/quic_test.h" |
27 #include "net/quic/test_tools/mock_clock.h" | 29 #include "net/quic/test_tools/mock_clock.h" |
28 #include "net/quic/test_tools/mock_random.h" | 30 #include "net/quic/test_tools/mock_random.h" |
29 #include "net/quic/test_tools/quic_config_peer.h" | 31 #include "net/quic/test_tools/quic_config_peer.h" |
30 #include "net/quic/test_tools/quic_connection_peer.h" | 32 #include "net/quic/test_tools/quic_connection_peer.h" |
31 #include "net/quic/test_tools/quic_framer_peer.h" | 33 #include "net/quic/test_tools/quic_framer_peer.h" |
32 #include "net/quic/test_tools/quic_packet_creator_peer.h" | 34 #include "net/quic/test_tools/quic_packet_creator_peer.h" |
33 #include "net/quic/test_tools/quic_packet_generator_peer.h" | 35 #include "net/quic/test_tools/quic_packet_generator_peer.h" |
34 #include "net/quic/test_tools/quic_sent_packet_manager_peer.h" | 36 #include "net/quic/test_tools/quic_sent_packet_manager_peer.h" |
35 #include "net/quic/test_tools/quic_test_utils.h" | 37 #include "net/quic/test_tools/quic_test_utils.h" |
36 #include "net/quic/test_tools/simple_quic_framer.h" | 38 #include "net/quic/test_tools/simple_quic_framer.h" |
37 #include "net/test/gtest_util.h" | 39 #include "net/test/gtest_util.h" |
38 #include "testing/gmock/include/gmock/gmock.h" | |
39 #include "testing/gmock_mutant.h" | 40 #include "testing/gmock_mutant.h" |
40 #include "testing/gtest/include/gtest/gtest.h" | |
41 | 41 |
42 using std::string; | 42 using std::string; |
43 using testing::AnyNumber; | 43 using testing::AnyNumber; |
44 using testing::AtLeast; | 44 using testing::AtLeast; |
45 using testing::DoAll; | 45 using testing::DoAll; |
46 using testing::InSequence; | 46 using testing::InSequence; |
47 using testing::Invoke; | 47 using testing::Invoke; |
48 using testing::InvokeWithoutArgs; | 48 using testing::InvokeWithoutArgs; |
49 using testing::NiceMock; | 49 using testing::NiceMock; |
50 using testing::Ref; | 50 using testing::Ref; |
(...skipping 628 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
679 {AckResponse::kDefer, AckResponse::kImmediate}) { | 679 {AckResponse::kDefer, AckResponse::kImmediate}) { |
680 for (bool stop_waiting : {true, false}) { | 680 for (bool stop_waiting : {true, false}) { |
681 params.push_back( | 681 params.push_back( |
682 TestParams(all_supported_versions[i], ack_response, stop_waiting)); | 682 TestParams(all_supported_versions[i], ack_response, stop_waiting)); |
683 } | 683 } |
684 } | 684 } |
685 } | 685 } |
686 return params; | 686 return params; |
687 } | 687 } |
688 | 688 |
689 class QuicConnectionTest : public ::testing::TestWithParam<TestParams> { | 689 class QuicConnectionTest : public QuicTestWithParam<TestParams> { |
690 protected: | 690 protected: |
691 QuicConnectionTest() | 691 QuicConnectionTest() |
692 : connection_id_(42), | 692 : connection_id_(42), |
693 framer_(SupportedVersions(version()), | 693 framer_(SupportedVersions(version()), |
694 QuicTime::Zero(), | 694 QuicTime::Zero(), |
695 Perspective::IS_CLIENT), | 695 Perspective::IS_CLIENT), |
696 send_algorithm_(new StrictMock<MockSendAlgorithm>), | 696 send_algorithm_(new StrictMock<MockSendAlgorithm>), |
697 loss_algorithm_(new MockLossAlgorithm()), | 697 loss_algorithm_(new MockLossAlgorithm()), |
698 helper_(new TestConnectionHelper(&clock_, &random_generator_)), | 698 helper_(new TestConnectionHelper(&clock_, &random_generator_)), |
699 alarm_factory_(new TestAlarmFactory()), | 699 alarm_factory_(new TestAlarmFactory()), |
(...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1054 EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _)) | 1054 EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _)) |
1055 .WillRepeatedly(testing::Return(QuicTime::Delta::Zero())); | 1055 .WillRepeatedly(testing::Return(QuicTime::Delta::Zero())); |
1056 } | 1056 } |
1057 | 1057 |
1058 void set_perspective(Perspective perspective) { | 1058 void set_perspective(Perspective perspective) { |
1059 connection_.set_perspective(perspective); | 1059 connection_.set_perspective(perspective); |
1060 QuicFramerPeer::SetPerspective(&peer_framer_, | 1060 QuicFramerPeer::SetPerspective(&peer_framer_, |
1061 InvertPerspective(perspective)); | 1061 InvertPerspective(perspective)); |
1062 } | 1062 } |
1063 | 1063 |
1064 QuicFlagSaver flags_; // Save/restore all QUIC flag values. | |
1065 | |
1066 QuicConnectionId connection_id_; | 1064 QuicConnectionId connection_id_; |
1067 QuicFramer framer_; | 1065 QuicFramer framer_; |
1068 | 1066 |
1069 MockSendAlgorithm* send_algorithm_; | 1067 MockSendAlgorithm* send_algorithm_; |
1070 std::unique_ptr<MockLossAlgorithm> loss_algorithm_; | 1068 std::unique_ptr<MockLossAlgorithm> loss_algorithm_; |
1071 MockClock clock_; | 1069 MockClock clock_; |
1072 MockRandom random_generator_; | 1070 MockRandom random_generator_; |
1073 SimpleBufferAllocator buffer_allocator_; | 1071 SimpleBufferAllocator buffer_allocator_; |
1074 std::unique_ptr<TestConnectionHelper> helper_; | 1072 std::unique_ptr<TestConnectionHelper> helper_; |
1075 std::unique_ptr<TestAlarmFactory> alarm_factory_; | 1073 std::unique_ptr<TestAlarmFactory> alarm_factory_; |
(...skipping 4140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5216 error_details, ConnectionCloseSource::FROM_PEER)); | 5214 error_details, ConnectionCloseSource::FROM_PEER)); |
5217 connection_.set_perspective(Perspective::IS_CLIENT); | 5215 connection_.set_perspective(Perspective::IS_CLIENT); |
5218 connection_.CloseConnection(QUIC_CRYPTO_HANDSHAKE_STATELESS_REJECT, | 5216 connection_.CloseConnection(QUIC_CRYPTO_HANDSHAKE_STATELESS_REJECT, |
5219 error_details, | 5217 error_details, |
5220 ConnectionCloseBehavior::SILENT_CLOSE); | 5218 ConnectionCloseBehavior::SILENT_CLOSE); |
5221 } | 5219 } |
5222 | 5220 |
5223 } // namespace | 5221 } // namespace |
5224 } // namespace test | 5222 } // namespace test |
5225 } // namespace net | 5223 } // namespace net |
OLD | NEW |