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

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

Issue 2596703002: http2: Update priorities of pushed streams (Closed)
Patch Set: Created 4 years 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 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 275 matching lines...) Expand 10 before | Expand all | Expand 10 after
286 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 286 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
287 AddWrite(req); 287 AddWrite(req);
288 288
289 SpdySerializedFrame reply(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); 289 SpdySerializedFrame reply(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
290 AddRead(reply); 290 AddRead(reply);
291 291
292 SpdySerializedFrame push( 292 SpdySerializedFrame push(
293 spdy_util_.ConstructSpdyPush(nullptr, 0, 2, 1, kPushUrl)); 293 spdy_util_.ConstructSpdyPush(nullptr, 0, 2, 1, kPushUrl));
294 AddRead(push); 294 AddRead(push);
295 295
296 SpdySerializedFrame priority(
297 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true));
298 AddWrite(priority);
299
296 AddReadPause(); 300 AddReadPause();
297 301
298 base::StringPiece pushed_msg("foo"); 302 base::StringPiece pushed_msg("foo");
299 SpdySerializedFrame pushed_body(spdy_util_.ConstructSpdyDataFrame( 303 SpdySerializedFrame pushed_body(spdy_util_.ConstructSpdyDataFrame(
300 2, pushed_msg.data(), pushed_msg.size(), true)); 304 2, pushed_msg.data(), pushed_msg.size(), true));
301 AddRead(pushed_body); 305 AddRead(pushed_body);
302 306
303 base::StringPiece msg("bar"); 307 base::StringPiece msg("bar");
304 SpdySerializedFrame body( 308 SpdySerializedFrame body(
305 spdy_util_.ConstructSpdyDataFrame(1, msg.data(), msg.size(), true)); 309 spdy_util_.ConstructSpdyDataFrame(1, msg.data(), msg.size(), true));
(...skipping 26 matching lines...) Expand all
332 336
333 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); 337 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl));
334 EXPECT_THAT( 338 EXPECT_THAT(
335 stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND), 339 stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND),
336 IsError(ERR_IO_PENDING)); 340 IsError(ERR_IO_PENDING));
337 EXPECT_EQ(kDefaultUrl, stream->GetUrlFromHeaders().spec()); 341 EXPECT_EQ(kDefaultUrl, stream->GetUrlFromHeaders().spec());
338 342
339 data.RunUntilPaused(); 343 data.RunUntilPaused();
340 344
341 base::WeakPtr<SpdyStream> push_stream; 345 base::WeakPtr<SpdyStream> push_stream;
342 EXPECT_THAT( 346 EXPECT_THAT(session->GetPushStream(GURL(kPushUrl), IDLE, &push_stream,
343 session->GetPushStream(GURL(kPushUrl), &push_stream, NetLogWithSource()), 347 NetLogWithSource()),
344 IsOk()); 348 IsOk());
345 ASSERT_TRUE(push_stream); 349 ASSERT_TRUE(push_stream);
346 EXPECT_EQ(kPushUrl, push_stream->GetUrlFromHeaders().spec()); 350 EXPECT_EQ(kPushUrl, push_stream->GetUrlFromHeaders().spec());
347 351
348 LoadTimingInfo load_timing_info; 352 LoadTimingInfo load_timing_info;
349 EXPECT_TRUE(push_stream->GetLoadTimingInfo(&load_timing_info)); 353 EXPECT_TRUE(push_stream->GetLoadTimingInfo(&load_timing_info));
350 EXPECT_EQ(g_time_now, load_timing_info.push_start); 354 EXPECT_EQ(g_time_now, load_timing_info.push_start);
351 EXPECT_TRUE(load_timing_info.push_end.is_null()); 355 EXPECT_TRUE(load_timing_info.push_end.is_null());
352 356
353 StreamDelegateDoNothing push_delegate(push_stream); 357 StreamDelegateDoNothing push_delegate(push_stream);
354 push_stream->SetDelegate(&push_delegate); 358 push_stream->SetDelegate(&push_delegate);
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after
602 AddWrite(req); 606 AddWrite(req);
603 607
604 SpdySerializedFrame reply(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); 608 SpdySerializedFrame reply(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
605 AddRead(reply); 609 AddRead(reply);
606 610
607 const char* const kExtraHeaders[] = {"X-UpperCase", "yes"}; 611 const char* const kExtraHeaders[] = {"X-UpperCase", "yes"};
608 SpdySerializedFrame push(spdy_util_.ConstructSpdyPush( 612 SpdySerializedFrame push(spdy_util_.ConstructSpdyPush(
609 kExtraHeaders, arraysize(kExtraHeaders) / 2, 2, 1, kPushUrl)); 613 kExtraHeaders, arraysize(kExtraHeaders) / 2, 2, 1, kPushUrl));
610 AddRead(push); 614 AddRead(push);
611 615
616 SpdySerializedFrame priority(
617 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true));
618 AddWrite(priority);
619
612 SpdySerializedFrame rst( 620 SpdySerializedFrame rst(
613 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_PROTOCOL_ERROR)); 621 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_PROTOCOL_ERROR));
614 AddWrite(rst); 622 AddWrite(rst);
615 623
616 AddReadPause(); 624 AddReadPause();
617 625
618 AddReadEOF(); 626 AddReadEOF();
619 627
620 SequencedSocketData data(GetReads(), GetNumReads(), GetWrites(), 628 SequencedSocketData data(GetReads(), GetNumReads(), GetWrites(),
621 GetNumWrites()); 629 GetNumWrites());
(...skipping 16 matching lines...) Expand all
638 646
639 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); 647 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl));
640 EXPECT_THAT( 648 EXPECT_THAT(
641 stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND), 649 stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND),
642 IsError(ERR_IO_PENDING)); 650 IsError(ERR_IO_PENDING));
643 EXPECT_EQ(kDefaultUrl, stream->GetUrlFromHeaders().spec()); 651 EXPECT_EQ(kDefaultUrl, stream->GetUrlFromHeaders().spec());
644 652
645 data.RunUntilPaused(); 653 data.RunUntilPaused();
646 654
647 base::WeakPtr<SpdyStream> push_stream; 655 base::WeakPtr<SpdyStream> push_stream;
648 EXPECT_THAT( 656 EXPECT_THAT(session->GetPushStream(GURL(kPushUrl), IDLE, &push_stream,
649 session->GetPushStream(GURL(kPushUrl), &push_stream, NetLogWithSource()), 657 NetLogWithSource()),
650 IsOk()); 658 IsOk());
651 EXPECT_FALSE(push_stream); 659 EXPECT_FALSE(push_stream);
652 660
653 data.Resume(); 661 data.Resume();
654 662
655 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); 663 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED));
656 664
657 EXPECT_TRUE(data.AllWriteDataConsumed()); 665 EXPECT_TRUE(data.AllWriteDataConsumed());
658 EXPECT_TRUE(data.AllReadDataConsumed()); 666 EXPECT_TRUE(data.AllReadDataConsumed());
659 } 667 }
660 668
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
714 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 722 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
715 AddWrite(req); 723 AddWrite(req);
716 724
717 SpdySerializedFrame reply(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); 725 SpdySerializedFrame reply(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
718 AddRead(reply); 726 AddRead(reply);
719 727
720 SpdySerializedFrame push_promise(spdy_util_.ConstructInitialSpdyPushFrame( 728 SpdySerializedFrame push_promise(spdy_util_.ConstructInitialSpdyPushFrame(
721 spdy_util_.ConstructGetHeaderBlock(kPushUrl), 2, 1)); 729 spdy_util_.ConstructGetHeaderBlock(kPushUrl), 2, 1));
722 AddRead(push_promise); 730 AddRead(push_promise);
723 731
732 SpdySerializedFrame priority(
733 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true));
734 AddWrite(priority);
735
724 // Response headers without ":status" header field: protocol error. 736 // Response headers without ":status" header field: protocol error.
725 SpdyHeaderBlock header_block_without_status; 737 SpdyHeaderBlock header_block_without_status;
726 header_block_without_status[spdy_util_.GetMethodKey()] = "GET"; 738 header_block_without_status[spdy_util_.GetMethodKey()] = "GET";
727 header_block_without_status[spdy_util_.GetHostKey()] = "www.example.org"; 739 header_block_without_status[spdy_util_.GetHostKey()] = "www.example.org";
728 header_block_without_status[spdy_util_.GetSchemeKey()] = "https"; 740 header_block_without_status[spdy_util_.GetSchemeKey()] = "https";
729 header_block_without_status[spdy_util_.GetPathKey()] = "/"; 741 header_block_without_status[spdy_util_.GetPathKey()] = "/";
730 SpdySerializedFrame pushed_reply( 742 SpdySerializedFrame pushed_reply(
731 spdy_util_.ConstructSpdyReply(2, std::move(header_block_without_status))); 743 spdy_util_.ConstructSpdyReply(2, std::move(header_block_without_status)));
732 AddRead(pushed_reply); 744 AddRead(pushed_reply);
733 745
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
823 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 835 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
824 AddWrite(req); 836 AddWrite(req);
825 837
826 SpdySerializedFrame reply(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); 838 SpdySerializedFrame reply(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
827 AddRead(reply); 839 AddRead(reply);
828 840
829 SpdySerializedFrame push_promise(spdy_util_.ConstructInitialSpdyPushFrame( 841 SpdySerializedFrame push_promise(spdy_util_.ConstructInitialSpdyPushFrame(
830 spdy_util_.ConstructGetHeaderBlock(kPushUrl), 2, 1)); 842 spdy_util_.ConstructGetHeaderBlock(kPushUrl), 2, 1));
831 AddRead(push_promise); 843 AddRead(push_promise);
832 844
845 SpdySerializedFrame priority(
846 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true));
847 AddWrite(priority);
848
833 SpdySerializedFrame pushed_body( 849 SpdySerializedFrame pushed_body(
834 spdy_util_.ConstructSpdyDataFrame(2, kPostBody, kPostBodyLength, true)); 850 spdy_util_.ConstructSpdyDataFrame(2, kPostBody, kPostBodyLength, true));
835 AddRead(pushed_body); 851 AddRead(pushed_body);
836 852
837 SpdySerializedFrame rst( 853 SpdySerializedFrame rst(
838 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_PROTOCOL_ERROR)); 854 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_PROTOCOL_ERROR));
839 AddWrite(rst); 855 AddWrite(rst);
840 856
841 SpdySerializedFrame body( 857 SpdySerializedFrame body(
842 spdy_util_.ConstructSpdyDataFrame(1, kPostBody, kPostBodyLength, true)); 858 spdy_util_.ConstructSpdyDataFrame(1, kPostBody, kPostBodyLength, true));
(...skipping 612 matching lines...) Expand 10 before | Expand all | Expand 10 after
1455 EXPECT_EQ(response_len, stream->raw_received_bytes()); 1471 EXPECT_EQ(response_len, stream->raw_received_bytes());
1456 1472
1457 // FIN 1473 // FIN
1458 data.Resume(); 1474 data.Resume();
1459 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); 1475 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED));
1460 } 1476 }
1461 1477
1462 } // namespace test 1478 } // namespace test
1463 1479
1464 } // namespace net 1480 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698