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

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

Issue 2908243002: Remove QuicChromiumClientStream::Delegate in favor of async methods. (Closed)
Patch Set: No expect_trailers_ Created 3 years, 6 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 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 51
52 namespace net { 52 namespace net {
53 namespace test { 53 namespace test {
54 namespace { 54 namespace {
55 55
56 const IPEndPoint kIpEndPoint = IPEndPoint(IPAddress::IPv4AllZeros(), 0); 56 const IPEndPoint kIpEndPoint = IPEndPoint(IPAddress::IPv4AllZeros(), 0);
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 {
62 public:
63 MockStreamDelegate() {}
64
65 MOCK_METHOD0(OnSendData, int());
66 MOCK_METHOD2(OnSendDataComplete, int(int, bool*));
67 MOCK_METHOD2(OnInitialHeadersAvailable,
68 void(const SpdyHeaderBlock& headers, size_t frame_len));
69 MOCK_METHOD2(OnTrailingHeadersAvailable,
70 void(const SpdyHeaderBlock& headers, size_t frame_len));
71 MOCK_METHOD2(OnDataReceived, int(const char*, int));
72 MOCK_METHOD0(OnDataAvailable, void());
73 MOCK_METHOD0(OnClose, void());
74 MOCK_METHOD1(OnError, void(int));
75
76 private:
77 DISALLOW_COPY_AND_ASSIGN(MockStreamDelegate);
78 };
79
80 class QuicChromiumClientSessionTest 61 class QuicChromiumClientSessionTest
81 : public ::testing::TestWithParam<QuicVersion> { 62 : public ::testing::TestWithParam<QuicVersion> {
82 protected: 63 protected:
83 QuicChromiumClientSessionTest() 64 QuicChromiumClientSessionTest()
84 : crypto_config_(crypto_test_utils::ProofVerifierForTesting()), 65 : crypto_config_(crypto_test_utils::ProofVerifierForTesting()),
85 default_read_(new MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)), 66 default_read_(new MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)),
86 socket_data_( 67 socket_data_(
87 new SequencedSocketData(default_read_.get(), 1, nullptr, 0)), 68 new SequencedSocketData(default_read_.get(), 1, nullptr, 0)),
88 random_(0), 69 random_(0),
89 helper_(&clock_, &random_), 70 helper_(&clock_, &random_),
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 std::unique_ptr<MockRead> default_read_; 152 std::unique_ptr<MockRead> default_read_;
172 std::unique_ptr<SequencedSocketData> socket_data_; 153 std::unique_ptr<SequencedSocketData> socket_data_;
173 MockClock clock_; 154 MockClock clock_;
174 MockRandom random_; 155 MockRandom random_;
175 QuicChromiumConnectionHelper helper_; 156 QuicChromiumConnectionHelper helper_;
176 MockAlarmFactory alarm_factory_; 157 MockAlarmFactory alarm_factory_;
177 TransportSecurityState transport_security_state_; 158 TransportSecurityState transport_security_state_;
178 MockCryptoClientStreamFactory crypto_client_stream_factory_; 159 MockCryptoClientStreamFactory crypto_client_stream_factory_;
179 QuicClientPushPromiseIndex push_promise_index_; 160 QuicClientPushPromiseIndex push_promise_index_;
180 QuicServerId server_id_; 161 QuicServerId server_id_;
181 MockStreamDelegate delegate_;
182 std::unique_ptr<QuicChromiumClientSession> session_; 162 std::unique_ptr<QuicChromiumClientSession> session_;
183 TestServerPushDelegate test_push_delegate_; 163 TestServerPushDelegate test_push_delegate_;
184 QuicConnectionVisitorInterface* visitor_; 164 QuicConnectionVisitorInterface* visitor_;
185 TestCompletionCallback callback_; 165 TestCompletionCallback callback_;
186 QuicTestPacketMaker client_maker_; 166 QuicTestPacketMaker client_maker_;
187 QuicTestPacketMaker server_maker_; 167 QuicTestPacketMaker server_maker_;
188 ProofVerifyDetailsChromium verify_details_; 168 ProofVerifyDetailsChromium verify_details_;
189 }; 169 };
190 170
191 INSTANTIATE_TEST_CASE_P(Tests, 171 INSTANTIATE_TEST_CASE_P(Tests,
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
233 nullptr); 213 nullptr);
234 214
235 CompleteCryptoHandshake(); 215 CompleteCryptoHandshake();
236 216
237 EXPECT_TRUE(handle->IsCryptoHandshakeConfirmed()); 217 EXPECT_TRUE(handle->IsCryptoHandshakeConfirmed());
238 218
239 // Request a stream and verify that a stream was created. 219 // Request a stream and verify that a stream was created.
240 TestCompletionCallback callback; 220 TestCompletionCallback callback;
241 ASSERT_EQ(OK, handle->RequestStream(/*requires_confirmation=*/false, 221 ASSERT_EQ(OK, handle->RequestStream(/*requires_confirmation=*/false,
242 callback.callback())); 222 callback.callback()));
243 EXPECT_TRUE(handle->ReleaseStream(&delegate_) != nullptr); 223 EXPECT_TRUE(handle->ReleaseStream() != nullptr);
244 224
245 quic_data.Resume(); 225 quic_data.Resume();
246 EXPECT_TRUE(quic_data.AllReadDataConsumed()); 226 EXPECT_TRUE(quic_data.AllReadDataConsumed());
247 EXPECT_TRUE(quic_data.AllWriteDataConsumed()); 227 EXPECT_TRUE(quic_data.AllWriteDataConsumed());
248 228
249 // Veirfy that the handle works correctly after the session is closed. 229 // Veirfy that the handle works correctly after the session is closed.
250 EXPECT_FALSE(handle->IsConnected()); 230 EXPECT_FALSE(handle->IsConnected());
251 EXPECT_TRUE(handle->IsCryptoHandshakeConfirmed()); 231 EXPECT_TRUE(handle->IsCryptoHandshakeConfirmed());
252 EXPECT_EQ(GetParam(), handle->GetQuicVersion()); 232 EXPECT_EQ(GetParam(), handle->GetQuicVersion());
253 EXPECT_EQ(server_id_, handle->server_id()); 233 EXPECT_EQ(server_id_, handle->server_id());
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 275
296 Initialize(); 276 Initialize();
297 CompleteCryptoHandshake(); 277 CompleteCryptoHandshake();
298 278
299 // Request a stream and verify that a stream was created. 279 // Request a stream and verify that a stream was created.
300 std::unique_ptr<QuicChromiumClientSession::Handle> handle = 280 std::unique_ptr<QuicChromiumClientSession::Handle> handle =
301 session_->CreateHandle(); 281 session_->CreateHandle();
302 TestCompletionCallback callback; 282 TestCompletionCallback callback;
303 ASSERT_EQ(OK, handle->RequestStream(/*requires_confirmation=*/false, 283 ASSERT_EQ(OK, handle->RequestStream(/*requires_confirmation=*/false,
304 callback.callback())); 284 callback.callback()));
305 EXPECT_TRUE(handle->ReleaseStream(&delegate_) != nullptr); 285 EXPECT_TRUE(handle->ReleaseStream() != nullptr);
306 286
307 quic_data.Resume(); 287 quic_data.Resume();
308 EXPECT_TRUE(quic_data.AllReadDataConsumed()); 288 EXPECT_TRUE(quic_data.AllReadDataConsumed());
309 EXPECT_TRUE(quic_data.AllWriteDataConsumed()); 289 EXPECT_TRUE(quic_data.AllWriteDataConsumed());
310 } 290 }
311 291
312 TEST_P(QuicChromiumClientSessionTest, ConfirmationRequiredStreamRequest) { 292 TEST_P(QuicChromiumClientSessionTest, ConfirmationRequiredStreamRequest) {
313 MockQuicData quic_data; 293 MockQuicData quic_data;
314 quic_data.AddWrite(client_maker_.MakeInitialSettingsPacket(1, nullptr)); 294 quic_data.AddWrite(client_maker_.MakeInitialSettingsPacket(1, nullptr));
315 quic_data.AddRead(ASYNC, ERR_IO_PENDING); 295 quic_data.AddRead(ASYNC, ERR_IO_PENDING);
316 quic_data.AddRead(ASYNC, OK); // EOF 296 quic_data.AddRead(ASYNC, OK); // EOF
317 quic_data.AddSocketDataToFactory(&socket_factory_); 297 quic_data.AddSocketDataToFactory(&socket_factory_);
318 298
319 Initialize(); 299 Initialize();
320 CompleteCryptoHandshake(); 300 CompleteCryptoHandshake();
321 301
322 // Request a stream and verify that a stream was created. 302 // Request a stream and verify that a stream was created.
323 std::unique_ptr<QuicChromiumClientSession::Handle> handle = 303 std::unique_ptr<QuicChromiumClientSession::Handle> handle =
324 session_->CreateHandle(); 304 session_->CreateHandle();
325 TestCompletionCallback callback; 305 TestCompletionCallback callback;
326 ASSERT_EQ(OK, handle->RequestStream(/*requires_confirmation=*/true, 306 ASSERT_EQ(OK, handle->RequestStream(/*requires_confirmation=*/true,
327 callback.callback())); 307 callback.callback()));
328 EXPECT_TRUE(handle->ReleaseStream(&delegate_) != nullptr); 308 EXPECT_TRUE(handle->ReleaseStream() != nullptr);
329 309
330 quic_data.Resume(); 310 quic_data.Resume();
331 EXPECT_TRUE(quic_data.AllReadDataConsumed()); 311 EXPECT_TRUE(quic_data.AllReadDataConsumed());
332 EXPECT_TRUE(quic_data.AllWriteDataConsumed()); 312 EXPECT_TRUE(quic_data.AllWriteDataConsumed());
333 } 313 }
334 314
335 TEST_P(QuicChromiumClientSessionTest, StreamRequestBeforeConfirmation) { 315 TEST_P(QuicChromiumClientSessionTest, StreamRequestBeforeConfirmation) {
336 MockQuicData quic_data; 316 MockQuicData quic_data;
337 quic_data.AddWrite(client_maker_.MakeInitialSettingsPacket(1, nullptr)); 317 quic_data.AddWrite(client_maker_.MakeInitialSettingsPacket(1, nullptr));
338 quic_data.AddRead(ASYNC, ERR_IO_PENDING); 318 quic_data.AddRead(ASYNC, ERR_IO_PENDING);
339 quic_data.AddRead(ASYNC, OK); // EOF 319 quic_data.AddRead(ASYNC, OK); // EOF
340 quic_data.AddSocketDataToFactory(&socket_factory_); 320 quic_data.AddSocketDataToFactory(&socket_factory_);
341 321
342 Initialize(); 322 Initialize();
343 323
344 // Request a stream and verify that a stream was created. 324 // Request a stream and verify that a stream was created.
345 std::unique_ptr<QuicChromiumClientSession::Handle> handle = 325 std::unique_ptr<QuicChromiumClientSession::Handle> handle =
346 session_->CreateHandle(); 326 session_->CreateHandle();
347 TestCompletionCallback callback; 327 TestCompletionCallback callback;
348 ASSERT_EQ(ERR_IO_PENDING, 328 ASSERT_EQ(ERR_IO_PENDING,
349 handle->RequestStream(/*requires_confirmation=*/true, 329 handle->RequestStream(/*requires_confirmation=*/true,
350 callback.callback())); 330 callback.callback()));
351 331
352 CompleteCryptoHandshake(); 332 CompleteCryptoHandshake();
353 333
354 EXPECT_THAT(callback.WaitForResult(), IsOk()); 334 EXPECT_THAT(callback.WaitForResult(), IsOk());
355 335
356 EXPECT_TRUE(handle->ReleaseStream(&delegate_) != nullptr); 336 EXPECT_TRUE(handle->ReleaseStream() != nullptr);
357 337
358 quic_data.Resume(); 338 quic_data.Resume();
359 EXPECT_TRUE(quic_data.AllReadDataConsumed()); 339 EXPECT_TRUE(quic_data.AllReadDataConsumed());
360 EXPECT_TRUE(quic_data.AllWriteDataConsumed()); 340 EXPECT_TRUE(quic_data.AllWriteDataConsumed());
361 } 341 }
362 342
363 TEST_P(QuicChromiumClientSessionTest, CancelStreamRequestBeforeRelease) { 343 TEST_P(QuicChromiumClientSessionTest, CancelStreamRequestBeforeRelease) {
364 MockQuicData quic_data; 344 MockQuicData quic_data;
365 quic_data.AddWrite(client_maker_.MakeInitialSettingsPacket(1, nullptr)); 345 quic_data.AddWrite(client_maker_.MakeInitialSettingsPacket(1, nullptr));
366 quic_data.AddWrite(client_maker_.MakeRstPacket( 346 quic_data.AddWrite(client_maker_.MakeRstPacket(
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
412 ASSERT_EQ(ERR_IO_PENDING, 392 ASSERT_EQ(ERR_IO_PENDING,
413 handle->RequestStream(/*requires_confirmation=*/false, 393 handle->RequestStream(/*requires_confirmation=*/false,
414 callback.callback())); 394 callback.callback()));
415 395
416 // Close a stream and ensure the stream request completes. 396 // Close a stream and ensure the stream request completes.
417 QuicRstStreamFrame rst(GetNthClientInitiatedStreamId(0), 397 QuicRstStreamFrame rst(GetNthClientInitiatedStreamId(0),
418 QUIC_STREAM_CANCELLED, 0); 398 QUIC_STREAM_CANCELLED, 0);
419 session_->OnRstStream(rst); 399 session_->OnRstStream(rst);
420 ASSERT_TRUE(callback.have_result()); 400 ASSERT_TRUE(callback.have_result());
421 EXPECT_THAT(callback.WaitForResult(), IsOk()); 401 EXPECT_THAT(callback.WaitForResult(), IsOk());
422 EXPECT_TRUE(handle->ReleaseStream(&delegate_) != nullptr); 402 EXPECT_TRUE(handle->ReleaseStream() != nullptr);
423 403
424 quic_data.Resume(); 404 quic_data.Resume();
425 EXPECT_TRUE(quic_data.AllReadDataConsumed()); 405 EXPECT_TRUE(quic_data.AllReadDataConsumed());
426 EXPECT_TRUE(quic_data.AllWriteDataConsumed()); 406 EXPECT_TRUE(quic_data.AllWriteDataConsumed());
427 } 407 }
428 408
429 TEST_P(QuicChromiumClientSessionTest, CancelPendingStreamRequest) { 409 TEST_P(QuicChromiumClientSessionTest, CancelPendingStreamRequest) {
430 MockQuicData quic_data; 410 MockQuicData quic_data;
431 quic_data.AddWrite(client_maker_.MakeInitialSettingsPacket(1, nullptr)); 411 quic_data.AddWrite(client_maker_.MakeInitialSettingsPacket(1, nullptr));
432 quic_data.AddWrite(client_maker_.MakeRstPacket( 412 quic_data.AddWrite(client_maker_.MakeRstPacket(
(...skipping 484 matching lines...) Expand 10 before | Expand all | Expand 10 after
917 handle->RequestStream(/*requires_confirmation=*/false, 897 handle->RequestStream(/*requires_confirmation=*/false,
918 callback.callback())); 898 callback.callback()));
919 899
920 // Close a stream and ensure I can now open a new one. 900 // Close a stream and ensure I can now open a new one.
921 QuicStreamId stream_id = streams[0]->id(); 901 QuicStreamId stream_id = streams[0]->id();
922 session_->CloseStream(stream_id); 902 session_->CloseStream(stream_id);
923 QuicRstStreamFrame rst1(stream_id, QUIC_STREAM_NO_ERROR, 0); 903 QuicRstStreamFrame rst1(stream_id, QUIC_STREAM_NO_ERROR, 0);
924 session_->OnRstStream(rst1); 904 session_->OnRstStream(rst1);
925 ASSERT_TRUE(callback.have_result()); 905 ASSERT_TRUE(callback.have_result());
926 EXPECT_THAT(callback.WaitForResult(), IsOk()); 906 EXPECT_THAT(callback.WaitForResult(), IsOk());
927 EXPECT_TRUE(handle->ReleaseStream(&delegate_) != nullptr); 907 EXPECT_TRUE(handle->ReleaseStream() != nullptr);
928 } 908 }
929 909
930 TEST_P(QuicChromiumClientSessionTest, GoAwayReceived) { 910 TEST_P(QuicChromiumClientSessionTest, GoAwayReceived) {
931 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; 911 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
932 std::unique_ptr<QuicEncryptedPacket> settings_packet( 912 std::unique_ptr<QuicEncryptedPacket> settings_packet(
933 client_maker_.MakeInitialSettingsPacket(1, nullptr)); 913 client_maker_.MakeInitialSettingsPacket(1, nullptr));
934 MockWrite writes[] = { 914 MockWrite writes[] = {
935 MockWrite(ASYNC, settings_packet->data(), settings_packet->length(), 1)}; 915 MockWrite(ASYNC, settings_packet->data(), settings_packet->length(), 1)};
936 socket_data_.reset(new SequencedSocketData(reads, arraysize(reads), writes, 916 socket_data_.reset(new SequencedSocketData(reads, arraysize(reads), writes,
937 arraysize(writes))); 917 arraysize(writes)));
(...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after
1257 1237
1258 EXPECT_TRUE(socket_data_->AllReadDataConsumed()); 1238 EXPECT_TRUE(socket_data_->AllReadDataConsumed());
1259 EXPECT_TRUE(socket_data_->AllWriteDataConsumed()); 1239 EXPECT_TRUE(socket_data_->AllWriteDataConsumed());
1260 EXPECT_TRUE(new_socket_data.AllReadDataConsumed()); 1240 EXPECT_TRUE(new_socket_data.AllReadDataConsumed());
1261 EXPECT_TRUE(new_socket_data.AllWriteDataConsumed()); 1241 EXPECT_TRUE(new_socket_data.AllWriteDataConsumed());
1262 } 1242 }
1263 1243
1264 } // namespace 1244 } // namespace
1265 } // namespace test 1245 } // namespace test
1266 } // namespace net 1246 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/chromium/quic_chromium_client_session.cc ('k') | net/quic/chromium/quic_chromium_client_stream.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698