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

Side by Side Diff: net/spdy/spdy_stream_unittest.cc

Issue 2169583002: Eliminate SpdyHeaderBlock copy in SpdyStream. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 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
« no previous file with comments | « net/spdy/spdy_stream.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/spdy/spdy_stream.h" 5 #include "net/spdy/spdy_stream.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <cstddef> 9 #include <cstddef>
10 #include <limits> 10 #include <limits>
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession()); 161 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession());
162 162
163 base::WeakPtr<SpdyStream> stream = 163 base::WeakPtr<SpdyStream> stream =
164 CreateStreamSynchronously( 164 CreateStreamSynchronously(
165 SPDY_BIDIRECTIONAL_STREAM, session, url, LOWEST, BoundNetLog()); 165 SPDY_BIDIRECTIONAL_STREAM, session, url, LOWEST, BoundNetLog());
166 ASSERT_TRUE(stream); 166 ASSERT_TRUE(stream);
167 167
168 StreamDelegateSendImmediate delegate(stream, kPostBodyStringPiece); 168 StreamDelegateSendImmediate delegate(stream, kPostBodyStringPiece);
169 stream->SetDelegate(&delegate); 169 stream->SetDelegate(&delegate);
170 170
171 EXPECT_FALSE(stream->HasUrlFromHeaders()); 171 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty());
172 172
173 SpdyHeaderBlock headers( 173 SpdyHeaderBlock headers(
174 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength)); 174 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength));
175 EXPECT_EQ(ERR_IO_PENDING, 175 EXPECT_EQ(ERR_IO_PENDING,
176 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); 176 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND));
177 EXPECT_TRUE(stream->HasUrlFromHeaders());
178 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); 177 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec());
179 178
180 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); 179 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED));
181 180
182 EXPECT_TRUE(delegate.send_headers_completed()); 181 EXPECT_TRUE(delegate.send_headers_completed());
183 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); 182 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey()));
184 EXPECT_EQ(std::string(kPostBody, kPostBodyLength), 183 EXPECT_EQ(std::string(kPostBody, kPostBodyLength),
185 delegate.TakeReceivedData()); 184 delegate.TakeReceivedData());
186 EXPECT_TRUE(data.AllWriteDataConsumed()); 185 EXPECT_TRUE(data.AllWriteDataConsumed());
187 } 186 }
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 240
242 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession()); 241 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession());
243 242
244 base::WeakPtr<SpdyStream> stream = CreateStreamSynchronously( 243 base::WeakPtr<SpdyStream> stream = CreateStreamSynchronously(
245 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); 244 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog());
246 ASSERT_TRUE(stream); 245 ASSERT_TRUE(stream);
247 246
248 StreamDelegateWithTrailers delegate(stream, kPostBodyStringPiece); 247 StreamDelegateWithTrailers delegate(stream, kPostBodyStringPiece);
249 stream->SetDelegate(&delegate); 248 stream->SetDelegate(&delegate);
250 249
251 EXPECT_FALSE(stream->HasUrlFromHeaders()); 250 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty());
252 251
253 SpdyHeaderBlock headers( 252 SpdyHeaderBlock headers(
254 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength)); 253 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength));
255 EXPECT_EQ(ERR_IO_PENDING, 254 EXPECT_EQ(ERR_IO_PENDING,
256 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); 255 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND));
257 EXPECT_TRUE(stream->HasUrlFromHeaders());
258 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); 256 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec());
259 257
260 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); 258 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED));
261 259
262 EXPECT_TRUE(delegate.send_headers_completed()); 260 EXPECT_TRUE(delegate.send_headers_completed());
263 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); 261 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey()));
264 const SpdyHeaderBlock& received_trailers = delegate.trailers(); 262 const SpdyHeaderBlock& received_trailers = delegate.trailers();
265 SpdyHeaderBlock::const_iterator it = received_trailers.find("foo"); 263 SpdyHeaderBlock::const_iterator it = received_trailers.find("foo");
266 EXPECT_EQ("bar", it->second); 264 EXPECT_EQ("bar", it->second);
267 EXPECT_EQ(std::string(kPostBody, kPostBodyLength), 265 EXPECT_EQ(std::string(kPostBody, kPostBodyLength),
(...skipping 15 matching lines...) Expand all
283 281
284 // Conjure up a stream. 282 // Conjure up a stream.
285 SpdyStreamRequest stream_request; 283 SpdyStreamRequest stream_request;
286 int result = stream_request.StartRequest(SPDY_PUSH_STREAM, spdy_session, 284 int result = stream_request.StartRequest(SPDY_PUSH_STREAM, spdy_session,
287 GURL(), DEFAULT_PRIORITY, 285 GURL(), DEFAULT_PRIORITY,
288 BoundNetLog(), CompletionCallback()); 286 BoundNetLog(), CompletionCallback());
289 ASSERT_THAT(result, IsOk()); 287 ASSERT_THAT(result, IsOk());
290 base::WeakPtr<SpdyStream> stream = stream_request.ReleaseStream(); 288 base::WeakPtr<SpdyStream> stream = stream_request.ReleaseStream();
291 ActivatePushStream(spdy_session.get(), stream.get()); 289 ActivatePushStream(spdy_session.get(), stream.get());
292 290
293 EXPECT_FALSE(stream->HasUrlFromHeaders()); 291 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty());
294 292
295 // Set required request headers. 293 // Set required request headers.
296 SpdyHeaderBlock request_headers; 294 SpdyHeaderBlock request_headers;
297 spdy_util_.AddUrlToHeaderBlock(kStreamUrl, &request_headers); 295 spdy_util_.AddUrlToHeaderBlock(kStreamUrl, &request_headers);
298 stream->OnPushPromiseHeadersReceived(request_headers); 296 stream->OnPushPromiseHeadersReceived(request_headers);
299 297
300 base::Time response_time = base::Time::Now(); 298 base::Time response_time = base::Time::Now();
301 base::TimeTicks first_byte_time = base::TimeTicks::Now(); 299 base::TimeTicks first_byte_time = base::TimeTicks::Now();
302 // Send some basic response headers. 300 // Send some basic response headers.
303 SpdyHeaderBlock response; 301 SpdyHeaderBlock response;
304 response[spdy_util_.GetStatusKey()] = "200"; 302 response[spdy_util_.GetStatusKey()] = "200";
305 stream->OnInitialResponseHeadersReceived(response, response_time, 303 stream->OnInitialResponseHeadersReceived(response, response_time,
306 first_byte_time); 304 first_byte_time);
307 305
308 // And some more headers. 306 // And some more headers.
309 // TODO(baranovich): not valid for HTTP 2. 307 // TODO(baranovich): not valid for HTTP 2.
310 SpdyHeaderBlock headers; 308 SpdyHeaderBlock headers;
311 headers["alpha"] = "beta"; 309 headers["alpha"] = "beta";
312 stream->OnAdditionalResponseHeadersReceived(headers); 310 stream->OnAdditionalResponseHeadersReceived(headers);
313 311
314 EXPECT_TRUE(stream->HasUrlFromHeaders());
315 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); 312 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec());
316 313
317 StreamDelegateDoNothing delegate(stream->GetWeakPtr()); 314 StreamDelegateDoNothing delegate(stream->GetWeakPtr());
318 stream->SetDelegate(&delegate); 315 stream->SetDelegate(&delegate);
319 316
320 LoadTimingInfo load_timing_info; 317 LoadTimingInfo load_timing_info;
321 EXPECT_TRUE(stream->GetLoadTimingInfo(&load_timing_info)); 318 EXPECT_TRUE(stream->GetLoadTimingInfo(&load_timing_info));
322 EXPECT_EQ(first_byte_time, load_timing_info.push_start); 319 EXPECT_EQ(first_byte_time, load_timing_info.push_start);
323 EXPECT_TRUE(load_timing_info.push_end.is_null()); 320 EXPECT_TRUE(load_timing_info.push_end.is_null());
324 321
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
367 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession()); 364 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession());
368 365
369 base::WeakPtr<SpdyStream> stream = 366 base::WeakPtr<SpdyStream> stream =
370 CreateStreamSynchronously( 367 CreateStreamSynchronously(
371 SPDY_BIDIRECTIONAL_STREAM, session, url, LOWEST, log.bound()); 368 SPDY_BIDIRECTIONAL_STREAM, session, url, LOWEST, log.bound());
372 ASSERT_TRUE(stream); 369 ASSERT_TRUE(stream);
373 370
374 StreamDelegateSendImmediate delegate(stream, kPostBodyStringPiece); 371 StreamDelegateSendImmediate delegate(stream, kPostBodyStringPiece);
375 stream->SetDelegate(&delegate); 372 stream->SetDelegate(&delegate);
376 373
377 EXPECT_FALSE(stream->HasUrlFromHeaders()); 374 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty());
378 375
379 SpdyHeaderBlock headers( 376 SpdyHeaderBlock headers(
380 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength)); 377 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength));
381 EXPECT_EQ(ERR_IO_PENDING, 378 EXPECT_EQ(ERR_IO_PENDING,
382 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); 379 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND));
383 EXPECT_TRUE(stream->HasUrlFromHeaders());
384 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); 380 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec());
385 381
386 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); 382 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED));
387 383
388 const SpdyStreamId stream_id = delegate.stream_id(); 384 const SpdyStreamId stream_id = delegate.stream_id();
389 385
390 EXPECT_TRUE(delegate.send_headers_completed()); 386 EXPECT_TRUE(delegate.send_headers_completed());
391 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); 387 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey()));
392 EXPECT_EQ(std::string(kPostBody, kPostBodyLength), 388 EXPECT_EQ(std::string(kPostBody, kPostBodyLength),
393 delegate.TakeReceivedData()); 389 delegate.TakeReceivedData());
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
443 439
444 base::WeakPtr<SpdyStream> stream = 440 base::WeakPtr<SpdyStream> stream =
445 CreateStreamSynchronously( 441 CreateStreamSynchronously(
446 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); 442 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog());
447 ASSERT_TRUE(stream); 443 ASSERT_TRUE(stream);
448 444
449 std::string body_data(3 * kMaxSpdyFrameChunkSize, 'x'); 445 std::string body_data(3 * kMaxSpdyFrameChunkSize, 'x');
450 StreamDelegateWithBody delegate(stream, body_data); 446 StreamDelegateWithBody delegate(stream, body_data);
451 stream->SetDelegate(&delegate); 447 stream->SetDelegate(&delegate);
452 448
453 EXPECT_FALSE(stream->HasUrlFromHeaders()); 449 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty());
454 450
455 SpdyHeaderBlock headers( 451 SpdyHeaderBlock headers(
456 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength)); 452 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength));
457 EXPECT_EQ(ERR_IO_PENDING, 453 EXPECT_EQ(ERR_IO_PENDING,
458 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); 454 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND));
459 EXPECT_TRUE(stream->HasUrlFromHeaders());
460 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); 455 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec());
461 456
462 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); 457 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED));
463 458
464 EXPECT_TRUE(delegate.send_headers_completed()); 459 EXPECT_TRUE(delegate.send_headers_completed());
465 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); 460 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey()));
466 EXPECT_EQ(std::string(), delegate.TakeReceivedData()); 461 EXPECT_EQ(std::string(), delegate.TakeReceivedData());
467 EXPECT_TRUE(data.AllWriteDataConsumed()); 462 EXPECT_TRUE(data.AllWriteDataConsumed());
468 } 463 }
469 464
(...skipping 30 matching lines...) Expand all
500 495
501 base::WeakPtr<SpdyStream> stream = 496 base::WeakPtr<SpdyStream> stream =
502 CreateStreamSynchronously( 497 CreateStreamSynchronously(
503 SPDY_BIDIRECTIONAL_STREAM, session, url, LOWEST, BoundNetLog()); 498 SPDY_BIDIRECTIONAL_STREAM, session, url, LOWEST, BoundNetLog());
504 ASSERT_TRUE(stream); 499 ASSERT_TRUE(stream);
505 500
506 std::string body_data(3 * kMaxSpdyFrameChunkSize, 'x'); 501 std::string body_data(3 * kMaxSpdyFrameChunkSize, 'x');
507 StreamDelegateSendImmediate delegate(stream, body_data); 502 StreamDelegateSendImmediate delegate(stream, body_data);
508 stream->SetDelegate(&delegate); 503 stream->SetDelegate(&delegate);
509 504
510 EXPECT_FALSE(stream->HasUrlFromHeaders()); 505 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty());
511 506
512 SpdyHeaderBlock headers( 507 SpdyHeaderBlock headers(
513 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength)); 508 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength));
514 EXPECT_EQ(ERR_IO_PENDING, 509 EXPECT_EQ(ERR_IO_PENDING,
515 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); 510 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND));
516 EXPECT_TRUE(stream->HasUrlFromHeaders());
517 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); 511 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec());
518 512
519 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); 513 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED));
520 514
521 EXPECT_TRUE(delegate.send_headers_completed()); 515 EXPECT_TRUE(delegate.send_headers_completed());
522 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); 516 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey()));
523 EXPECT_EQ(std::string(), delegate.TakeReceivedData()); 517 EXPECT_EQ(std::string(), delegate.TakeReceivedData());
524 EXPECT_TRUE(data.AllWriteDataConsumed()); 518 EXPECT_TRUE(data.AllWriteDataConsumed());
525 } 519 }
526 520
(...skipping 27 matching lines...) Expand all
554 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession()); 548 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession());
555 549
556 base::WeakPtr<SpdyStream> stream = 550 base::WeakPtr<SpdyStream> stream =
557 CreateStreamSynchronously( 551 CreateStreamSynchronously(
558 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); 552 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog());
559 ASSERT_TRUE(stream); 553 ASSERT_TRUE(stream);
560 554
561 StreamDelegateDoNothing delegate(stream); 555 StreamDelegateDoNothing delegate(stream);
562 stream->SetDelegate(&delegate); 556 stream->SetDelegate(&delegate);
563 557
564 EXPECT_FALSE(stream->HasUrlFromHeaders()); 558 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty());
565 559
566 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kStreamUrl)); 560 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kStreamUrl));
567 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers), 561 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers),
568 NO_MORE_DATA_TO_SEND)); 562 NO_MORE_DATA_TO_SEND));
569 EXPECT_TRUE(stream->HasUrlFromHeaders());
570 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); 563 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec());
571 564
572 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_SPDY_PROTOCOL_ERROR)); 565 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_SPDY_PROTOCOL_ERROR));
573 } 566 }
574 567
575 // Receiving a header with uppercase ASCII should result in a protocol 568 // Receiving a header with uppercase ASCII should result in a protocol
576 // error even for a push stream. 569 // error even for a push stream.
577 TEST_F(SpdyStreamTest, UpperCaseHeadersOnPush) { 570 TEST_F(SpdyStreamTest, UpperCaseHeadersOnPush) {
578 GURL url(kStreamUrl); 571 GURL url(kStreamUrl);
579 572
(...skipping 27 matching lines...) Expand all
607 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession()); 600 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession());
608 601
609 base::WeakPtr<SpdyStream> stream = 602 base::WeakPtr<SpdyStream> stream =
610 CreateStreamSynchronously( 603 CreateStreamSynchronously(
611 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); 604 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog());
612 ASSERT_TRUE(stream); 605 ASSERT_TRUE(stream);
613 606
614 StreamDelegateDoNothing delegate(stream); 607 StreamDelegateDoNothing delegate(stream);
615 stream->SetDelegate(&delegate); 608 stream->SetDelegate(&delegate);
616 609
617 EXPECT_FALSE(stream->HasUrlFromHeaders()); 610 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty());
618 611
619 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kStreamUrl)); 612 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kStreamUrl));
620 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers), 613 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers),
621 NO_MORE_DATA_TO_SEND)); 614 NO_MORE_DATA_TO_SEND));
622 EXPECT_TRUE(stream->HasUrlFromHeaders());
623 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); 615 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec());
624 616
625 data.RunUntilPaused(); 617 data.RunUntilPaused();
626 618
627 base::WeakPtr<SpdyStream> push_stream; 619 base::WeakPtr<SpdyStream> push_stream;
628 EXPECT_THAT(session->GetPushStream(url, &push_stream, BoundNetLog()), IsOk()); 620 EXPECT_THAT(session->GetPushStream(url, &push_stream, BoundNetLog()), IsOk());
629 EXPECT_FALSE(push_stream); 621 EXPECT_FALSE(push_stream);
630 622
631 data.Resume(); 623 data.Resume();
632 624
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
675 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession()); 667 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession());
676 668
677 base::WeakPtr<SpdyStream> stream = 669 base::WeakPtr<SpdyStream> stream =
678 CreateStreamSynchronously( 670 CreateStreamSynchronously(
679 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); 671 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog());
680 ASSERT_TRUE(stream); 672 ASSERT_TRUE(stream);
681 673
682 StreamDelegateDoNothing delegate(stream); 674 StreamDelegateDoNothing delegate(stream);
683 stream->SetDelegate(&delegate); 675 stream->SetDelegate(&delegate);
684 676
685 EXPECT_FALSE(stream->HasUrlFromHeaders()); 677 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty());
686 678
687 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kStreamUrl)); 679 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kStreamUrl));
688 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers), 680 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers),
689 NO_MORE_DATA_TO_SEND)); 681 NO_MORE_DATA_TO_SEND));
690 EXPECT_TRUE(stream->HasUrlFromHeaders());
691 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); 682 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec());
692 683
693 data.RunUntilPaused(); 684 data.RunUntilPaused();
694 685
695 base::WeakPtr<SpdyStream> push_stream; 686 base::WeakPtr<SpdyStream> push_stream;
696 EXPECT_THAT(session->GetPushStream(url, &push_stream, BoundNetLog()), IsOk()); 687 EXPECT_THAT(session->GetPushStream(url, &push_stream, BoundNetLog()), IsOk());
697 EXPECT_TRUE(push_stream); 688 EXPECT_TRUE(push_stream);
698 689
699 data.Resume(); 690 data.Resume();
700 data.RunUntilPaused(); 691 data.RunUntilPaused();
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
749 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession()); 740 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession());
750 741
751 base::WeakPtr<SpdyStream> stream = 742 base::WeakPtr<SpdyStream> stream =
752 CreateStreamSynchronously( 743 CreateStreamSynchronously(
753 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); 744 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog());
754 ASSERT_TRUE(stream); 745 ASSERT_TRUE(stream);
755 746
756 StreamDelegateDoNothing delegate(stream); 747 StreamDelegateDoNothing delegate(stream);
757 stream->SetDelegate(&delegate); 748 stream->SetDelegate(&delegate);
758 749
759 EXPECT_FALSE(stream->HasUrlFromHeaders()); 750 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty());
760 751
761 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kStreamUrl)); 752 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kStreamUrl));
762 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers), 753 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers),
763 NO_MORE_DATA_TO_SEND)); 754 NO_MORE_DATA_TO_SEND));
764 EXPECT_TRUE(stream->HasUrlFromHeaders());
765 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); 755 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec());
766 756
767 data.RunUntilPaused(); 757 data.RunUntilPaused();
768 758
769 base::WeakPtr<SpdyStream> push_stream; 759 base::WeakPtr<SpdyStream> push_stream;
770 EXPECT_THAT(session->GetPushStream(url, &push_stream, BoundNetLog()), IsOk()); 760 EXPECT_THAT(session->GetPushStream(url, &push_stream, BoundNetLog()), IsOk());
771 EXPECT_TRUE(push_stream); 761 EXPECT_TRUE(push_stream);
772 762
773 data.Resume(); 763 data.Resume();
774 data.RunUntilPaused(); 764 data.RunUntilPaused();
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
815 CreateStreamSynchronously( 805 CreateStreamSynchronously(
816 SPDY_BIDIRECTIONAL_STREAM, session, url, LOWEST, log.bound()); 806 SPDY_BIDIRECTIONAL_STREAM, session, url, LOWEST, log.bound());
817 ASSERT_TRUE(stream); 807 ASSERT_TRUE(stream);
818 StreamDelegateSendImmediate delegate(stream, kPostBodyStringPiece); 808 StreamDelegateSendImmediate delegate(stream, kPostBodyStringPiece);
819 stream->SetDelegate(&delegate); 809 stream->SetDelegate(&delegate);
820 810
821 SpdyHeaderBlock headers( 811 SpdyHeaderBlock headers(
822 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength)); 812 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength));
823 EXPECT_EQ(ERR_IO_PENDING, 813 EXPECT_EQ(ERR_IO_PENDING,
824 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); 814 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND));
825 EXPECT_TRUE(stream->HasUrlFromHeaders());
826 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); 815 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec());
827 816
828 data.RunUntilPaused(); 817 data.RunUntilPaused();
829 818
830 int32_t old_send_window_size = stream->send_window_size(); 819 int32_t old_send_window_size = stream->send_window_size();
831 ASSERT_GT(old_send_window_size, 0); 820 ASSERT_GT(old_send_window_size, 0);
832 int32_t delta_window_size = 821 int32_t delta_window_size =
833 std::numeric_limits<int32_t>::max() - old_send_window_size + 1; 822 std::numeric_limits<int32_t>::max() - old_send_window_size + 1;
834 stream->IncreaseSendWindowSize(delta_window_size); 823 stream->IncreaseSendWindowSize(delta_window_size);
835 EXPECT_EQ(NULL, stream.get()); 824 EXPECT_EQ(NULL, stream.get());
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
900 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession()); 889 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession());
901 890
902 base::WeakPtr<SpdyStream> stream = 891 base::WeakPtr<SpdyStream> stream =
903 CreateStreamSynchronously( 892 CreateStreamSynchronously(
904 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); 893 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog());
905 ASSERT_TRUE(stream); 894 ASSERT_TRUE(stream);
906 895
907 StreamDelegateWithBody delegate(stream, kPostBodyStringPiece); 896 StreamDelegateWithBody delegate(stream, kPostBodyStringPiece);
908 stream->SetDelegate(&delegate); 897 stream->SetDelegate(&delegate);
909 898
910 EXPECT_FALSE(stream->HasUrlFromHeaders()); 899 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty());
911 EXPECT_FALSE(stream->send_stalled_by_flow_control()); 900 EXPECT_FALSE(stream->send_stalled_by_flow_control());
912 901
913 SpdyHeaderBlock headers( 902 SpdyHeaderBlock headers(
914 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength)); 903 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength));
915 EXPECT_EQ(ERR_IO_PENDING, 904 EXPECT_EQ(ERR_IO_PENDING,
916 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); 905 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND));
917 EXPECT_TRUE(stream->HasUrlFromHeaders());
918 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); 906 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec());
919 907
920 StallStream(stream); 908 StallStream(stream);
921 909
922 base::RunLoop().RunUntilIdle(); 910 base::RunLoop().RunUntilIdle();
923 911
924 EXPECT_TRUE(stream->send_stalled_by_flow_control()); 912 EXPECT_TRUE(stream->send_stalled_by_flow_control());
925 913
926 unstall_function.Run(stream, kPostBodyLength); 914 unstall_function.Run(stream, kPostBodyLength);
927 915
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
981 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession()); 969 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession());
982 970
983 base::WeakPtr<SpdyStream> stream = 971 base::WeakPtr<SpdyStream> stream =
984 CreateStreamSynchronously( 972 CreateStreamSynchronously(
985 SPDY_BIDIRECTIONAL_STREAM, session, url, LOWEST, BoundNetLog()); 973 SPDY_BIDIRECTIONAL_STREAM, session, url, LOWEST, BoundNetLog());
986 ASSERT_TRUE(stream); 974 ASSERT_TRUE(stream);
987 975
988 StreamDelegateSendImmediate delegate(stream, kPostBodyStringPiece); 976 StreamDelegateSendImmediate delegate(stream, kPostBodyStringPiece);
989 stream->SetDelegate(&delegate); 977 stream->SetDelegate(&delegate);
990 978
991 EXPECT_FALSE(stream->HasUrlFromHeaders()); 979 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty());
992 980
993 SpdyHeaderBlock headers( 981 SpdyHeaderBlock headers(
994 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength)); 982 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength));
995 EXPECT_EQ(ERR_IO_PENDING, 983 EXPECT_EQ(ERR_IO_PENDING,
996 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); 984 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND));
997 EXPECT_TRUE(stream->HasUrlFromHeaders());
998 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); 985 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec());
999 986
1000 data.RunUntilPaused(); 987 data.RunUntilPaused();
1001 988
1002 EXPECT_FALSE(stream->send_stalled_by_flow_control()); 989 EXPECT_FALSE(stream->send_stalled_by_flow_control());
1003 990
1004 StallStream(stream); 991 StallStream(stream);
1005 992
1006 data.Resume(); 993 data.Resume();
1007 base::RunLoop().RunUntilIdle(); 994 base::RunLoop().RunUntilIdle();
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
1064 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession()); 1051 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession());
1065 1052
1066 base::WeakPtr<SpdyStream> stream = 1053 base::WeakPtr<SpdyStream> stream =
1067 CreateStreamSynchronously( 1054 CreateStreamSynchronously(
1068 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); 1055 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog());
1069 ASSERT_TRUE(stream); 1056 ASSERT_TRUE(stream);
1070 1057
1071 StreamDelegateDoNothing delegate(stream); 1058 StreamDelegateDoNothing delegate(stream);
1072 stream->SetDelegate(&delegate); 1059 stream->SetDelegate(&delegate);
1073 1060
1074 EXPECT_FALSE(stream->HasUrlFromHeaders()); 1061 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty());
1075 1062
1076 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kStreamUrl)); 1063 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kStreamUrl));
1077 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers), 1064 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers),
1078 NO_MORE_DATA_TO_SEND)); 1065 NO_MORE_DATA_TO_SEND));
1079 EXPECT_TRUE(stream->HasUrlFromHeaders());
1080 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); 1066 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec());
1081 1067
1082 int64_t reply_frame_len = reply.size(); 1068 int64_t reply_frame_len = reply.size();
1083 int64_t data_header_len = SpdyConstants::GetDataFrameMinimumSize(HTTP2); 1069 int64_t data_header_len = SpdyConstants::GetDataFrameMinimumSize(HTTP2);
1084 int64_t data_frame_len = data_header_len + kPostBodyLength; 1070 int64_t data_frame_len = data_header_len + kPostBodyLength;
1085 int64_t response_len = reply_frame_len + data_frame_len; 1071 int64_t response_len = reply_frame_len + data_frame_len;
1086 1072
1087 EXPECT_EQ(0, stream->raw_received_bytes()); 1073 EXPECT_EQ(0, stream->raw_received_bytes());
1088 1074
1089 // SYN 1075 // SYN
(...skipping 11 matching lines...) Expand all
1101 EXPECT_EQ(response_len, stream->raw_received_bytes()); 1087 EXPECT_EQ(response_len, stream->raw_received_bytes());
1102 1088
1103 // FIN 1089 // FIN
1104 data.Resume(); 1090 data.Resume();
1105 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); 1091 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED));
1106 } 1092 }
1107 1093
1108 } // namespace test 1094 } // namespace test
1109 1095
1110 } // namespace net 1096 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/spdy_stream.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698