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

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

Issue 2856243003: Revert of Landing Recent QUIC changes until Sat Apr 29 00:22:04 2017 +0000 (Closed)
Patch Set: 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 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 150
151 QuicChromiumPacketWriter* CreateQuicChromiumPacketWriter( 151 QuicChromiumPacketWriter* CreateQuicChromiumPacketWriter(
152 DatagramClientSocket* socket, 152 DatagramClientSocket* socket,
153 QuicChromiumClientSession* session) const { 153 QuicChromiumClientSession* session) const {
154 std::unique_ptr<QuicChromiumPacketWriter> writer( 154 std::unique_ptr<QuicChromiumPacketWriter> writer(
155 new QuicChromiumPacketWriter(socket)); 155 new QuicChromiumPacketWriter(socket));
156 writer->set_delegate(session); 156 writer->set_delegate(session);
157 return writer.release(); 157 return writer.release();
158 } 158 }
159 159
160 QuicStreamId GetNthClientInitiatedStreamId(int n) {
161 return QuicSpdySessionPeer::GetNthClientInitiatedStreamId(*session_, n);
162 }
163
164 QuicStreamId GetNthServerInitiatedStreamId(int n) {
165 return QuicSpdySessionPeer::GetNthServerInitiatedStreamId(*session_, n);
166 }
167
168 QuicCryptoClientConfig crypto_config_; 160 QuicCryptoClientConfig crypto_config_;
169 TestNetLog net_log_; 161 TestNetLog net_log_;
170 BoundTestNetLog bound_test_net_log_; 162 BoundTestNetLog bound_test_net_log_;
171 MockClientSocketFactory socket_factory_; 163 MockClientSocketFactory socket_factory_;
172 std::unique_ptr<MockRead> default_read_; 164 std::unique_ptr<MockRead> default_read_;
173 std::unique_ptr<SequencedSocketData> socket_data_; 165 std::unique_ptr<SequencedSocketData> socket_data_;
174 MockClock clock_; 166 MockClock clock_;
175 MockRandom random_; 167 MockRandom random_;
176 QuicChromiumConnectionHelper helper_; 168 QuicChromiumConnectionHelper helper_;
177 MockAlarmFactory alarm_factory_; 169 MockAlarmFactory alarm_factory_;
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 EXPECT_TRUE(stream_request->ReleaseStream() != nullptr); 261 EXPECT_TRUE(stream_request->ReleaseStream() != nullptr);
270 262
271 quic_data.Resume(); 263 quic_data.Resume();
272 EXPECT_TRUE(quic_data.AllReadDataConsumed()); 264 EXPECT_TRUE(quic_data.AllReadDataConsumed());
273 EXPECT_TRUE(quic_data.AllWriteDataConsumed()); 265 EXPECT_TRUE(quic_data.AllWriteDataConsumed());
274 } 266 }
275 267
276 TEST_P(QuicChromiumClientSessionTest, CancelStreamRequestBeforeRelease) { 268 TEST_P(QuicChromiumClientSessionTest, CancelStreamRequestBeforeRelease) {
277 MockQuicData quic_data; 269 MockQuicData quic_data;
278 quic_data.AddWrite(client_maker_.MakeInitialSettingsPacket(1, nullptr)); 270 quic_data.AddWrite(client_maker_.MakeInitialSettingsPacket(1, nullptr));
279 quic_data.AddWrite(client_maker_.MakeRstPacket( 271 quic_data.AddWrite(client_maker_.MakeRstPacket(2, true, kClientDataStreamId1,
280 2, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED)); 272 QUIC_STREAM_CANCELLED));
281 quic_data.AddRead(ASYNC, ERR_IO_PENDING); 273 quic_data.AddRead(ASYNC, ERR_IO_PENDING);
282 quic_data.AddRead(ASYNC, OK); // EOF 274 quic_data.AddRead(ASYNC, OK); // EOF
283 quic_data.AddSocketDataToFactory(&socket_factory_); 275 quic_data.AddSocketDataToFactory(&socket_factory_);
284 276
285 Initialize(); 277 Initialize();
286 CompleteCryptoHandshake(); 278 CompleteCryptoHandshake();
287 279
288 // Request a stream and cancel it without releasing the stream. 280 // Request a stream and cancel it without releasing the stream.
289 std::unique_ptr<QuicChromiumClientSession::StreamRequest> stream_request = 281 std::unique_ptr<QuicChromiumClientSession::StreamRequest> stream_request =
290 session_->CreateStreamRequest(/*requires_confirmation=*/false); 282 session_->CreateStreamRequest(/*requires_confirmation=*/false);
291 TestCompletionCallback callback; 283 TestCompletionCallback callback;
292 ASSERT_EQ(OK, stream_request->StartRequest(callback.callback())); 284 ASSERT_EQ(OK, stream_request->StartRequest(callback.callback()));
293 stream_request.reset(); 285 stream_request.reset();
294 286
295 quic_data.Resume(); 287 quic_data.Resume();
296 EXPECT_TRUE(quic_data.AllReadDataConsumed()); 288 EXPECT_TRUE(quic_data.AllReadDataConsumed());
297 EXPECT_TRUE(quic_data.AllWriteDataConsumed()); 289 EXPECT_TRUE(quic_data.AllWriteDataConsumed());
298 } 290 }
299 291
300 TEST_P(QuicChromiumClientSessionTest, AsyncStreamRequest) { 292 TEST_P(QuicChromiumClientSessionTest, AsyncStreamRequest) {
301 MockQuicData quic_data; 293 MockQuicData quic_data;
302 quic_data.AddWrite(client_maker_.MakeInitialSettingsPacket(1, nullptr)); 294 quic_data.AddWrite(client_maker_.MakeInitialSettingsPacket(1, nullptr));
303 quic_data.AddWrite(client_maker_.MakeRstPacket( 295 quic_data.AddWrite(client_maker_.MakeRstPacket(2, true, kClientDataStreamId1,
304 2, true, GetNthClientInitiatedStreamId(0), QUIC_RST_ACKNOWLEDGEMENT)); 296 QUIC_RST_ACKNOWLEDGEMENT));
305 quic_data.AddRead(ASYNC, ERR_IO_PENDING); 297 quic_data.AddRead(ASYNC, ERR_IO_PENDING);
306 quic_data.AddRead(ASYNC, OK); // EOF 298 quic_data.AddRead(ASYNC, OK); // EOF
307 quic_data.AddSocketDataToFactory(&socket_factory_); 299 quic_data.AddSocketDataToFactory(&socket_factory_);
308 300
309 Initialize(); 301 Initialize();
310 CompleteCryptoHandshake(); 302 CompleteCryptoHandshake();
311 303
312 // Open the maximum number of streams so that a subsequent request 304 // Open the maximum number of streams so that a subsequent request
313 // can not proceed immediately. 305 // can not proceed immediately.
314 const size_t kMaxOpenStreams = session_->max_open_outgoing_streams(); 306 const size_t kMaxOpenStreams = session_->max_open_outgoing_streams();
315 for (size_t i = 0; i < kMaxOpenStreams; i++) { 307 for (size_t i = 0; i < kMaxOpenStreams; i++) {
316 session_->CreateOutgoingDynamicStream(kDefaultPriority); 308 session_->CreateOutgoingDynamicStream(kDefaultPriority);
317 } 309 }
318 EXPECT_EQ(kMaxOpenStreams, session_->GetNumOpenOutgoingStreams()); 310 EXPECT_EQ(kMaxOpenStreams, session_->GetNumOpenOutgoingStreams());
319 311
320 // Request a stream and verify that it's pending. 312 // Request a stream and verify that it's pending.
321 std::unique_ptr<QuicChromiumClientSession::StreamRequest> stream_request = 313 std::unique_ptr<QuicChromiumClientSession::StreamRequest> stream_request =
322 session_->CreateStreamRequest(/*requires_confirmation=*/false); 314 session_->CreateStreamRequest(/*requires_confirmation=*/false);
323 TestCompletionCallback callback; 315 TestCompletionCallback callback;
324 ASSERT_EQ(ERR_IO_PENDING, stream_request->StartRequest(callback.callback())); 316 ASSERT_EQ(ERR_IO_PENDING, stream_request->StartRequest(callback.callback()));
325 317
326 // Close a stream and ensure the stream request completes. 318 // Close a stream and ensure the stream request completes.
327 QuicRstStreamFrame rst(GetNthClientInitiatedStreamId(0), 319 QuicRstStreamFrame rst(kClientDataStreamId1, QUIC_STREAM_CANCELLED, 0);
328 QUIC_STREAM_CANCELLED, 0);
329 session_->OnRstStream(rst); 320 session_->OnRstStream(rst);
330 ASSERT_TRUE(callback.have_result()); 321 ASSERT_TRUE(callback.have_result());
331 EXPECT_THAT(callback.WaitForResult(), IsOk()); 322 EXPECT_THAT(callback.WaitForResult(), IsOk());
332 EXPECT_TRUE(stream_request->ReleaseStream() != nullptr); 323 EXPECT_TRUE(stream_request->ReleaseStream() != nullptr);
333 324
334 quic_data.Resume(); 325 quic_data.Resume();
335 EXPECT_TRUE(quic_data.AllReadDataConsumed()); 326 EXPECT_TRUE(quic_data.AllReadDataConsumed());
336 EXPECT_TRUE(quic_data.AllWriteDataConsumed()); 327 EXPECT_TRUE(quic_data.AllWriteDataConsumed());
337 } 328 }
338 329
339 TEST_P(QuicChromiumClientSessionTest, CancelPendingStreamRequest) { 330 TEST_P(QuicChromiumClientSessionTest, CancelPendingStreamRequest) {
340 MockQuicData quic_data; 331 MockQuicData quic_data;
341 quic_data.AddWrite(client_maker_.MakeInitialSettingsPacket(1, nullptr)); 332 quic_data.AddWrite(client_maker_.MakeInitialSettingsPacket(1, nullptr));
342 quic_data.AddWrite(client_maker_.MakeRstPacket( 333 quic_data.AddWrite(client_maker_.MakeRstPacket(2, true, kClientDataStreamId1,
343 2, true, GetNthClientInitiatedStreamId(0), QUIC_RST_ACKNOWLEDGEMENT)); 334 QUIC_RST_ACKNOWLEDGEMENT));
344 quic_data.AddRead(ASYNC, ERR_IO_PENDING); 335 quic_data.AddRead(ASYNC, ERR_IO_PENDING);
345 quic_data.AddRead(ASYNC, OK); // EOF 336 quic_data.AddRead(ASYNC, OK); // EOF
346 quic_data.AddSocketDataToFactory(&socket_factory_); 337 quic_data.AddSocketDataToFactory(&socket_factory_);
347 338
348 Initialize(); 339 Initialize();
349 CompleteCryptoHandshake(); 340 CompleteCryptoHandshake();
350 341
351 // Open the maximum number of streams so that a subsequent request 342 // Open the maximum number of streams so that a subsequent request
352 // can not proceed immediately. 343 // can not proceed immediately.
353 const size_t kMaxOpenStreams = session_->max_open_outgoing_streams(); 344 const size_t kMaxOpenStreams = session_->max_open_outgoing_streams();
354 for (size_t i = 0; i < kMaxOpenStreams; i++) { 345 for (size_t i = 0; i < kMaxOpenStreams; i++) {
355 session_->CreateOutgoingDynamicStream(kDefaultPriority); 346 session_->CreateOutgoingDynamicStream(kDefaultPriority);
356 } 347 }
357 EXPECT_EQ(kMaxOpenStreams, session_->GetNumOpenOutgoingStreams()); 348 EXPECT_EQ(kMaxOpenStreams, session_->GetNumOpenOutgoingStreams());
358 349
359 // Request a stream and verify that it's pending. 350 // Request a stream and verify that it's pending.
360 std::unique_ptr<QuicChromiumClientSession::StreamRequest> stream_request = 351 std::unique_ptr<QuicChromiumClientSession::StreamRequest> stream_request =
361 session_->CreateStreamRequest(/*requires_confirmation=*/false); 352 session_->CreateStreamRequest(/*requires_confirmation=*/false);
362 TestCompletionCallback callback; 353 TestCompletionCallback callback;
363 ASSERT_EQ(ERR_IO_PENDING, stream_request->StartRequest(callback.callback())); 354 ASSERT_EQ(ERR_IO_PENDING, stream_request->StartRequest(callback.callback()));
364 355
365 // Cancel the pending stream request. 356 // Cancel the pending stream request.
366 stream_request.reset(); 357 stream_request.reset();
367 358
368 // Close a stream and ensure that no new stream is created. 359 // Close a stream and ensure that no new stream is created.
369 QuicRstStreamFrame rst(GetNthClientInitiatedStreamId(0), 360 QuicRstStreamFrame rst(kClientDataStreamId1, QUIC_STREAM_CANCELLED, 0);
370 QUIC_STREAM_CANCELLED, 0);
371 session_->OnRstStream(rst); 361 session_->OnRstStream(rst);
372 EXPECT_EQ(kMaxOpenStreams - 1, session_->GetNumOpenOutgoingStreams()); 362 EXPECT_EQ(kMaxOpenStreams - 1, session_->GetNumOpenOutgoingStreams());
373 363
374 quic_data.Resume(); 364 quic_data.Resume();
375 EXPECT_TRUE(quic_data.AllReadDataConsumed()); 365 EXPECT_TRUE(quic_data.AllReadDataConsumed());
376 EXPECT_TRUE(quic_data.AllWriteDataConsumed()); 366 EXPECT_TRUE(quic_data.AllWriteDataConsumed());
377 } 367 }
378 368
379 TEST_P(QuicChromiumClientSessionTest, ConnectionCloseBeforeStreamRequest) { 369 TEST_P(QuicChromiumClientSessionTest, ConnectionCloseBeforeStreamRequest) {
380 MockQuicData quic_data; 370 MockQuicData quic_data;
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
457 447
458 EXPECT_TRUE(quic_data.AllReadDataConsumed()); 448 EXPECT_TRUE(quic_data.AllReadDataConsumed());
459 EXPECT_TRUE(quic_data.AllWriteDataConsumed()); 449 EXPECT_TRUE(quic_data.AllWriteDataConsumed());
460 } 450 }
461 451
462 TEST_P(QuicChromiumClientSessionTest, MaxNumStreams) { 452 TEST_P(QuicChromiumClientSessionTest, MaxNumStreams) {
463 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; 453 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
464 std::unique_ptr<QuicEncryptedPacket> settings_packet( 454 std::unique_ptr<QuicEncryptedPacket> settings_packet(
465 client_maker_.MakeInitialSettingsPacket(1, nullptr)); 455 client_maker_.MakeInitialSettingsPacket(1, nullptr));
466 std::unique_ptr<QuicEncryptedPacket> client_rst(client_maker_.MakeRstPacket( 456 std::unique_ptr<QuicEncryptedPacket> client_rst(client_maker_.MakeRstPacket(
467 2, true, GetNthClientInitiatedStreamId(0), QUIC_RST_ACKNOWLEDGEMENT)); 457 2, true, kClientDataStreamId1, QUIC_RST_ACKNOWLEDGEMENT));
468 MockWrite writes[] = { 458 MockWrite writes[] = {
469 MockWrite(ASYNC, settings_packet->data(), settings_packet->length(), 1), 459 MockWrite(ASYNC, settings_packet->data(), settings_packet->length(), 1),
470 MockWrite(ASYNC, client_rst->data(), client_rst->length(), 2)}; 460 MockWrite(ASYNC, client_rst->data(), client_rst->length(), 2)};
471 socket_data_.reset(new SequencedSocketData(reads, arraysize(reads), writes, 461 socket_data_.reset(new SequencedSocketData(reads, arraysize(reads), writes,
472 arraysize(writes))); 462 arraysize(writes)));
473 463
474 Initialize(); 464 Initialize();
475 CompleteCryptoHandshake(); 465 CompleteCryptoHandshake();
476 const size_t kMaxOpenStreams = session_->max_open_outgoing_streams(); 466 const size_t kMaxOpenStreams = session_->max_open_outgoing_streams();
477 467
(...skipping 18 matching lines...) Expand all
496 EXPECT_EQ(kMaxOpenStreams - 1, session_->GetNumOpenOutgoingStreams()); 486 EXPECT_EQ(kMaxOpenStreams - 1, session_->GetNumOpenOutgoingStreams());
497 EXPECT_TRUE(session_->CreateOutgoingDynamicStream(kDefaultPriority)); 487 EXPECT_TRUE(session_->CreateOutgoingDynamicStream(kDefaultPriority));
498 } 488 }
499 489
500 TEST_P(QuicChromiumClientSessionTest, PushStreamTimedOutNoResponse) { 490 TEST_P(QuicChromiumClientSessionTest, PushStreamTimedOutNoResponse) {
501 base::HistogramTester histogram_tester; 491 base::HistogramTester histogram_tester;
502 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; 492 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
503 std::unique_ptr<QuicEncryptedPacket> settings_packet( 493 std::unique_ptr<QuicEncryptedPacket> settings_packet(
504 client_maker_.MakeInitialSettingsPacket(1, nullptr)); 494 client_maker_.MakeInitialSettingsPacket(1, nullptr));
505 std::unique_ptr<QuicEncryptedPacket> client_rst(client_maker_.MakeRstPacket( 495 std::unique_ptr<QuicEncryptedPacket> client_rst(client_maker_.MakeRstPacket(
506 2, true, GetNthServerInitiatedStreamId(0), QUIC_PUSH_STREAM_TIMED_OUT)); 496 2, true, kServerDataStreamId1, QUIC_PUSH_STREAM_TIMED_OUT));
507 MockWrite writes[] = { 497 MockWrite writes[] = {
508 MockWrite(ASYNC, settings_packet->data(), settings_packet->length(), 1), 498 MockWrite(ASYNC, settings_packet->data(), settings_packet->length(), 1),
509 MockWrite(ASYNC, client_rst->data(), client_rst->length(), 2)}; 499 MockWrite(ASYNC, client_rst->data(), client_rst->length(), 2)};
510 socket_data_.reset(new SequencedSocketData(reads, arraysize(reads), writes, 500 socket_data_.reset(new SequencedSocketData(reads, arraysize(reads), writes,
511 arraysize(writes))); 501 arraysize(writes)));
512 Initialize(); 502 Initialize();
513 503
514 ProofVerifyDetailsChromium details; 504 ProofVerifyDetailsChromium details;
515 details.cert_verify_result.verified_cert = 505 details.cert_verify_result.verified_cert =
516 ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem"); 506 ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem");
517 ASSERT_TRUE(details.cert_verify_result.verified_cert.get()); 507 ASSERT_TRUE(details.cert_verify_result.verified_cert.get());
518 508
519 CompleteCryptoHandshake(); 509 CompleteCryptoHandshake();
520 session_->OnProofVerifyDetailsAvailable(details); 510 session_->OnProofVerifyDetailsAvailable(details);
521 511
522 QuicChromiumClientStream* stream = 512 QuicChromiumClientStream* stream =
523 session_->CreateOutgoingDynamicStream(kDefaultPriority); 513 session_->CreateOutgoingDynamicStream(kDefaultPriority);
524 EXPECT_TRUE(stream); 514 EXPECT_TRUE(stream);
525 515
526 SpdyHeaderBlock promise_headers; 516 SpdyHeaderBlock promise_headers;
527 promise_headers[":method"] = "GET"; 517 promise_headers[":method"] = "GET";
528 promise_headers[":authority"] = "www.example.org"; 518 promise_headers[":authority"] = "www.example.org";
529 promise_headers[":scheme"] = "https"; 519 promise_headers[":scheme"] = "https";
530 promise_headers[":path"] = "/pushed.jpg"; 520 promise_headers[":path"] = "/pushed.jpg";
531 521
532 // Receive a PUSH PROMISE from the server. 522 // Receive a PUSH PROMISE from the server.
533 EXPECT_TRUE(session_->HandlePromised( 523 EXPECT_TRUE(session_->HandlePromised(stream->id(), kServerDataStreamId1,
534 stream->id(), GetNthServerInitiatedStreamId(0), promise_headers)); 524 promise_headers));
535 525
536 QuicClientPromisedInfo* promised = 526 QuicClientPromisedInfo* promised =
537 session_->GetPromisedById(GetNthServerInitiatedStreamId(0)); 527 session_->GetPromisedById(kServerDataStreamId1);
538 EXPECT_TRUE(promised); 528 EXPECT_TRUE(promised);
539 // Fire alarm to time out the push stream. 529 // Fire alarm to time out the push stream.
540 alarm_factory_.FireAlarm(QuicClientPromisedInfoPeer::GetAlarm(promised)); 530 alarm_factory_.FireAlarm(QuicClientPromisedInfoPeer::GetAlarm(promised));
541 EXPECT_FALSE( 531 EXPECT_FALSE(
542 session_->GetPromisedByUrl("https://www.example.org/pushed.jpg")); 532 session_->GetPromisedByUrl("https://www.example.org/pushed.jpg"));
543 EXPECT_EQ(0u, 533 EXPECT_EQ(0u,
544 QuicChromiumClientSessionPeer::GetPushedBytesCount(session_.get())); 534 QuicChromiumClientSessionPeer::GetPushedBytesCount(session_.get()));
545 EXPECT_EQ(0u, QuicChromiumClientSessionPeer::GetPushedAndUnclaimedBytesCount( 535 EXPECT_EQ(0u, QuicChromiumClientSessionPeer::GetPushedAndUnclaimedBytesCount(
546 session_.get())); 536 session_.get()));
547 } 537 }
548 538
549 TEST_P(QuicChromiumClientSessionTest, PushStreamTimedOutWithResponse) { 539 TEST_P(QuicChromiumClientSessionTest, PushStreamTimedOutWithResponse) {
550 base::HistogramTester histogram_tester; 540 base::HistogramTester histogram_tester;
551 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; 541 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
552 std::unique_ptr<QuicEncryptedPacket> settings_packet( 542 std::unique_ptr<QuicEncryptedPacket> settings_packet(
553 client_maker_.MakeInitialSettingsPacket(1, nullptr)); 543 client_maker_.MakeInitialSettingsPacket(1, nullptr));
554 std::unique_ptr<QuicEncryptedPacket> client_rst(client_maker_.MakeRstPacket( 544 std::unique_ptr<QuicEncryptedPacket> client_rst(client_maker_.MakeRstPacket(
555 2, true, GetNthServerInitiatedStreamId(0), QUIC_PUSH_STREAM_TIMED_OUT)); 545 2, true, kServerDataStreamId1, QUIC_PUSH_STREAM_TIMED_OUT));
556 MockWrite writes[] = { 546 MockWrite writes[] = {
557 MockWrite(ASYNC, settings_packet->data(), settings_packet->length(), 1), 547 MockWrite(ASYNC, settings_packet->data(), settings_packet->length(), 1),
558 MockWrite(ASYNC, client_rst->data(), client_rst->length(), 2)}; 548 MockWrite(ASYNC, client_rst->data(), client_rst->length(), 2)};
559 socket_data_.reset(new SequencedSocketData(reads, arraysize(reads), writes, 549 socket_data_.reset(new SequencedSocketData(reads, arraysize(reads), writes,
560 arraysize(writes))); 550 arraysize(writes)));
561 Initialize(); 551 Initialize();
562 552
563 ProofVerifyDetailsChromium details; 553 ProofVerifyDetailsChromium details;
564 details.cert_verify_result.verified_cert = 554 details.cert_verify_result.verified_cert =
565 ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem"); 555 ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem");
566 ASSERT_TRUE(details.cert_verify_result.verified_cert.get()); 556 ASSERT_TRUE(details.cert_verify_result.verified_cert.get());
567 557
568 CompleteCryptoHandshake(); 558 CompleteCryptoHandshake();
569 session_->OnProofVerifyDetailsAvailable(details); 559 session_->OnProofVerifyDetailsAvailable(details);
570 560
571 QuicChromiumClientStream* stream = 561 QuicChromiumClientStream* stream =
572 session_->CreateOutgoingDynamicStream(kDefaultPriority); 562 session_->CreateOutgoingDynamicStream(kDefaultPriority);
573 EXPECT_TRUE(stream); 563 EXPECT_TRUE(stream);
574 564
575 SpdyHeaderBlock promise_headers; 565 SpdyHeaderBlock promise_headers;
576 promise_headers[":method"] = "GET"; 566 promise_headers[":method"] = "GET";
577 promise_headers[":authority"] = "www.example.org"; 567 promise_headers[":authority"] = "www.example.org";
578 promise_headers[":scheme"] = "https"; 568 promise_headers[":scheme"] = "https";
579 promise_headers[":path"] = "/pushed.jpg"; 569 promise_headers[":path"] = "/pushed.jpg";
580 570
581 session_->GetOrCreateStream(GetNthServerInitiatedStreamId(0)); 571 session_->GetOrCreateStream(kServerDataStreamId1);
582 // Receive a PUSH PROMISE from the server. 572 // Receive a PUSH PROMISE from the server.
583 EXPECT_TRUE(session_->HandlePromised( 573 EXPECT_TRUE(session_->HandlePromised(stream->id(), kServerDataStreamId1,
584 stream->id(), GetNthServerInitiatedStreamId(0), promise_headers)); 574 promise_headers));
585 session_->OnInitialHeadersComplete(GetNthServerInitiatedStreamId(0), 575 session_->OnInitialHeadersComplete(kServerDataStreamId1, SpdyHeaderBlock());
586 SpdyHeaderBlock());
587 // Read data on the pushed stream. 576 // Read data on the pushed stream.
588 QuicStreamFrame data(GetNthServerInitiatedStreamId(0), false, 0, 577 QuicStreamFrame data(kServerDataStreamId1, false, 0, QuicStringPiece("SP"));
589 QuicStringPiece("SP"));
590 session_->OnStreamFrame(data); 578 session_->OnStreamFrame(data);
591 579
592 QuicClientPromisedInfo* promised = 580 QuicClientPromisedInfo* promised =
593 session_->GetPromisedById(GetNthServerInitiatedStreamId(0)); 581 session_->GetPromisedById(kServerDataStreamId1);
594 EXPECT_TRUE(promised); 582 EXPECT_TRUE(promised);
595 // Fire alarm to time out the push stream. 583 // Fire alarm to time out the push stream.
596 alarm_factory_.FireAlarm(QuicClientPromisedInfoPeer::GetAlarm(promised)); 584 alarm_factory_.FireAlarm(QuicClientPromisedInfoPeer::GetAlarm(promised));
597 EXPECT_EQ(2u, 585 EXPECT_EQ(2u,
598 QuicChromiumClientSessionPeer::GetPushedBytesCount(session_.get())); 586 QuicChromiumClientSessionPeer::GetPushedBytesCount(session_.get()));
599 EXPECT_EQ(2u, QuicChromiumClientSessionPeer::GetPushedAndUnclaimedBytesCount( 587 EXPECT_EQ(2u, QuicChromiumClientSessionPeer::GetPushedAndUnclaimedBytesCount(
600 session_.get())); 588 session_.get()));
601 } 589 }
602 590
603 TEST_P(QuicChromiumClientSessionTest, CancelPushWhenPendingValidation) { 591 TEST_P(QuicChromiumClientSessionTest, CancelPushWhenPendingValidation) {
604 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; 592 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
605 std::unique_ptr<QuicEncryptedPacket> settings_packet( 593 std::unique_ptr<QuicEncryptedPacket> settings_packet(
606 client_maker_.MakeInitialSettingsPacket(1, nullptr)); 594 client_maker_.MakeInitialSettingsPacket(1, nullptr));
607 std::unique_ptr<QuicEncryptedPacket> client_rst(client_maker_.MakeRstPacket( 595 std::unique_ptr<QuicEncryptedPacket> client_rst(client_maker_.MakeRstPacket(
608 2, true, GetNthClientInitiatedStreamId(0), QUIC_RST_ACKNOWLEDGEMENT)); 596 2, true, kClientDataStreamId1, QUIC_RST_ACKNOWLEDGEMENT));
609 597
610 MockWrite writes[] = { 598 MockWrite writes[] = {
611 MockWrite(ASYNC, settings_packet->data(), settings_packet->length(), 1), 599 MockWrite(ASYNC, settings_packet->data(), settings_packet->length(), 1),
612 MockWrite(ASYNC, client_rst->data(), client_rst->length(), 2)}; 600 MockWrite(ASYNC, client_rst->data(), client_rst->length(), 2)};
613 socket_data_.reset(new SequencedSocketData(reads, arraysize(reads), writes, 601 socket_data_.reset(new SequencedSocketData(reads, arraysize(reads), writes,
614 arraysize(writes))); 602 arraysize(writes)));
615 Initialize(); 603 Initialize();
616 604
617 ProofVerifyDetailsChromium details; 605 ProofVerifyDetailsChromium details;
618 details.cert_verify_result.verified_cert = 606 details.cert_verify_result.verified_cert =
619 ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem"); 607 ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem");
620 ASSERT_TRUE(details.cert_verify_result.verified_cert.get()); 608 ASSERT_TRUE(details.cert_verify_result.verified_cert.get());
621 609
622 CompleteCryptoHandshake(); 610 CompleteCryptoHandshake();
623 session_->OnProofVerifyDetailsAvailable(details); 611 session_->OnProofVerifyDetailsAvailable(details);
624 612
625 QuicChromiumClientStream* stream = 613 QuicChromiumClientStream* stream =
626 session_->CreateOutgoingDynamicStream(kDefaultPriority); 614 session_->CreateOutgoingDynamicStream(kDefaultPriority);
627 EXPECT_TRUE(stream); 615 EXPECT_TRUE(stream);
628 616
629 SpdyHeaderBlock promise_headers; 617 SpdyHeaderBlock promise_headers;
630 promise_headers[":method"] = "GET"; 618 promise_headers[":method"] = "GET";
631 promise_headers[":authority"] = "www.example.org"; 619 promise_headers[":authority"] = "www.example.org";
632 promise_headers[":scheme"] = "https"; 620 promise_headers[":scheme"] = "https";
633 promise_headers[":path"] = "/pushed.jpg"; 621 promise_headers[":path"] = "/pushed.jpg";
634 622
635 // Receive a PUSH PROMISE from the server. 623 // Receive a PUSH PROMISE from the server.
636 EXPECT_TRUE(session_->HandlePromised( 624 EXPECT_TRUE(session_->HandlePromised(stream->id(), kServerDataStreamId1,
637 stream->id(), GetNthServerInitiatedStreamId(0), promise_headers)); 625 promise_headers));
638 626
639 QuicClientPromisedInfo* promised = 627 QuicClientPromisedInfo* promised =
640 session_->GetPromisedById(GetNthServerInitiatedStreamId(0)); 628 session_->GetPromisedById(kServerDataStreamId1);
641 EXPECT_TRUE(promised); 629 EXPECT_TRUE(promised);
642 630
643 // Initiate rendezvous. 631 // Initiate rendezvous.
644 SpdyHeaderBlock client_request = promise_headers.Clone(); 632 SpdyHeaderBlock client_request = promise_headers.Clone();
645 TestPushPromiseDelegate delegate(/*match=*/true); 633 TestPushPromiseDelegate delegate(/*match=*/true);
646 promised->HandleClientRequest(client_request, &delegate); 634 promised->HandleClientRequest(client_request, &delegate);
647 635
648 // Cancel the push before receiving the response to the pushed request. 636 // Cancel the push before receiving the response to the pushed request.
649 GURL pushed_url("https://www.example.org/pushed.jpg"); 637 GURL pushed_url("https://www.example.org/pushed.jpg");
650 test_push_delegate_.CancelPush(pushed_url); 638 test_push_delegate_.CancelPush(pushed_url);
651 EXPECT_TRUE(session_->GetPromisedByUrl(pushed_url.spec())); 639 EXPECT_TRUE(session_->GetPromisedByUrl(pushed_url.spec()));
652 640
653 // Reset the stream now before tear down. 641 // Reset the stream now before tear down.
654 session_->CloseStream(GetNthClientInitiatedStreamId(0)); 642 session_->CloseStream(kClientDataStreamId1);
655 } 643 }
656 644
657 TEST_P(QuicChromiumClientSessionTest, CancelPushBeforeReceivingResponse) { 645 TEST_P(QuicChromiumClientSessionTest, CancelPushBeforeReceivingResponse) {
658 base::HistogramTester histogram_tester; 646 base::HistogramTester histogram_tester;
659 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; 647 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
660 std::unique_ptr<QuicEncryptedPacket> settings_packet( 648 std::unique_ptr<QuicEncryptedPacket> settings_packet(
661 client_maker_.MakeInitialSettingsPacket(1, nullptr)); 649 client_maker_.MakeInitialSettingsPacket(1, nullptr));
662 std::unique_ptr<QuicEncryptedPacket> client_rst(client_maker_.MakeRstPacket( 650 std::unique_ptr<QuicEncryptedPacket> client_rst(client_maker_.MakeRstPacket(
663 2, true, GetNthServerInitiatedStreamId(0), QUIC_STREAM_CANCELLED)); 651 2, true, kServerDataStreamId1, QUIC_STREAM_CANCELLED));
664 MockWrite writes[] = { 652 MockWrite writes[] = {
665 MockWrite(ASYNC, settings_packet->data(), settings_packet->length(), 1), 653 MockWrite(ASYNC, settings_packet->data(), settings_packet->length(), 1),
666 MockWrite(ASYNC, client_rst->data(), client_rst->length(), 2)}; 654 MockWrite(ASYNC, client_rst->data(), client_rst->length(), 2)};
667 socket_data_.reset(new SequencedSocketData(reads, arraysize(reads), writes, 655 socket_data_.reset(new SequencedSocketData(reads, arraysize(reads), writes,
668 arraysize(writes))); 656 arraysize(writes)));
669 Initialize(); 657 Initialize();
670 658
671 ProofVerifyDetailsChromium details; 659 ProofVerifyDetailsChromium details;
672 details.cert_verify_result.verified_cert = 660 details.cert_verify_result.verified_cert =
673 ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem"); 661 ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem");
674 ASSERT_TRUE(details.cert_verify_result.verified_cert.get()); 662 ASSERT_TRUE(details.cert_verify_result.verified_cert.get());
675 663
676 CompleteCryptoHandshake(); 664 CompleteCryptoHandshake();
677 session_->OnProofVerifyDetailsAvailable(details); 665 session_->OnProofVerifyDetailsAvailable(details);
678 666
679 QuicChromiumClientStream* stream = 667 QuicChromiumClientStream* stream =
680 session_->CreateOutgoingDynamicStream(kDefaultPriority); 668 session_->CreateOutgoingDynamicStream(kDefaultPriority);
681 EXPECT_TRUE(stream); 669 EXPECT_TRUE(stream);
682 670
683 SpdyHeaderBlock promise_headers; 671 SpdyHeaderBlock promise_headers;
684 promise_headers[":method"] = "GET"; 672 promise_headers[":method"] = "GET";
685 promise_headers[":authority"] = "www.example.org"; 673 promise_headers[":authority"] = "www.example.org";
686 promise_headers[":scheme"] = "https"; 674 promise_headers[":scheme"] = "https";
687 promise_headers[":path"] = "/pushed.jpg"; 675 promise_headers[":path"] = "/pushed.jpg";
688 676
689 // Receive a PUSH PROMISE from the server. 677 // Receive a PUSH PROMISE from the server.
690 EXPECT_TRUE(session_->HandlePromised( 678 EXPECT_TRUE(session_->HandlePromised(stream->id(), kServerDataStreamId1,
691 stream->id(), GetNthServerInitiatedStreamId(0), promise_headers)); 679 promise_headers));
692 680
693 QuicClientPromisedInfo* promised = 681 QuicClientPromisedInfo* promised =
694 session_->GetPromisedById(GetNthServerInitiatedStreamId(0)); 682 session_->GetPromisedById(kServerDataStreamId1);
695 EXPECT_TRUE(promised); 683 EXPECT_TRUE(promised);
696 // Cancel the push before receiving the response to the pushed request. 684 // Cancel the push before receiving the response to the pushed request.
697 GURL pushed_url("https://www.example.org/pushed.jpg"); 685 GURL pushed_url("https://www.example.org/pushed.jpg");
698 test_push_delegate_.CancelPush(pushed_url); 686 test_push_delegate_.CancelPush(pushed_url);
699 687
700 EXPECT_FALSE(session_->GetPromisedByUrl(pushed_url.spec())); 688 EXPECT_FALSE(session_->GetPromisedByUrl(pushed_url.spec()));
701 EXPECT_EQ(0u, 689 EXPECT_EQ(0u,
702 QuicChromiumClientSessionPeer::GetPushedBytesCount(session_.get())); 690 QuicChromiumClientSessionPeer::GetPushedBytesCount(session_.get()));
703 EXPECT_EQ(0u, QuicChromiumClientSessionPeer::GetPushedAndUnclaimedBytesCount( 691 EXPECT_EQ(0u, QuicChromiumClientSessionPeer::GetPushedAndUnclaimedBytesCount(
704 session_.get())); 692 session_.get()));
705 } 693 }
706 694
707 TEST_P(QuicChromiumClientSessionTest, CancelPushAfterReceivingResponse) { 695 TEST_P(QuicChromiumClientSessionTest, CancelPushAfterReceivingResponse) {
708 base::HistogramTester histogram_tester; 696 base::HistogramTester histogram_tester;
709 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; 697 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
710 std::unique_ptr<QuicEncryptedPacket> settings_packet( 698 std::unique_ptr<QuicEncryptedPacket> settings_packet(
711 client_maker_.MakeInitialSettingsPacket(1, nullptr)); 699 client_maker_.MakeInitialSettingsPacket(1, nullptr));
712 std::unique_ptr<QuicEncryptedPacket> client_rst(client_maker_.MakeRstPacket( 700 std::unique_ptr<QuicEncryptedPacket> client_rst(client_maker_.MakeRstPacket(
713 2, true, GetNthServerInitiatedStreamId(0), QUIC_STREAM_CANCELLED)); 701 2, true, kServerDataStreamId1, QUIC_STREAM_CANCELLED));
714 MockWrite writes[] = { 702 MockWrite writes[] = {
715 MockWrite(ASYNC, settings_packet->data(), settings_packet->length(), 1), 703 MockWrite(ASYNC, settings_packet->data(), settings_packet->length(), 1),
716 MockWrite(ASYNC, client_rst->data(), client_rst->length(), 2)}; 704 MockWrite(ASYNC, client_rst->data(), client_rst->length(), 2)};
717 socket_data_.reset(new SequencedSocketData(reads, arraysize(reads), writes, 705 socket_data_.reset(new SequencedSocketData(reads, arraysize(reads), writes,
718 arraysize(writes))); 706 arraysize(writes)));
719 Initialize(); 707 Initialize();
720 708
721 ProofVerifyDetailsChromium details; 709 ProofVerifyDetailsChromium details;
722 details.cert_verify_result.verified_cert = 710 details.cert_verify_result.verified_cert =
723 ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem"); 711 ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem");
724 ASSERT_TRUE(details.cert_verify_result.verified_cert.get()); 712 ASSERT_TRUE(details.cert_verify_result.verified_cert.get());
725 713
726 CompleteCryptoHandshake(); 714 CompleteCryptoHandshake();
727 session_->OnProofVerifyDetailsAvailable(details); 715 session_->OnProofVerifyDetailsAvailable(details);
728 716
729 QuicChromiumClientStream* stream = 717 QuicChromiumClientStream* stream =
730 session_->CreateOutgoingDynamicStream(kDefaultPriority); 718 session_->CreateOutgoingDynamicStream(kDefaultPriority);
731 EXPECT_TRUE(stream); 719 EXPECT_TRUE(stream);
732 720
733 SpdyHeaderBlock promise_headers; 721 SpdyHeaderBlock promise_headers;
734 promise_headers[":method"] = "GET"; 722 promise_headers[":method"] = "GET";
735 promise_headers[":authority"] = "www.example.org"; 723 promise_headers[":authority"] = "www.example.org";
736 promise_headers[":scheme"] = "https"; 724 promise_headers[":scheme"] = "https";
737 promise_headers[":path"] = "/pushed.jpg"; 725 promise_headers[":path"] = "/pushed.jpg";
738 726
739 session_->GetOrCreateStream(GetNthServerInitiatedStreamId(0)); 727 session_->GetOrCreateStream(kServerDataStreamId1);
740 // Receive a PUSH PROMISE from the server. 728 // Receive a PUSH PROMISE from the server.
741 EXPECT_TRUE(session_->HandlePromised( 729 EXPECT_TRUE(session_->HandlePromised(stream->id(), kServerDataStreamId1,
742 stream->id(), GetNthServerInitiatedStreamId(0), promise_headers)); 730 promise_headers));
743 session_->OnInitialHeadersComplete(GetNthServerInitiatedStreamId(0), 731 session_->OnInitialHeadersComplete(kServerDataStreamId1, SpdyHeaderBlock());
744 SpdyHeaderBlock());
745 // Read data on the pushed stream. 732 // Read data on the pushed stream.
746 QuicStreamFrame data(GetNthServerInitiatedStreamId(0), false, 0, 733 QuicStreamFrame data(kServerDataStreamId1, false, 0, QuicStringPiece("SP"));
747 QuicStringPiece("SP"));
748 session_->OnStreamFrame(data); 734 session_->OnStreamFrame(data);
749 735
750 QuicClientPromisedInfo* promised = 736 QuicClientPromisedInfo* promised =
751 session_->GetPromisedById(GetNthServerInitiatedStreamId(0)); 737 session_->GetPromisedById(kServerDataStreamId1);
752 EXPECT_TRUE(promised); 738 EXPECT_TRUE(promised);
753 // Cancel the push after receiving data on the push stream. 739 // Cancel the push after receiving data on the push stream.
754 GURL pushed_url("https://www.example.org/pushed.jpg"); 740 GURL pushed_url("https://www.example.org/pushed.jpg");
755 test_push_delegate_.CancelPush(pushed_url); 741 test_push_delegate_.CancelPush(pushed_url);
756 742
757 EXPECT_FALSE(session_->GetPromisedByUrl(pushed_url.spec())); 743 EXPECT_FALSE(session_->GetPromisedByUrl(pushed_url.spec()));
758 EXPECT_EQ(2u, 744 EXPECT_EQ(2u,
759 QuicChromiumClientSessionPeer::GetPushedBytesCount(session_.get())); 745 QuicChromiumClientSessionPeer::GetPushedBytesCount(session_.get()));
760 EXPECT_EQ(2u, QuicChromiumClientSessionPeer::GetPushedAndUnclaimedBytesCount( 746 EXPECT_EQ(2u, QuicChromiumClientSessionPeer::GetPushedAndUnclaimedBytesCount(
761 session_.get())); 747 session_.get()));
762 } 748 }
763 749
764 TEST_P(QuicChromiumClientSessionTest, Priority) { 750 TEST_P(QuicChromiumClientSessionTest, Priority) {
765 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; 751 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
766 std::unique_ptr<QuicEncryptedPacket> settings_packet( 752 std::unique_ptr<QuicEncryptedPacket> settings_packet(
767 client_maker_.MakeInitialSettingsPacket(1, nullptr)); 753 client_maker_.MakeInitialSettingsPacket(1, nullptr));
768 std::unique_ptr<QuicEncryptedPacket> client_rst(client_maker_.MakeRstPacket( 754 std::unique_ptr<QuicEncryptedPacket> client_rst(client_maker_.MakeRstPacket(
769 2, true, GetNthClientInitiatedStreamId(0), QUIC_RST_ACKNOWLEDGEMENT)); 755 2, true, kClientDataStreamId1, QUIC_RST_ACKNOWLEDGEMENT));
770 MockWrite writes[] = { 756 MockWrite writes[] = {
771 MockWrite(ASYNC, settings_packet->data(), settings_packet->length(), 1), 757 MockWrite(ASYNC, settings_packet->data(), settings_packet->length(), 1),
772 MockWrite(ASYNC, client_rst->data(), client_rst->length(), 2)}; 758 MockWrite(ASYNC, client_rst->data(), client_rst->length(), 2)};
773 socket_data_.reset(new SequencedSocketData(reads, arraysize(reads), writes, 759 socket_data_.reset(new SequencedSocketData(reads, arraysize(reads), writes,
774 arraysize(writes))); 760 arraysize(writes)));
775 761
776 Initialize(); 762 Initialize();
777 CompleteCryptoHandshake(); 763 CompleteCryptoHandshake();
778 for (SpdyPriority priority : {kV3HighestPriority, kV3LowestPriority}) { 764 for (SpdyPriority priority : {kV3HighestPriority, kV3LowestPriority}) {
779 QuicChromiumClientStream* stream = 765 QuicChromiumClientStream* stream =
780 session_->CreateOutgoingDynamicStream(priority); 766 session_->CreateOutgoingDynamicStream(priority);
781 EXPECT_EQ(kV3HighestPriority, stream->priority()); 767 EXPECT_EQ(kV3HighestPriority, stream->priority());
782 768
783 MockStreamDelegate delegate; 769 MockStreamDelegate delegate;
784 EXPECT_CALL(delegate, HasSendHeadersComplete()) 770 EXPECT_CALL(delegate, HasSendHeadersComplete())
785 .WillOnce(testing::Return(true)); 771 .WillOnce(testing::Return(true));
786 stream->SetDelegate(&delegate); 772 stream->SetDelegate(&delegate);
787 EXPECT_EQ(priority, stream->priority()); 773 EXPECT_EQ(priority, stream->priority());
788 stream->SetDelegate(nullptr); 774 stream->SetDelegate(nullptr);
789 session_->CloseStream(stream->id()); 775 session_->CloseStream(stream->id());
790 } 776 }
791 } 777 }
792 778
793 TEST_P(QuicChromiumClientSessionTest, MaxNumStreamsViaRequest) { 779 TEST_P(QuicChromiumClientSessionTest, MaxNumStreamsViaRequest) {
794 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; 780 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
795 std::unique_ptr<QuicEncryptedPacket> settings_packet( 781 std::unique_ptr<QuicEncryptedPacket> settings_packet(
796 client_maker_.MakeInitialSettingsPacket(1, nullptr)); 782 client_maker_.MakeInitialSettingsPacket(1, nullptr));
797 std::unique_ptr<QuicEncryptedPacket> client_rst(client_maker_.MakeRstPacket( 783 std::unique_ptr<QuicEncryptedPacket> client_rst(client_maker_.MakeRstPacket(
798 2, true, GetNthClientInitiatedStreamId(0), QUIC_RST_ACKNOWLEDGEMENT)); 784 2, true, kClientDataStreamId1, QUIC_RST_ACKNOWLEDGEMENT));
799 MockWrite writes[] = { 785 MockWrite writes[] = {
800 MockWrite(ASYNC, settings_packet->data(), settings_packet->length(), 1), 786 MockWrite(ASYNC, settings_packet->data(), settings_packet->length(), 1),
801 MockWrite(ASYNC, client_rst->data(), client_rst->length(), 2)}; 787 MockWrite(ASYNC, client_rst->data(), client_rst->length(), 2)};
802 socket_data_.reset(new SequencedSocketData(reads, arraysize(reads), writes, 788 socket_data_.reset(new SequencedSocketData(reads, arraysize(reads), writes,
803 arraysize(writes))); 789 arraysize(writes)));
804 790
805 Initialize(); 791 Initialize();
806 CompleteCryptoHandshake(); 792 CompleteCryptoHandshake();
807 const size_t kMaxOpenStreams = session_->max_open_outgoing_streams(); 793 const size_t kMaxOpenStreams = session_->max_open_outgoing_streams();
808 794
(...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after
1159 1145
1160 EXPECT_TRUE(socket_data_->AllReadDataConsumed()); 1146 EXPECT_TRUE(socket_data_->AllReadDataConsumed());
1161 EXPECT_TRUE(socket_data_->AllWriteDataConsumed()); 1147 EXPECT_TRUE(socket_data_->AllWriteDataConsumed());
1162 EXPECT_TRUE(new_socket_data.AllReadDataConsumed()); 1148 EXPECT_TRUE(new_socket_data.AllReadDataConsumed());
1163 EXPECT_TRUE(new_socket_data.AllWriteDataConsumed()); 1149 EXPECT_TRUE(new_socket_data.AllWriteDataConsumed());
1164 } 1150 }
1165 1151
1166 } // namespace 1152 } // namespace
1167 } // namespace test 1153 } // namespace test
1168 } // namespace net 1154 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/chromium/quic_chromium_client_session.cc ('k') | net/quic/chromium/quic_chromium_client_stream_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698