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

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

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

Powered by Google App Engine
This is Rietveld 408576698