| 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_stream_factory.h" | 5 #include "net/quic/quic_stream_factory.h" |
| 6 | 6 |
| 7 #include "base/run_loop.h" | 7 #include "base/run_loop.h" |
| 8 #include "base/string_util.h" | 8 #include "base/string_util.h" |
| 9 #include "net/base/mock_host_resolver.h" | 9 #include "net/base/mock_host_resolver.h" |
| 10 #include "net/http/http_response_headers.h" | 10 #include "net/http/http_response_headers.h" |
| (...skipping 20 matching lines...) Expand all Loading... |
| 31 } | 31 } |
| 32 | 32 |
| 33 scoped_ptr<QuicEncryptedPacket> ConstructChlo() { | 33 scoped_ptr<QuicEncryptedPacket> ConstructChlo() { |
| 34 const std::string& host = host_port_proxy_pair_.first.host(); | 34 const std::string& host = host_port_proxy_pair_.first.host(); |
| 35 scoped_ptr<QuicPacket> chlo(ConstructClientHelloPacket(0xDEADBEEF, | 35 scoped_ptr<QuicPacket> chlo(ConstructClientHelloPacket(0xDEADBEEF, |
| 36 clock_, | 36 clock_, |
| 37 &random_generator_, | 37 &random_generator_, |
| 38 host)); | 38 host)); |
| 39 QuicFramer framer(QuicDecrypter::Create(kNULL), | 39 QuicFramer framer(QuicDecrypter::Create(kNULL), |
| 40 QuicEncrypter::Create(kNULL)); | 40 QuicEncrypter::Create(kNULL)); |
| 41 return scoped_ptr<QuicEncryptedPacket>(framer.EncryptPacket(*chlo)); | 41 return scoped_ptr<QuicEncryptedPacket>(framer.EncryptPacket(1, *chlo)); |
| 42 } | 42 } |
| 43 | 43 |
| 44 scoped_ptr<QuicEncryptedPacket> ConstructShlo() { | 44 scoped_ptr<QuicEncryptedPacket> ConstructShlo() { |
| 45 scoped_ptr<QuicPacket> shlo(ConstructHandshakePacket(0xDEADBEEF, kSHLO)); | 45 scoped_ptr<QuicPacket> shlo(ConstructHandshakePacket(0xDEADBEEF, kSHLO)); |
| 46 QuicFramer framer(QuicDecrypter::Create(kNULL), | 46 QuicFramer framer(QuicDecrypter::Create(kNULL), |
| 47 QuicEncrypter::Create(kNULL)); | 47 QuicEncrypter::Create(kNULL)); |
| 48 return scoped_ptr<QuicEncryptedPacket>(framer.EncryptPacket(*shlo)); | 48 return scoped_ptr<QuicEncryptedPacket>(framer.EncryptPacket(1, *shlo)); |
| 49 } | 49 } |
| 50 | 50 |
| 51 scoped_ptr<QuicEncryptedPacket> ConstructRstPacket( | 51 scoped_ptr<QuicEncryptedPacket> ConstructRstPacket( |
| 52 QuicPacketSequenceNumber num, | 52 QuicPacketSequenceNumber num, |
| 53 QuicStreamId stream_id) { | 53 QuicStreamId stream_id) { |
| 54 QuicPacketHeader header; | 54 QuicPacketHeader header; |
| 55 header.public_header.guid = 0xDEADBEEF; | 55 header.public_header.guid = 0xDEADBEEF; |
| 56 header.public_header.flags = PACKET_PUBLIC_FLAGS_NONE; | 56 header.public_header.reset_flag = false; |
| 57 header.public_header.version_flag = false; |
| 57 header.packet_sequence_number = num; | 58 header.packet_sequence_number = num; |
| 58 header.private_flags = PACKET_PRIVATE_FLAGS_NONE; | 59 header.entropy_flag = false; |
| 60 header.fec_entropy_flag = false; |
| 61 header.fec_flag = false; |
| 59 header.fec_group = 0; | 62 header.fec_group = 0; |
| 60 | 63 |
| 61 QuicRstStreamFrame rst(stream_id, 0, QUIC_NO_ERROR); | 64 QuicRstStreamFrame rst(stream_id, QUIC_NO_ERROR); |
| 62 return scoped_ptr<QuicEncryptedPacket>( | 65 return scoped_ptr<QuicEncryptedPacket>( |
| 63 ConstructPacket(header, QuicFrame(&rst))); | 66 ConstructPacket(header, QuicFrame(&rst))); |
| 64 } | 67 } |
| 65 | 68 |
| 66 scoped_ptr<QuicEncryptedPacket> ConstructAckPacket( | 69 scoped_ptr<QuicEncryptedPacket> ConstructAckPacket( |
| 67 QuicPacketSequenceNumber largest_received, | 70 QuicPacketSequenceNumber largest_received, |
| 68 QuicPacketSequenceNumber least_unacked) { | 71 QuicPacketSequenceNumber least_unacked) { |
| 69 QuicPacketHeader header; | 72 QuicPacketHeader header; |
| 70 header.public_header.guid = 0xDEADBEEF; | 73 header.public_header.guid = 0xDEADBEEF; |
| 71 header.public_header.flags = PACKET_PUBLIC_FLAGS_NONE; | 74 header.public_header.reset_flag = false; |
| 75 header.public_header.version_flag = false; |
| 72 header.packet_sequence_number = 2; | 76 header.packet_sequence_number = 2; |
| 73 header.private_flags = PACKET_PRIVATE_FLAGS_NONE; | 77 header.entropy_flag = false; |
| 78 header.fec_entropy_flag = false; |
| 79 header.fec_flag = false; |
| 74 header.fec_group = 0; | 80 header.fec_group = 0; |
| 75 | 81 |
| 76 QuicAckFrame ack(largest_received, least_unacked); | 82 QuicAckFrame ack(largest_received, least_unacked); |
| 77 | |
| 78 QuicCongestionFeedbackFrame feedback; | 83 QuicCongestionFeedbackFrame feedback; |
| 79 feedback.type = kTCP; | 84 feedback.type = kTCP; |
| 80 feedback.tcp.accumulated_number_of_lost_packets = 0; | 85 feedback.tcp.accumulated_number_of_lost_packets = 0; |
| 81 feedback.tcp.receive_window = 16000; | 86 feedback.tcp.receive_window = 16000; |
| 82 | 87 |
| 83 QuicFramer framer(QuicDecrypter::Create(kNULL), | 88 QuicFramer framer(QuicDecrypter::Create(kNULL), |
| 84 QuicEncrypter::Create(kNULL)); | 89 QuicEncrypter::Create(kNULL)); |
| 85 QuicFrames frames; | 90 QuicFrames frames; |
| 86 frames.push_back(QuicFrame(&ack)); | 91 frames.push_back(QuicFrame(&ack)); |
| 87 frames.push_back(QuicFrame(&feedback)); | 92 frames.push_back(QuicFrame(&feedback)); |
| 88 scoped_ptr<QuicPacket> packet( | 93 scoped_ptr<QuicPacket> packet( |
| 89 framer.ConstructFrameDataPacket(header, frames)); | 94 framer.ConstructFrameDataPacket(header, frames).packet); |
| 90 return scoped_ptr<QuicEncryptedPacket>(framer.EncryptPacket(*packet)); | 95 return scoped_ptr<QuicEncryptedPacket>( |
| 96 framer.EncryptPacket(header.packet_sequence_number, *packet)); |
| 91 } | 97 } |
| 92 | 98 |
| 93 // Returns a newly created packet to send congestion feedback data. | 99 // Returns a newly created packet to send congestion feedback data. |
| 94 scoped_ptr<QuicEncryptedPacket> ConstructFeedbackPacket( | 100 scoped_ptr<QuicEncryptedPacket> ConstructFeedbackPacket( |
| 95 QuicPacketSequenceNumber sequence_number) { | 101 QuicPacketSequenceNumber sequence_number) { |
| 96 QuicPacketHeader header; | 102 QuicPacketHeader header; |
| 97 header.public_header.guid = 0xDEADBEEF; | 103 header.public_header.guid = 0xDEADBEEF; |
| 98 header.public_header.flags = PACKET_PUBLIC_FLAGS_NONE; | 104 header.public_header.reset_flag = false; |
| 105 header.public_header.version_flag = false; |
| 99 header.packet_sequence_number = sequence_number; | 106 header.packet_sequence_number = sequence_number; |
| 100 header.private_flags = PACKET_PRIVATE_FLAGS_NONE; | 107 header.entropy_flag = false; |
| 108 header.fec_entropy_flag = false; |
| 109 header.fec_flag = false; |
| 101 header.fec_group = 0; | 110 header.fec_group = 0; |
| 102 | 111 |
| 103 QuicCongestionFeedbackFrame frame; | 112 QuicCongestionFeedbackFrame frame; |
| 104 frame.type = kTCP; | 113 frame.type = kTCP; |
| 105 frame.tcp.accumulated_number_of_lost_packets = 0; | 114 frame.tcp.accumulated_number_of_lost_packets = 0; |
| 106 frame.tcp.receive_window = 16000; | 115 frame.tcp.receive_window = 16000; |
| 107 | 116 |
| 108 return scoped_ptr<QuicEncryptedPacket>( | 117 return scoped_ptr<QuicEncryptedPacket>( |
| 109 ConstructPacket(header, QuicFrame(&frame))); | 118 ConstructPacket(header, QuicFrame(&frame))); |
| 110 } | 119 } |
| 111 | 120 |
| 112 scoped_ptr<QuicEncryptedPacket> ConstructPacket( | 121 scoped_ptr<QuicEncryptedPacket> ConstructPacket( |
| 113 const QuicPacketHeader& header, | 122 const QuicPacketHeader& header, |
| 114 const QuicFrame& frame) { | 123 const QuicFrame& frame) { |
| 115 QuicFramer framer(QuicDecrypter::Create(kNULL), | 124 QuicFramer framer(QuicDecrypter::Create(kNULL), |
| 116 QuicEncrypter::Create(kNULL)); | 125 QuicEncrypter::Create(kNULL)); |
| 117 QuicFrames frames; | 126 QuicFrames frames; |
| 118 frames.push_back(frame); | 127 frames.push_back(frame); |
| 119 scoped_ptr<QuicPacket> packet( | 128 scoped_ptr<QuicPacket> packet( |
| 120 framer.ConstructFrameDataPacket(header, frames)); | 129 framer.ConstructFrameDataPacket(header, frames).packet); |
| 121 return scoped_ptr<QuicEncryptedPacket>(framer.EncryptPacket(*packet)); | 130 return scoped_ptr<QuicEncryptedPacket>( |
| 131 framer.EncryptPacket(header.packet_sequence_number, *packet)); |
| 122 } | 132 } |
| 123 | 133 |
| 124 MockHostResolver host_resolver_; | 134 MockHostResolver host_resolver_; |
| 125 MockClientSocketFactory socket_factory_; | 135 MockClientSocketFactory socket_factory_; |
| 126 MockRandom random_generator_; | 136 MockRandom random_generator_; |
| 127 MockClock* clock_; // Owned by factory_. | 137 MockClock* clock_; // Owned by factory_. |
| 128 QuicStreamFactory factory_; | 138 QuicStreamFactory factory_; |
| 129 HostPortProxyPair host_port_proxy_pair_; | 139 HostPortProxyPair host_port_proxy_pair_; |
| 130 BoundNetLog net_log_; | 140 BoundNetLog net_log_; |
| 131 TestCompletionCallback callback_; | 141 TestCompletionCallback callback_; |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 278 stream.reset(); // Will reset stream 3. | 288 stream.reset(); // Will reset stream 3. |
| 279 | 289 |
| 280 EXPECT_TRUE(socket_data.at_read_eof()); | 290 EXPECT_TRUE(socket_data.at_read_eof()); |
| 281 EXPECT_TRUE(socket_data.at_write_eof()); | 291 EXPECT_TRUE(socket_data.at_write_eof()); |
| 282 EXPECT_TRUE(socket_data2.at_read_eof()); | 292 EXPECT_TRUE(socket_data2.at_read_eof()); |
| 283 EXPECT_TRUE(socket_data2.at_write_eof()); | 293 EXPECT_TRUE(socket_data2.at_write_eof()); |
| 284 } | 294 } |
| 285 | 295 |
| 286 } // namespace test | 296 } // namespace test |
| 287 } // namespace net | 297 } // namespace net |
| OLD | NEW |