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_http_stream.h" | 5 #include "net/quic/quic_http_stream.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "net/base/net_errors.h" | 9 #include "net/base/net_errors.h" |
10 #include "net/base/test_completion_callback.h" | 10 #include "net/base/test_completion_callback.h" |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
52 const char kUploadData[] = "hello world!"; | 52 const char kUploadData[] = "hello world!"; |
53 const char kServerHostname[] = "www.google.com"; | 53 const char kServerHostname[] = "www.google.com"; |
54 const uint16 kServerPort = 80; | 54 const uint16 kServerPort = 80; |
55 | 55 |
56 class TestQuicConnection : public QuicConnection { | 56 class TestQuicConnection : public QuicConnection { |
57 public: | 57 public: |
58 TestQuicConnection(const QuicVersionVector& versions, | 58 TestQuicConnection(const QuicVersionVector& versions, |
59 QuicConnectionId connection_id, | 59 QuicConnectionId connection_id, |
60 IPEndPoint address, | 60 IPEndPoint address, |
61 QuicConnectionHelper* helper, | 61 QuicConnectionHelper* helper, |
62 QuicPacketWriter* writer) | 62 const QuicConnection::PacketWriterFactory& writer_factory) |
63 : QuicConnection(connection_id, | 63 : QuicConnection(connection_id, |
64 address, | 64 address, |
65 helper, | 65 helper, |
66 writer, | 66 writer_factory, |
67 false /* owns_writer */, | 67 true /* owns_writer */, |
68 false /* is_server */, | 68 false /* is_server */, |
69 versions) { | 69 versions) { |
70 } | 70 } |
71 | 71 |
72 void SetSendAlgorithm(SendAlgorithmInterface* send_algorithm) { | 72 void SetSendAlgorithm(SendAlgorithmInterface* send_algorithm) { |
73 QuicConnectionPeer::SetSendAlgorithm(this, send_algorithm); | 73 QuicConnectionPeer::SetSendAlgorithm(this, send_algorithm); |
74 } | 74 } |
75 | 75 |
76 void SetReceiveAlgorithm(ReceiveAlgorithmInterface* receive_algorithm) { | 76 void SetReceiveAlgorithm(ReceiveAlgorithmInterface* receive_algorithm) { |
77 QuicConnectionPeer::SetReceiveAlgorithm(this, receive_algorithm); | 77 QuicConnectionPeer::SetReceiveAlgorithm(this, receive_algorithm); |
(...skipping 18 matching lines...) Expand all Loading... |
96 explicit AutoClosingStream(const base::WeakPtr<QuicClientSession>& session) | 96 explicit AutoClosingStream(const base::WeakPtr<QuicClientSession>& session) |
97 : QuicHttpStream(session) { | 97 : QuicHttpStream(session) { |
98 } | 98 } |
99 | 99 |
100 virtual int OnDataReceived(const char* data, int length) OVERRIDE { | 100 virtual int OnDataReceived(const char* data, int length) OVERRIDE { |
101 Close(false); | 101 Close(false); |
102 return OK; | 102 return OK; |
103 } | 103 } |
104 }; | 104 }; |
105 | 105 |
| 106 class TestPacketWriterFactory : public QuicConnection::PacketWriterFactory { |
| 107 public: |
| 108 explicit TestPacketWriterFactory(DatagramClientSocket* socket) |
| 109 : socket_(socket) {} |
| 110 virtual ~TestPacketWriterFactory() {} |
| 111 |
| 112 virtual QuicPacketWriter* Create(QuicConnection* connection) const OVERRIDE { |
| 113 return new QuicDefaultPacketWriter(socket_); |
| 114 } |
| 115 |
| 116 private: |
| 117 DatagramClientSocket* socket_; |
| 118 }; |
| 119 |
106 } // namespace | 120 } // namespace |
107 | 121 |
108 class QuicHttpStreamPeer { | 122 class QuicHttpStreamPeer { |
109 public: | 123 public: |
110 static QuicReliableClientStream* GetQuicReliableClientStream( | 124 static QuicReliableClientStream* GetQuicReliableClientStream( |
111 QuicHttpStream* stream) { | 125 QuicHttpStream* stream) { |
112 return stream->stream_; | 126 return stream->stream_; |
113 } | 127 } |
114 }; | 128 }; |
115 | 129 |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
195 Return(QuicTime::Delta::Zero())); | 209 Return(QuicTime::Delta::Zero())); |
196 EXPECT_CALL(*send_algorithm_, GetCongestionWindow()).WillRepeatedly( | 210 EXPECT_CALL(*send_algorithm_, GetCongestionWindow()).WillRepeatedly( |
197 Return(kMaxPacketSize)); | 211 Return(kMaxPacketSize)); |
198 EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _, _)). | 212 EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _, _)). |
199 WillRepeatedly(Return(QuicTime::Delta::Zero())); | 213 WillRepeatedly(Return(QuicTime::Delta::Zero())); |
200 EXPECT_CALL(*send_algorithm_, BandwidthEstimate()).WillRepeatedly( | 214 EXPECT_CALL(*send_algorithm_, BandwidthEstimate()).WillRepeatedly( |
201 Return(QuicBandwidth::Zero())); | 215 Return(QuicBandwidth::Zero())); |
202 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)).Times(AnyNumber()); | 216 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)).Times(AnyNumber()); |
203 helper_.reset(new QuicConnectionHelper(runner_.get(), &clock_, | 217 helper_.reset(new QuicConnectionHelper(runner_.get(), &clock_, |
204 &random_generator_)); | 218 &random_generator_)); |
205 writer_.reset(new QuicDefaultPacketWriter(socket)); | 219 TestPacketWriterFactory writer_factory(socket); |
206 connection_ = new TestQuicConnection(SupportedVersions(GetParam()), | 220 connection_ = new TestQuicConnection(SupportedVersions(GetParam()), |
207 connection_id_, peer_addr_, | 221 connection_id_, peer_addr_, |
208 helper_.get(), writer_.get()); | 222 helper_.get(), writer_factory); |
209 connection_->set_visitor(&visitor_); | 223 connection_->set_visitor(&visitor_); |
210 connection_->SetSendAlgorithm(send_algorithm_); | 224 connection_->SetSendAlgorithm(send_algorithm_); |
211 connection_->SetReceiveAlgorithm(receive_algorithm_); | 225 connection_->SetReceiveAlgorithm(receive_algorithm_); |
212 crypto_config_.SetDefaults(); | 226 crypto_config_.SetDefaults(); |
213 session_.reset( | 227 session_.reset( |
214 new QuicClientSession(connection_, | 228 new QuicClientSession(connection_, |
215 scoped_ptr<DatagramClientSocket>(socket), | 229 scoped_ptr<DatagramClientSocket>(socket), |
216 writer_.Pass(), NULL, | 230 NULL, |
217 &crypto_client_stream_factory_, | 231 &crypto_client_stream_factory_, |
218 &transport_security_state_, | 232 &transport_security_state_, |
219 make_scoped_ptr((QuicServerInfo*)NULL), | 233 make_scoped_ptr((QuicServerInfo*)NULL), |
220 QuicServerId(kServerHostname, kServerPort, | 234 QuicServerId(kServerHostname, kServerPort, |
221 false, PRIVACY_MODE_DISABLED), | 235 false, PRIVACY_MODE_DISABLED), |
222 DefaultQuicConfig(), &crypto_config_, | 236 DefaultQuicConfig(), &crypto_config_, |
223 base::MessageLoop::current()-> | 237 base::MessageLoop::current()-> |
224 message_loop_proxy().get(), | 238 message_loop_proxy().get(), |
225 NULL)); | 239 NULL)); |
226 session_->InitializeSession(); | 240 session_->InitializeSession(); |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
293 bool use_closing_stream_; | 307 bool use_closing_stream_; |
294 MockSendAlgorithm* send_algorithm_; | 308 MockSendAlgorithm* send_algorithm_; |
295 TestReceiveAlgorithm* receive_algorithm_; | 309 TestReceiveAlgorithm* receive_algorithm_; |
296 scoped_refptr<TestTaskRunner> runner_; | 310 scoped_refptr<TestTaskRunner> runner_; |
297 scoped_ptr<MockWrite[]> mock_writes_; | 311 scoped_ptr<MockWrite[]> mock_writes_; |
298 MockClock clock_; | 312 MockClock clock_; |
299 TestQuicConnection* connection_; | 313 TestQuicConnection* connection_; |
300 scoped_ptr<QuicConnectionHelper> helper_; | 314 scoped_ptr<QuicConnectionHelper> helper_; |
301 testing::StrictMock<MockConnectionVisitor> visitor_; | 315 testing::StrictMock<MockConnectionVisitor> visitor_; |
302 scoped_ptr<QuicHttpStream> stream_; | 316 scoped_ptr<QuicHttpStream> stream_; |
303 scoped_ptr<QuicDefaultPacketWriter> writer_; | |
304 TransportSecurityState transport_security_state_; | 317 TransportSecurityState transport_security_state_; |
305 scoped_ptr<QuicClientSession> session_; | 318 scoped_ptr<QuicClientSession> session_; |
306 QuicCryptoClientConfig crypto_config_; | 319 QuicCryptoClientConfig crypto_config_; |
307 TestCompletionCallback callback_; | 320 TestCompletionCallback callback_; |
308 HttpRequestInfo request_; | 321 HttpRequestInfo request_; |
309 HttpRequestHeaders headers_; | 322 HttpRequestHeaders headers_; |
310 HttpResponseInfo response_; | 323 HttpResponseInfo response_; |
311 scoped_refptr<IOBufferWithSize> read_buffer_; | 324 scoped_refptr<IOBufferWithSize> read_buffer_; |
312 SpdyHeaderBlock request_headers_; | 325 SpdyHeaderBlock request_headers_; |
313 SpdyHeaderBlock response_headers_; | 326 SpdyHeaderBlock response_headers_; |
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
621 // Set Delegate to NULL and make sure EffectivePriority returns highest | 634 // Set Delegate to NULL and make sure EffectivePriority returns highest |
622 // priority. | 635 // priority. |
623 reliable_stream->SetDelegate(NULL); | 636 reliable_stream->SetDelegate(NULL); |
624 DCHECK_EQ(QuicWriteBlockedList::kHighestPriority, | 637 DCHECK_EQ(QuicWriteBlockedList::kHighestPriority, |
625 reliable_stream->EffectivePriority()); | 638 reliable_stream->EffectivePriority()); |
626 reliable_stream->SetDelegate(delegate); | 639 reliable_stream->SetDelegate(delegate); |
627 } | 640 } |
628 | 641 |
629 } // namespace test | 642 } // namespace test |
630 } // namespace net | 643 } // namespace net |
OLD | NEW |