Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(794)

Side by Side Diff: net/quic/chromium/quic_chromium_client_session_test.cc

Issue 2870453002: Make ReleaseStream() take a Delegate (Closed)
Patch Set: quic_chromium_client_session_test.cc Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/chromium/quic_chromium_client_session.h" 5 #include "net/quic/chromium/quic_chromium_client_session.h"
6 6
7 #include "base/base64.h" 7 #include "base/base64.h"
8 #include "base/files/file_path.h" 8 #include "base/files/file_path.h"
9 #include "base/memory/ptr_util.h" 9 #include "base/memory/ptr_util.h"
10 #include "base/rand_util.h" 10 #include "base/rand_util.h"
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 const char kServerHostname[] = "test.example.com"; 57 const char kServerHostname[] = "test.example.com";
58 const uint16_t kServerPort = 443; 58 const uint16_t kServerPort = 443;
59 const size_t kMaxReadersPerQuicSession = 5; 59 const size_t kMaxReadersPerQuicSession = 5;
60 60
61 class MockStreamDelegate : public QuicChromiumClientStream::Delegate { 61 class MockStreamDelegate : public QuicChromiumClientStream::Delegate {
62 public: 62 public:
63 MockStreamDelegate() {} 63 MockStreamDelegate() {}
64 64
65 MOCK_METHOD0(OnSendData, int()); 65 MOCK_METHOD0(OnSendData, int());
66 MOCK_METHOD2(OnSendDataComplete, int(int, bool*)); 66 MOCK_METHOD2(OnSendDataComplete, int(int, bool*));
67 MOCK_METHOD2(OnHeadersAvailable, 67 MOCK_METHOD2(OnInitialHeadersAvailable,
68 void(const SpdyHeaderBlock& headers, size_t frame_len)); 68 void(const SpdyHeaderBlock& headers, size_t frame_len));
69 MOCK_METHOD2(OnHeadersAvailableMock, 69 MOCK_METHOD2(OnTrailingHeadersAvailable,
70 void(const SpdyHeaderBlock& headers, size_t frame_len)); 70 void(const SpdyHeaderBlock& headers, size_t frame_len));
71 MOCK_METHOD2(OnDataReceived, int(const char*, int)); 71 MOCK_METHOD2(OnDataReceived, int(const char*, int));
72 MOCK_METHOD0(OnDataAvailable, void()); 72 MOCK_METHOD0(OnDataAvailable, void());
73 MOCK_METHOD0(OnClose, void()); 73 MOCK_METHOD0(OnClose, void());
74 MOCK_METHOD1(OnError, void(int)); 74 MOCK_METHOD1(OnError, void(int));
75 75
76 private: 76 private:
77 DISALLOW_COPY_AND_ASSIGN(MockStreamDelegate); 77 DISALLOW_COPY_AND_ASSIGN(MockStreamDelegate);
78 }; 78 };
79 79
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 std::unique_ptr<MockRead> default_read_; 171 std::unique_ptr<MockRead> default_read_;
172 std::unique_ptr<SequencedSocketData> socket_data_; 172 std::unique_ptr<SequencedSocketData> socket_data_;
173 MockClock clock_; 173 MockClock clock_;
174 MockRandom random_; 174 MockRandom random_;
175 QuicChromiumConnectionHelper helper_; 175 QuicChromiumConnectionHelper helper_;
176 MockAlarmFactory alarm_factory_; 176 MockAlarmFactory alarm_factory_;
177 TransportSecurityState transport_security_state_; 177 TransportSecurityState transport_security_state_;
178 MockCryptoClientStreamFactory crypto_client_stream_factory_; 178 MockCryptoClientStreamFactory crypto_client_stream_factory_;
179 QuicClientPushPromiseIndex push_promise_index_; 179 QuicClientPushPromiseIndex push_promise_index_;
180 QuicServerId server_id_; 180 QuicServerId server_id_;
181 MockStreamDelegate delegate_;
181 std::unique_ptr<QuicChromiumClientSession> session_; 182 std::unique_ptr<QuicChromiumClientSession> session_;
182 TestServerPushDelegate test_push_delegate_; 183 TestServerPushDelegate test_push_delegate_;
183 QuicConnectionVisitorInterface* visitor_; 184 QuicConnectionVisitorInterface* visitor_;
184 TestCompletionCallback callback_; 185 TestCompletionCallback callback_;
185 QuicTestPacketMaker client_maker_; 186 QuicTestPacketMaker client_maker_;
186 QuicTestPacketMaker server_maker_; 187 QuicTestPacketMaker server_maker_;
187 ProofVerifyDetailsChromium verify_details_; 188 ProofVerifyDetailsChromium verify_details_;
188 }; 189 };
189 190
190 INSTANTIATE_TEST_CASE_P(Tests, 191 INSTANTIATE_TEST_CASE_P(Tests,
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 nullptr); 233 nullptr);
233 234
234 CompleteCryptoHandshake(); 235 CompleteCryptoHandshake();
235 236
236 EXPECT_TRUE(handle->IsCryptoHandshakeConfirmed()); 237 EXPECT_TRUE(handle->IsCryptoHandshakeConfirmed());
237 238
238 // Request a stream and verify that a stream was created. 239 // Request a stream and verify that a stream was created.
239 TestCompletionCallback callback; 240 TestCompletionCallback callback;
240 ASSERT_EQ(OK, handle->RequestStream(/*requires_confirmation=*/false, 241 ASSERT_EQ(OK, handle->RequestStream(/*requires_confirmation=*/false,
241 callback.callback())); 242 callback.callback()));
242 EXPECT_TRUE(handle->ReleaseStream() != nullptr); 243 EXPECT_TRUE(handle->ReleaseStream(&delegate_) != nullptr);
243 244
244 quic_data.Resume(); 245 quic_data.Resume();
245 EXPECT_TRUE(quic_data.AllReadDataConsumed()); 246 EXPECT_TRUE(quic_data.AllReadDataConsumed());
246 EXPECT_TRUE(quic_data.AllWriteDataConsumed()); 247 EXPECT_TRUE(quic_data.AllWriteDataConsumed());
247 248
248 // Veirfy that the handle works correctly after the session is closed. 249 // Veirfy that the handle works correctly after the session is closed.
249 EXPECT_FALSE(handle->IsConnected()); 250 EXPECT_FALSE(handle->IsConnected());
250 EXPECT_TRUE(handle->IsCryptoHandshakeConfirmed()); 251 EXPECT_TRUE(handle->IsCryptoHandshakeConfirmed());
251 EXPECT_EQ(GetParam(), handle->GetQuicVersion()); 252 EXPECT_EQ(GetParam(), handle->GetQuicVersion());
252 EXPECT_EQ(server_id_, handle->server_id()); 253 EXPECT_EQ(server_id_, handle->server_id());
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 295
295 Initialize(); 296 Initialize();
296 CompleteCryptoHandshake(); 297 CompleteCryptoHandshake();
297 298
298 // Request a stream and verify that a stream was created. 299 // Request a stream and verify that a stream was created.
299 std::unique_ptr<QuicChromiumClientSession::Handle> handle = 300 std::unique_ptr<QuicChromiumClientSession::Handle> handle =
300 session_->CreateHandle(); 301 session_->CreateHandle();
301 TestCompletionCallback callback; 302 TestCompletionCallback callback;
302 ASSERT_EQ(OK, handle->RequestStream(/*requires_confirmation=*/false, 303 ASSERT_EQ(OK, handle->RequestStream(/*requires_confirmation=*/false,
303 callback.callback())); 304 callback.callback()));
304 EXPECT_TRUE(handle->ReleaseStream() != nullptr); 305 EXPECT_TRUE(handle->ReleaseStream(&delegate_) != nullptr);
305 306
306 quic_data.Resume(); 307 quic_data.Resume();
307 EXPECT_TRUE(quic_data.AllReadDataConsumed()); 308 EXPECT_TRUE(quic_data.AllReadDataConsumed());
308 EXPECT_TRUE(quic_data.AllWriteDataConsumed()); 309 EXPECT_TRUE(quic_data.AllWriteDataConsumed());
309 } 310 }
310 311
311 TEST_P(QuicChromiumClientSessionTest, ConfirmationRequiredStreamRequest) { 312 TEST_P(QuicChromiumClientSessionTest, ConfirmationRequiredStreamRequest) {
312 MockQuicData quic_data; 313 MockQuicData quic_data;
313 quic_data.AddWrite(client_maker_.MakeInitialSettingsPacket(1, nullptr)); 314 quic_data.AddWrite(client_maker_.MakeInitialSettingsPacket(1, nullptr));
314 quic_data.AddRead(ASYNC, ERR_IO_PENDING); 315 quic_data.AddRead(ASYNC, ERR_IO_PENDING);
315 quic_data.AddRead(ASYNC, OK); // EOF 316 quic_data.AddRead(ASYNC, OK); // EOF
316 quic_data.AddSocketDataToFactory(&socket_factory_); 317 quic_data.AddSocketDataToFactory(&socket_factory_);
317 318
318 Initialize(); 319 Initialize();
319 CompleteCryptoHandshake(); 320 CompleteCryptoHandshake();
320 321
321 // Request a stream and verify that a stream was created. 322 // Request a stream and verify that a stream was created.
322 std::unique_ptr<QuicChromiumClientSession::Handle> handle = 323 std::unique_ptr<QuicChromiumClientSession::Handle> handle =
323 session_->CreateHandle(); 324 session_->CreateHandle();
324 TestCompletionCallback callback; 325 TestCompletionCallback callback;
325 ASSERT_EQ(OK, handle->RequestStream(/*requires_confirmation=*/true, 326 ASSERT_EQ(OK, handle->RequestStream(/*requires_confirmation=*/true,
326 callback.callback())); 327 callback.callback()));
327 EXPECT_TRUE(handle->ReleaseStream() != nullptr); 328 EXPECT_TRUE(handle->ReleaseStream(&delegate_) != nullptr);
328 329
329 quic_data.Resume(); 330 quic_data.Resume();
330 EXPECT_TRUE(quic_data.AllReadDataConsumed()); 331 EXPECT_TRUE(quic_data.AllReadDataConsumed());
331 EXPECT_TRUE(quic_data.AllWriteDataConsumed()); 332 EXPECT_TRUE(quic_data.AllWriteDataConsumed());
332 } 333 }
333 334
334 TEST_P(QuicChromiumClientSessionTest, StreamRequestBeforeConfirmation) { 335 TEST_P(QuicChromiumClientSessionTest, StreamRequestBeforeConfirmation) {
335 MockQuicData quic_data; 336 MockQuicData quic_data;
336 quic_data.AddWrite(client_maker_.MakeInitialSettingsPacket(1, nullptr)); 337 quic_data.AddWrite(client_maker_.MakeInitialSettingsPacket(1, nullptr));
337 quic_data.AddRead(ASYNC, ERR_IO_PENDING); 338 quic_data.AddRead(ASYNC, ERR_IO_PENDING);
338 quic_data.AddRead(ASYNC, OK); // EOF 339 quic_data.AddRead(ASYNC, OK); // EOF
339 quic_data.AddSocketDataToFactory(&socket_factory_); 340 quic_data.AddSocketDataToFactory(&socket_factory_);
340 341
341 Initialize(); 342 Initialize();
342 343
343 // Request a stream and verify that a stream was created. 344 // Request a stream and verify that a stream was created.
344 std::unique_ptr<QuicChromiumClientSession::Handle> handle = 345 std::unique_ptr<QuicChromiumClientSession::Handle> handle =
345 session_->CreateHandle(); 346 session_->CreateHandle();
346 TestCompletionCallback callback; 347 TestCompletionCallback callback;
347 ASSERT_EQ(ERR_IO_PENDING, 348 ASSERT_EQ(ERR_IO_PENDING,
348 handle->RequestStream(/*requires_confirmation=*/true, 349 handle->RequestStream(/*requires_confirmation=*/true,
349 callback.callback())); 350 callback.callback()));
350 351
351 CompleteCryptoHandshake(); 352 CompleteCryptoHandshake();
352 353
353 EXPECT_THAT(callback.WaitForResult(), IsOk()); 354 EXPECT_THAT(callback.WaitForResult(), IsOk());
354 355
355 EXPECT_TRUE(handle->ReleaseStream() != nullptr); 356 EXPECT_TRUE(handle->ReleaseStream(&delegate_) != nullptr);
356 357
357 quic_data.Resume(); 358 quic_data.Resume();
358 EXPECT_TRUE(quic_data.AllReadDataConsumed()); 359 EXPECT_TRUE(quic_data.AllReadDataConsumed());
359 EXPECT_TRUE(quic_data.AllWriteDataConsumed()); 360 EXPECT_TRUE(quic_data.AllWriteDataConsumed());
360 } 361 }
361 362
362 TEST_P(QuicChromiumClientSessionTest, CancelStreamRequestBeforeRelease) { 363 TEST_P(QuicChromiumClientSessionTest, CancelStreamRequestBeforeRelease) {
363 MockQuicData quic_data; 364 MockQuicData quic_data;
364 quic_data.AddWrite(client_maker_.MakeInitialSettingsPacket(1, nullptr)); 365 quic_data.AddWrite(client_maker_.MakeInitialSettingsPacket(1, nullptr));
365 quic_data.AddWrite(client_maker_.MakeRstPacket( 366 quic_data.AddWrite(client_maker_.MakeRstPacket(
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 ASSERT_EQ(ERR_IO_PENDING, 412 ASSERT_EQ(ERR_IO_PENDING,
412 handle->RequestStream(/*requires_confirmation=*/false, 413 handle->RequestStream(/*requires_confirmation=*/false,
413 callback.callback())); 414 callback.callback()));
414 415
415 // Close a stream and ensure the stream request completes. 416 // Close a stream and ensure the stream request completes.
416 QuicRstStreamFrame rst(GetNthClientInitiatedStreamId(0), 417 QuicRstStreamFrame rst(GetNthClientInitiatedStreamId(0),
417 QUIC_STREAM_CANCELLED, 0); 418 QUIC_STREAM_CANCELLED, 0);
418 session_->OnRstStream(rst); 419 session_->OnRstStream(rst);
419 ASSERT_TRUE(callback.have_result()); 420 ASSERT_TRUE(callback.have_result());
420 EXPECT_THAT(callback.WaitForResult(), IsOk()); 421 EXPECT_THAT(callback.WaitForResult(), IsOk());
421 EXPECT_TRUE(handle->ReleaseStream() != nullptr); 422 EXPECT_TRUE(handle->ReleaseStream(&delegate_) != nullptr);
422 423
423 quic_data.Resume(); 424 quic_data.Resume();
424 EXPECT_TRUE(quic_data.AllReadDataConsumed()); 425 EXPECT_TRUE(quic_data.AllReadDataConsumed());
425 EXPECT_TRUE(quic_data.AllWriteDataConsumed()); 426 EXPECT_TRUE(quic_data.AllWriteDataConsumed());
426 } 427 }
427 428
428 TEST_P(QuicChromiumClientSessionTest, CancelPendingStreamRequest) { 429 TEST_P(QuicChromiumClientSessionTest, CancelPendingStreamRequest) {
429 MockQuicData quic_data; 430 MockQuicData quic_data;
430 quic_data.AddWrite(client_maker_.MakeInitialSettingsPacket(1, nullptr)); 431 quic_data.AddWrite(client_maker_.MakeInitialSettingsPacket(1, nullptr));
431 quic_data.AddWrite(client_maker_.MakeRstPacket( 432 quic_data.AddWrite(client_maker_.MakeRstPacket(
(...skipping 484 matching lines...) Expand 10 before | Expand all | Expand 10 after
916 handle->RequestStream(/*requires_confirmation=*/false, 917 handle->RequestStream(/*requires_confirmation=*/false,
917 callback.callback())); 918 callback.callback()));
918 919
919 // Close a stream and ensure I can now open a new one. 920 // Close a stream and ensure I can now open a new one.
920 QuicStreamId stream_id = streams[0]->id(); 921 QuicStreamId stream_id = streams[0]->id();
921 session_->CloseStream(stream_id); 922 session_->CloseStream(stream_id);
922 QuicRstStreamFrame rst1(stream_id, QUIC_STREAM_NO_ERROR, 0); 923 QuicRstStreamFrame rst1(stream_id, QUIC_STREAM_NO_ERROR, 0);
923 session_->OnRstStream(rst1); 924 session_->OnRstStream(rst1);
924 ASSERT_TRUE(callback.have_result()); 925 ASSERT_TRUE(callback.have_result());
925 EXPECT_THAT(callback.WaitForResult(), IsOk()); 926 EXPECT_THAT(callback.WaitForResult(), IsOk());
926 EXPECT_TRUE(handle->ReleaseStream() != nullptr); 927 EXPECT_TRUE(handle->ReleaseStream(&delegate_) != nullptr);
927 } 928 }
928 929
929 TEST_P(QuicChromiumClientSessionTest, GoAwayReceived) { 930 TEST_P(QuicChromiumClientSessionTest, GoAwayReceived) {
930 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; 931 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
931 std::unique_ptr<QuicEncryptedPacket> settings_packet( 932 std::unique_ptr<QuicEncryptedPacket> settings_packet(
932 client_maker_.MakeInitialSettingsPacket(1, nullptr)); 933 client_maker_.MakeInitialSettingsPacket(1, nullptr));
933 MockWrite writes[] = { 934 MockWrite writes[] = {
934 MockWrite(ASYNC, settings_packet->data(), settings_packet->length(), 1)}; 935 MockWrite(ASYNC, settings_packet->data(), settings_packet->length(), 1)};
935 socket_data_.reset(new SequencedSocketData(reads, arraysize(reads), writes, 936 socket_data_.reset(new SequencedSocketData(reads, arraysize(reads), writes,
936 arraysize(writes))); 937 arraysize(writes)));
(...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after
1256 1257
1257 EXPECT_TRUE(socket_data_->AllReadDataConsumed()); 1258 EXPECT_TRUE(socket_data_->AllReadDataConsumed());
1258 EXPECT_TRUE(socket_data_->AllWriteDataConsumed()); 1259 EXPECT_TRUE(socket_data_->AllWriteDataConsumed());
1259 EXPECT_TRUE(new_socket_data.AllReadDataConsumed()); 1260 EXPECT_TRUE(new_socket_data.AllReadDataConsumed());
1260 EXPECT_TRUE(new_socket_data.AllWriteDataConsumed()); 1261 EXPECT_TRUE(new_socket_data.AllWriteDataConsumed());
1261 } 1262 }
1262 1263
1263 } // namespace 1264 } // namespace
1264 } // namespace test 1265 } // namespace test
1265 } // namespace net 1266 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/chromium/quic_chromium_client_session.cc ('k') | net/quic/chromium/quic_http_stream.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698