| 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/tools/quic/quic_dispatcher.h" | 5 #include "net/tools/quic/quic_dispatcher.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/strings/string_piece.h" | 9 #include "base/strings/string_piece.h" |
| 10 #include "net/quic/crypto/crypto_handshake.h" | 10 #include "net/quic/crypto/crypto_handshake.h" |
| 11 #include "net/quic/crypto/quic_crypto_server_config.h" | 11 #include "net/quic/crypto/quic_crypto_server_config.h" |
| 12 #include "net/quic/crypto/quic_random.h" | 12 #include "net/quic/crypto/quic_random.h" |
| 13 #include "net/quic/quic_crypto_stream.h" | 13 #include "net/quic/quic_crypto_stream.h" |
| 14 #include "net/quic/quic_utils.h" | 14 #include "net/quic/quic_utils.h" |
| 15 #include "net/quic/test_tools/quic_test_utils.h" | 15 #include "net/quic/test_tools/quic_test_utils.h" |
| 16 #include "net/tools/epoll_server/epoll_server.h" | 16 #include "net/tools/epoll_server/epoll_server.h" |
| 17 #include "net/tools/quic/quic_packet_writer_wrapper.h" | 17 #include "net/tools/quic/quic_packet_writer_wrapper.h" |
| 18 #include "net/tools/quic/quic_time_wait_list_manager.h" | 18 #include "net/tools/quic/quic_time_wait_list_manager.h" |
| 19 #include "net/tools/quic/test_tools/quic_dispatcher_peer.h" | 19 #include "net/tools/quic/test_tools/quic_dispatcher_peer.h" |
| 20 #include "net/tools/quic/test_tools/quic_test_utils.h" | 20 #include "net/tools/quic/test_tools/quic_test_utils.h" |
| 21 #include "testing/gmock/include/gmock/gmock.h" | 21 #include "testing/gmock/include/gmock/gmock.h" |
| 22 #include "testing/gtest/include/gtest/gtest.h" | 22 #include "testing/gtest/include/gtest/gtest.h" |
| 23 | 23 |
| 24 using base::StringPiece; | 24 using base::StringPiece; |
| 25 using net::EpollServer; | 25 using net::EpollServer; |
| 26 using net::test::MockSession; | 26 using net::test::MockSession; |
| 27 using net::test::ConstructEncryptedPacket; |
| 27 using net::tools::test::MockConnection; | 28 using net::tools::test::MockConnection; |
| 28 using std::make_pair; | 29 using std::make_pair; |
| 29 using testing::_; | 30 using testing::_; |
| 30 using testing::DoAll; | 31 using testing::DoAll; |
| 31 using testing::Invoke; | 32 using testing::Invoke; |
| 32 using testing::InSequence; | 33 using testing::InSequence; |
| 33 using testing::WithoutArgs; | 34 using testing::WithoutArgs; |
| 34 | 35 |
| 35 namespace net { | 36 namespace net { |
| 36 namespace tools { | 37 namespace tools { |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 101 virtual ~QuicDispatcherTest() {} | 102 virtual ~QuicDispatcherTest() {} |
| 102 | 103 |
| 103 MockConnection* connection1() { | 104 MockConnection* connection1() { |
| 104 return reinterpret_cast<MockConnection*>(session1_->connection()); | 105 return reinterpret_cast<MockConnection*>(session1_->connection()); |
| 105 } | 106 } |
| 106 | 107 |
| 107 MockConnection* connection2() { | 108 MockConnection* connection2() { |
| 108 return reinterpret_cast<MockConnection*>(session2_->connection()); | 109 return reinterpret_cast<MockConnection*>(session2_->connection()); |
| 109 } | 110 } |
| 110 | 111 |
| 111 QuicEncryptedPacket* ConstructEncryptedPacket( | |
| 112 QuicConnectionId connection_id, | |
| 113 bool version_flag, | |
| 114 bool reset_flag, | |
| 115 QuicPacketSequenceNumber sequence_number, | |
| 116 const string& data) { | |
| 117 QuicPacketHeader header; | |
| 118 header.public_header.connection_id = connection_id; | |
| 119 header.public_header.connection_id_length = PACKET_8BYTE_CONNECTION_ID; | |
| 120 header.public_header.version_flag = version_flag; | |
| 121 header.public_header.reset_flag = reset_flag; | |
| 122 header.public_header.sequence_number_length = PACKET_6BYTE_SEQUENCE_NUMBER; | |
| 123 header.packet_sequence_number = sequence_number; | |
| 124 header.entropy_flag = false; | |
| 125 header.entropy_hash = 0; | |
| 126 header.fec_flag = false; | |
| 127 header.is_in_fec_group = NOT_IN_FEC_GROUP; | |
| 128 header.fec_group = 0; | |
| 129 QuicStreamFrame stream_frame(1, false, 0, MakeIOVector(data)); | |
| 130 QuicFrame frame(&stream_frame); | |
| 131 QuicFrames frames; | |
| 132 frames.push_back(frame); | |
| 133 QuicFramer framer(QuicSupportedVersions(), QuicTime::Zero(), false); | |
| 134 scoped_ptr<QuicPacket> packet( | |
| 135 framer.BuildUnsizedDataPacket(header, frames).packet); | |
| 136 EXPECT_TRUE(packet != NULL); | |
| 137 QuicEncryptedPacket* encrypted = framer.EncryptPacket(ENCRYPTION_NONE, | |
| 138 sequence_number, | |
| 139 *packet); | |
| 140 EXPECT_TRUE(encrypted != NULL); | |
| 141 data_ = string(encrypted->data(), encrypted->length()); | |
| 142 return encrypted; | |
| 143 } | |
| 144 | |
| 145 void ProcessPacket(IPEndPoint addr, | 112 void ProcessPacket(IPEndPoint addr, |
| 146 QuicConnectionId connection_id, | 113 QuicConnectionId connection_id, |
| 147 bool has_version_flag, | 114 bool has_version_flag, |
| 148 const string& data) { | 115 const string& data) { |
| 149 scoped_ptr<QuicEncryptedPacket> packet(ConstructEncryptedPacket( | 116 scoped_ptr<QuicEncryptedPacket> packet(ConstructEncryptedPacket( |
| 150 connection_id, has_version_flag, false, 1, data)); | 117 connection_id, has_version_flag, false, 1, data)); |
| 118 data_ = string(packet->data(), packet->length()); |
| 151 dispatcher_.ProcessPacket(IPEndPoint(), addr, *packet.get()); | 119 dispatcher_.ProcessPacket(IPEndPoint(), addr, *packet.get()); |
| 152 } | 120 } |
| 153 | 121 |
| 154 void ValidatePacket(const QuicEncryptedPacket& packet) { | 122 void ValidatePacket(const QuicEncryptedPacket& packet) { |
| 155 EXPECT_EQ(data_.length(), packet.AsStringPiece().length()); | 123 EXPECT_EQ(data_.length(), packet.AsStringPiece().length()); |
| 156 EXPECT_EQ(data_, packet.AsStringPiece()); | 124 EXPECT_EQ(data_, packet.AsStringPiece()); |
| 157 } | 125 } |
| 158 | 126 |
| 159 EpollServer eps_; | 127 EpollServer eps_; |
| 160 QuicConfig config_; | 128 QuicConfig config_; |
| (...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 467 // And we'll resume where we left off when we get another call. | 435 // And we'll resume where we left off when we get another call. |
| 468 EXPECT_CALL(*connection2(), OnCanWrite()); | 436 EXPECT_CALL(*connection2(), OnCanWrite()); |
| 469 dispatcher_.OnCanWrite(); | 437 dispatcher_.OnCanWrite(); |
| 470 EXPECT_FALSE(dispatcher_.HasPendingWrites()); | 438 EXPECT_FALSE(dispatcher_.HasPendingWrites()); |
| 471 } | 439 } |
| 472 | 440 |
| 473 } // namespace | 441 } // namespace |
| 474 } // namespace test | 442 } // namespace test |
| 475 } // namespace tools | 443 } // namespace tools |
| 476 } // namespace net | 444 } // namespace net |
| OLD | NEW |