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

Unified Diff: net/spdy/spdy_network_transaction_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 side-by-side diff with in-line comments
Download patch
Index: net/spdy/spdy_network_transaction_unittest.cc
diff --git a/net/spdy/spdy_network_transaction_unittest.cc b/net/spdy/spdy_network_transaction_unittest.cc
index ac02492a35f0a259a8e2aac44e38a476da51d4f5..329d1c2063ecc2cb14ccfa13e2743bc7d2acec97 100644
--- a/net/spdy/spdy_network_transaction_unittest.cc
+++ b/net/spdy/spdy_network_transaction_unittest.cc
@@ -1894,10 +1894,13 @@ TEST_F(SpdyNetworkTransactionTest, ResetPushWithTransferEncoding) {
// Construct the request.
SpdySerializedFrame req(
spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
+ SpdySerializedFrame priority(
+ spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true));
SpdySerializedFrame rst(
spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_PROTOCOL_ERROR));
MockWrite writes[] = {
- CreateMockWrite(req, 0), CreateMockWrite(rst, 4),
+ CreateMockWrite(req, 0), CreateMockWrite(priority, 3),
+ CreateMockWrite(rst, 5),
};
SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(NULL, 0, 1));
@@ -1909,8 +1912,8 @@ TEST_F(SpdyNetworkTransactionTest, ResetPushWithTransferEncoding) {
GetDefaultUrlWithPath("/1").c_str()));
SpdySerializedFrame body(spdy_util_.ConstructSpdyDataFrame(1, true));
MockRead reads[] = {
- CreateMockRead(resp, 1), CreateMockRead(push, 2), CreateMockRead(body, 3),
- MockRead(ASYNC, 0, 5) // EOF
+ CreateMockRead(resp, 1), CreateMockRead(push, 2), CreateMockRead(body, 4),
+ MockRead(ASYNC, 0, 6) // EOF
};
SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
@@ -2171,8 +2174,10 @@ TEST_F(SpdyNetworkTransactionTest,
SpdySerializedFrame req(
spdy_util_.ConstructSpdyHeaders(1, std::move(headers), LOWEST, true));
+ SpdySerializedFrame priority(
+ spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true));
MockWrite writes[] = {
- CreateMockWrite(req, 0),
+ CreateMockWrite(req, 0), CreateMockWrite(priority, 2),
};
SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
@@ -2193,7 +2198,7 @@ TEST_F(SpdyNetworkTransactionTest,
2, "should not include either", 25, false));
MockRead push_init_read(CreateMockRead(push_init_frame, 1));
- MockRead response_headers(CreateMockRead(resp, 4));
+ MockRead response_headers(CreateMockRead(resp, 5));
// raw_header_size() will contain the size of the push promise frame
// initialization.
int expected_response_headers_size =
@@ -2201,11 +2206,11 @@ TEST_F(SpdyNetworkTransactionTest,
MockRead reads[] = {
push_init_read,
- CreateMockRead(push_headers_frame, 2),
- CreateMockRead(push_body_frame, 3),
+ CreateMockRead(push_headers_frame, 3),
+ CreateMockRead(push_body_frame, 4),
response_headers,
- CreateMockRead(response_body_frame, 5),
- MockRead(ASYNC, 0, 6) // EOF
+ CreateMockRead(response_body_frame, 6),
+ MockRead(ASYNC, 0, 7) // EOF
};
SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
@@ -2395,24 +2400,24 @@ TEST_F(SpdyNetworkTransactionTest, DISABLED_RedirectServerPush) {
TEST_F(SpdyNetworkTransactionTest, ServerPushSingleDataFrame) {
SpdySerializedFrame stream1_syn(
spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
- SpdySerializedFrame stream1_body(spdy_util_.ConstructSpdyDataFrame(1, true));
+ SpdySerializedFrame stream2_priority(
+ spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true));
MockWrite writes[] = {
- CreateMockWrite(stream1_syn, 0),
+ CreateMockWrite(stream1_syn, 0), CreateMockWrite(stream2_priority, 3),
};
SpdySerializedFrame stream1_reply(
spdy_util_.ConstructSpdyGetReply(NULL, 0, 1));
SpdySerializedFrame stream2_syn(spdy_util_.ConstructSpdyPush(
NULL, 0, 2, 1, GetDefaultUrlWithPath("/foo.dat").c_str()));
+ SpdySerializedFrame stream1_body(spdy_util_.ConstructSpdyDataFrame(1, true));
const char kPushedData[] = "pushed";
SpdySerializedFrame stream2_body(spdy_util_.ConstructSpdyDataFrame(
2, kPushedData, strlen(kPushedData), true));
MockRead reads[] = {
- CreateMockRead(stream1_reply, 1),
- CreateMockRead(stream2_syn, 2),
- CreateMockRead(stream1_body, 3, SYNCHRONOUS),
- CreateMockRead(stream2_body, 4),
- MockRead(SYNCHRONOUS, ERR_IO_PENDING, 5), // Force a pause
+ CreateMockRead(stream1_reply, 1), CreateMockRead(stream2_syn, 2),
+ CreateMockRead(stream1_body, 4), CreateMockRead(stream2_body, 5),
+ MockRead(SYNCHRONOUS, ERR_IO_PENDING, 6), // Force a pause
};
HttpResponseInfo response;
@@ -2436,8 +2441,10 @@ TEST_F(SpdyNetworkTransactionTest, ServerPushSingleDataFrame) {
TEST_F(SpdyNetworkTransactionTest, ServerPushBeforeHeaders) {
SpdySerializedFrame stream1_syn(
spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
+ SpdySerializedFrame stream2_priority(
+ spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true));
MockWrite writes[] = {
- CreateMockWrite(stream1_syn, 0),
+ CreateMockWrite(stream1_syn, 0), CreateMockWrite(stream2_priority, 2),
};
SpdySerializedFrame stream2_syn(spdy_util_.ConstructSpdyPush(
@@ -2450,10 +2457,10 @@ TEST_F(SpdyNetworkTransactionTest, ServerPushBeforeHeaders) {
2, kPushedData, strlen(kPushedData), true));
MockRead reads[] = {
CreateMockRead(stream2_syn, 1),
- CreateMockRead(stream1_reply, 2),
- CreateMockRead(stream1_body, 3, SYNCHRONOUS),
- CreateMockRead(stream2_body, 4),
- MockRead(SYNCHRONOUS, ERR_IO_PENDING, 5), // Force a pause
+ CreateMockRead(stream1_reply, 3),
+ CreateMockRead(stream1_body, 4, SYNCHRONOUS),
+ CreateMockRead(stream2_body, 5),
+ MockRead(SYNCHRONOUS, ERR_IO_PENDING, 6), // Force a pause
};
HttpResponseInfo response;
@@ -2477,8 +2484,10 @@ TEST_F(SpdyNetworkTransactionTest, ServerPushBeforeHeaders) {
TEST_F(SpdyNetworkTransactionTest, ServerPushSingleDataFrame2) {
SpdySerializedFrame stream1_syn(
spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
+ SpdySerializedFrame stream2_priority(
+ spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true));
MockWrite writes[] = {
- CreateMockWrite(stream1_syn, 0),
+ CreateMockWrite(stream1_syn, 0), CreateMockWrite(stream2_priority, 3),
};
SpdySerializedFrame stream1_reply(
@@ -2492,9 +2501,9 @@ TEST_F(SpdyNetworkTransactionTest, ServerPushSingleDataFrame2) {
MockRead reads[] = {
CreateMockRead(stream1_reply, 1),
CreateMockRead(stream2_syn, 2),
- CreateMockRead(stream2_body, 3),
- CreateMockRead(stream1_body, 4, SYNCHRONOUS),
- MockRead(SYNCHRONOUS, ERR_IO_PENDING, 5), // Force a pause
+ CreateMockRead(stream2_body, 4),
+ CreateMockRead(stream1_body, 5, SYNCHRONOUS),
+ MockRead(SYNCHRONOUS, ERR_IO_PENDING, 6), // Force a pause
};
HttpResponseInfo response;
@@ -2515,16 +2524,122 @@ TEST_F(SpdyNetworkTransactionTest, ServerPushSingleDataFrame2) {
EXPECT_EQ("HTTP/1.1 200", response2.headers->GetStatusLine());
}
+TEST_F(SpdyNetworkTransactionTest, ServerPushUpdatesPriority) {
+ SpdySerializedFrame stream1_syn(
Bence 2017/01/05 17:14:45 Maybe use |req| instead of |syn|. SYN was a SPDY
Tom Bergan 2017/01/06 00:08:41 Switched to |headers|.
+ spdy_util_.ConstructSpdyGet(nullptr, 0, 1, HIGHEST, true));
+ SpdySerializedFrame stream3_syn(
+ spdy_util_.ConstructSpdyGet(nullptr, 0, 3, MEDIUM, true));
+ SpdySerializedFrame stream5_syn(
+ spdy_util_.ConstructSpdyGet(nullptr, 0, 5, MEDIUM, true));
+
+ // Stream 1 pushes two streams that are initially prioritized below stream 5.
+ // Stream 2 is later prioritized below stream 1 after it matches a request.
+ SpdySerializedFrame stream2_priority(
+ spdy_util_.ConstructSpdyPriority(2, 5, IDLE, true));
+ SpdySerializedFrame stream4_priority(
+ spdy_util_.ConstructSpdyPriority(4, 2, IDLE, true));
+ SpdySerializedFrame stream4_priority_update(
+ spdy_util_.ConstructSpdyPriority(4, 5, IDLE, true));
+ SpdySerializedFrame stream2_priority_update(
+ spdy_util_.ConstructSpdyPriority(2, 1, HIGHEST, true));
+
+ MockWrite writes[] = {
+ CreateMockWrite(stream1_syn, 0),
+ CreateMockWrite(stream3_syn, 1),
+ CreateMockWrite(stream5_syn, 2),
+ CreateMockWrite(stream2_priority, 7),
+ CreateMockWrite(stream4_priority, 9),
+ CreateMockWrite(stream4_priority_update, 11),
+ CreateMockWrite(stream2_priority_update, 12),
+ };
+
+ SpdySerializedFrame stream1_reply(
+ spdy_util_.ConstructSpdyGetReply(NULL, 0, 1));
Bence 2017/01/05 17:14:46 Please use nullptr instead of NULL in new code, se
Tom Bergan 2017/01/06 00:08:41 I did s/NULL/nullptr/ in this file.
+ SpdySerializedFrame stream3_reply(
+ spdy_util_.ConstructSpdyGetReply(NULL, 0, 3));
+ SpdySerializedFrame stream5_reply(
+ spdy_util_.ConstructSpdyGetReply(NULL, 0, 5));
+ SpdySerializedFrame stream1_body(spdy_util_.ConstructSpdyDataFrame(1, true));
Bence 2017/01/05 17:14:46 Please instantiate mock read data in the order tha
Tom Bergan 2017/01/06 00:08:41 Done.
+ SpdySerializedFrame stream2_body(spdy_util_.ConstructSpdyDataFrame(2, true));
+ SpdySerializedFrame stream3_body(spdy_util_.ConstructSpdyDataFrame(3, true));
+ SpdySerializedFrame stream5_body(spdy_util_.ConstructSpdyDataFrame(5, true));
+
+ SpdySerializedFrame stream2_syn(spdy_util_.ConstructSpdyPush(
Bence 2017/01/05 17:14:45 Maybe use |push| instead of |syn|.
Tom Bergan 2017/01/06 00:08:41 Done.
+ NULL, 0, 2, 1, GetDefaultUrlWithPath("/foo.dat").c_str()));
+ SpdySerializedFrame stream4_syn(spdy_util_.ConstructSpdyPush(
+ NULL, 0, 4, 1, GetDefaultUrlWithPath("/bar.dat").c_str()));
+
+ MockRead reads[] = {
+ CreateMockRead(stream1_reply, 3),
+ CreateMockRead(stream3_reply, 4),
+ CreateMockRead(stream5_reply, 5),
+ CreateMockRead(stream2_syn, 6),
+ CreateMockRead(stream4_syn, 8),
+ MockRead(ASYNC, ERR_IO_PENDING, 10),
+ CreateMockRead(stream1_body, 13),
+ CreateMockRead(stream2_body, 14),
+ CreateMockRead(stream3_body, 15),
+ CreateMockRead(stream5_body, 16),
+ MockRead(SYNCHRONOUS, ERR_IO_PENDING, 17), // Force a pause
+ };
+
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
+ SequencedSocketData data_placeholder1(NULL, 0, NULL, 0);
+ SequencedSocketData data_placeholder2(NULL, 0, NULL, 0);
+ SequencedSocketData data_placeholder3(NULL, 0, NULL, 0);
+
+ NormalSpdyTransactionHelper helper(CreateGetRequest(), LOWEST,
+ NetLogWithSource(), NULL);
+ helper.RunPreTestSetup();
+ helper.AddData(&data);
+ helper.AddData(&data_placeholder1); // other requests reuse the same socket
+ helper.AddData(&data_placeholder2);
+ helper.AddData(&data_placeholder3);
+ HttpNetworkTransaction trans1(HIGHEST, helper.session());
+ HttpNetworkTransaction trans2(HIGHEST, helper.session());
Bence 2017/01/05 17:14:46 Instantiate |trans2| further down, after "// Start
Tom Bergan 2017/01/06 00:08:41 Done.
+ HttpNetworkTransaction trans3(MEDIUM, helper.session());
+ HttpNetworkTransaction trans5(MEDIUM, helper.session());
+
+ TestCompletionCallback callback1;
+ TestCompletionCallback callback2;
Bence 2017/01/05 17:14:45 Instantiate |callback2| further down, after "// St
Tom Bergan 2017/01/06 00:08:41 Done.
+ TestCompletionCallback callback3;
+ TestCompletionCallback callback5;
+
+ // Start the ordinary requests.
+ NetLogWithSource log;
+ ASSERT_THAT(trans1.Start(&CreateGetRequest(), callback1.callback(), log),
+ IsError(ERR_IO_PENDING));
+ ASSERT_THAT(trans3.Start(&CreateGetRequest(), callback3.callback(), log),
+ IsError(ERR_IO_PENDING));
+ ASSERT_THAT(trans5.Start(&CreateGetRequest(), callback5.callback(), log),
+ IsError(ERR_IO_PENDING));
+ data.RunUntilPaused();
+
+ // Start a request that matches the push.
+ HttpRequestInfo push_req = CreateGetRequest();
Bence 2017/01/05 17:14:46 Would CreatePushRequest() work here?
Tom Bergan 2017/01/06 00:08:41 I don't think that method exists? Also, this is cr
+ push_req.url = GURL(GetDefaultUrlWithPath("/foo.dat"));
+ ASSERT_THAT(trans2.Start(&push_req, callback2.callback(), log),
+ IsError(ERR_IO_PENDING));
+ data.Resume();
+
+ ASSERT_THAT(callback1.WaitForResult(), IsOk());
+ ASSERT_THAT(callback2.WaitForResult(), IsOk());
+ ASSERT_THAT(callback3.WaitForResult(), IsOk());
+ ASSERT_THAT(callback5.WaitForResult(), IsOk());
+}
Bence 2017/01/05 17:14:46 Please call helper.VerifyDataConsumed() at the end
Tom Bergan 2017/01/06 00:08:41 Done. Thanks for reading this closely. I admit I d
+
TEST_F(SpdyNetworkTransactionTest, ServerPushServerAborted) {
SpdySerializedFrame stream1_syn(
spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
- SpdySerializedFrame stream1_body(spdy_util_.ConstructSpdyDataFrame(1, true));
+ SpdySerializedFrame stream2_priority(
+ spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true));
MockWrite writes[] = {
- CreateMockWrite(stream1_syn, 0),
+ CreateMockWrite(stream1_syn, 0), CreateMockWrite(stream2_priority, 3),
};
SpdySerializedFrame stream1_reply(
spdy_util_.ConstructSpdyGetReply(NULL, 0, 1));
+ SpdySerializedFrame stream1_body(spdy_util_.ConstructSpdyDataFrame(1, true));
Bence 2017/01/05 17:14:46 Please instantiate read frames in the order they a
Tom Bergan 2017/01/06 00:08:41 Done.
SpdySerializedFrame stream2_syn(spdy_util_.ConstructSpdyPush(
NULL, 0, 2, 1, GetDefaultUrlWithPath("/foo.dat").c_str()));
SpdySerializedFrame stream2_rst(
@@ -2532,9 +2647,9 @@ TEST_F(SpdyNetworkTransactionTest, ServerPushServerAborted) {
MockRead reads[] = {
CreateMockRead(stream1_reply, 1),
CreateMockRead(stream2_syn, 2),
- CreateMockRead(stream2_rst, 3),
- CreateMockRead(stream1_body, 4, SYNCHRONOUS),
- MockRead(SYNCHRONOUS, ERR_IO_PENDING, 5), // Force a pause
+ CreateMockRead(stream2_rst, 4),
+ CreateMockRead(stream1_body, 5, SYNCHRONOUS),
+ MockRead(SYNCHRONOUS, ERR_IO_PENDING, 6), // Force a pause
};
SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
@@ -2569,15 +2684,18 @@ TEST_F(SpdyNetworkTransactionTest, ServerPushServerAborted) {
TEST_F(SpdyNetworkTransactionTest, ServerPushDuplicate) {
SpdySerializedFrame stream1_syn(
spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
- SpdySerializedFrame stream1_body(spdy_util_.ConstructSpdyDataFrame(1, true));
+ SpdySerializedFrame stream2_priority(
+ spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true));
SpdySerializedFrame stream3_rst(
spdy_util_.ConstructSpdyRstStream(4, RST_STREAM_PROTOCOL_ERROR));
MockWrite writes[] = {
- CreateMockWrite(stream1_syn, 0), CreateMockWrite(stream3_rst, 4),
+ CreateMockWrite(stream1_syn, 0), CreateMockWrite(stream2_priority, 3),
+ CreateMockWrite(stream3_rst, 5),
};
SpdySerializedFrame stream1_reply(
spdy_util_.ConstructSpdyGetReply(NULL, 0, 1));
+ SpdySerializedFrame stream1_body(spdy_util_.ConstructSpdyDataFrame(1, true));
SpdySerializedFrame stream2_syn(spdy_util_.ConstructSpdyPush(
NULL, 0, 2, 1, GetDefaultUrlWithPath("/foo.dat").c_str()));
const char kPushedData[] = "pushed";
@@ -2588,10 +2706,10 @@ TEST_F(SpdyNetworkTransactionTest, ServerPushDuplicate) {
MockRead reads[] = {
CreateMockRead(stream1_reply, 1),
CreateMockRead(stream2_syn, 2),
- CreateMockRead(stream3_syn, 3),
- CreateMockRead(stream1_body, 5),
- CreateMockRead(stream2_body, 6),
- MockRead(SYNCHRONOUS, ERR_IO_PENDING, 7), // Force a pause
+ CreateMockRead(stream3_syn, 4),
+ CreateMockRead(stream1_body, 6),
+ CreateMockRead(stream2_body, 7),
+ MockRead(SYNCHRONOUS, ERR_IO_PENDING, 8), // Force a pause
};
HttpResponseInfo response;
@@ -2615,13 +2733,15 @@ TEST_F(SpdyNetworkTransactionTest, ServerPushDuplicate) {
TEST_F(SpdyNetworkTransactionTest, ServerPushMultipleDataFrame) {
SpdySerializedFrame stream1_syn(
spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
- SpdySerializedFrame stream1_body(spdy_util_.ConstructSpdyDataFrame(1, true));
+ SpdySerializedFrame stream2_priority(
+ spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true));
MockWrite writes[] = {
- CreateMockWrite(stream1_syn, 0),
+ CreateMockWrite(stream1_syn, 0), CreateMockWrite(stream2_priority, 3),
};
SpdySerializedFrame stream1_reply(
spdy_util_.ConstructSpdyGetReply(NULL, 0, 1));
+ SpdySerializedFrame stream1_body(spdy_util_.ConstructSpdyDataFrame(1, true));
SpdySerializedFrame stream2_syn(spdy_util_.ConstructSpdyPush(
NULL, 0, 2, 1, GetDefaultUrlWithPath("/foo.dat").c_str()));
static const char kPushedData[] = "pushed my darling hello my baby";
@@ -2640,12 +2760,12 @@ TEST_F(SpdyNetworkTransactionTest, ServerPushMultipleDataFrame) {
MockRead reads[] = {
CreateMockRead(stream1_reply, 1),
CreateMockRead(stream2_syn, 2),
- CreateMockRead(stream2_body1, 3),
- CreateMockRead(stream2_body2, 4),
- CreateMockRead(stream2_body3, 5),
- CreateMockRead(stream2_body4, 6),
- CreateMockRead(stream1_body, 7, SYNCHRONOUS),
- MockRead(SYNCHRONOUS, ERR_IO_PENDING, 8), // Force a pause
+ CreateMockRead(stream2_body1, 4),
+ CreateMockRead(stream2_body2, 5),
+ CreateMockRead(stream2_body3, 6),
+ CreateMockRead(stream2_body4, 7),
+ CreateMockRead(stream1_body, 8, SYNCHRONOUS),
+ MockRead(SYNCHRONOUS, ERR_IO_PENDING, 9), // Force a pause
};
HttpResponseInfo response;
@@ -2666,13 +2786,15 @@ TEST_F(SpdyNetworkTransactionTest, ServerPushMultipleDataFrame) {
TEST_F(SpdyNetworkTransactionTest, ServerPushMultipleDataFrameInterrupted) {
SpdySerializedFrame stream1_syn(
spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
- SpdySerializedFrame stream1_body(spdy_util_.ConstructSpdyDataFrame(1, true));
+ SpdySerializedFrame stream2_priority(
+ spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true));
MockWrite writes[] = {
- CreateMockWrite(stream1_syn, 0),
+ CreateMockWrite(stream1_syn, 0), CreateMockWrite(stream2_priority, 3),
};
SpdySerializedFrame stream1_reply(
spdy_util_.ConstructSpdyGetReply(NULL, 0, 1));
+ SpdySerializedFrame stream1_body(spdy_util_.ConstructSpdyDataFrame(1, true));
SpdySerializedFrame stream2_syn(spdy_util_.ConstructSpdyPush(
NULL, 0, 2, 1, GetDefaultUrlWithPath("/foo.dat").c_str()));
static const char kPushedData[] = "pushed my darling hello my baby";
@@ -2691,12 +2813,12 @@ TEST_F(SpdyNetworkTransactionTest, ServerPushMultipleDataFrameInterrupted) {
MockRead reads[] = {
CreateMockRead(stream1_reply, 1),
CreateMockRead(stream2_syn, 2),
- CreateMockRead(stream2_body1, 3),
- CreateMockRead(stream2_body2, 4),
- CreateMockRead(stream2_body3, 5),
- CreateMockRead(stream2_body4, 6),
- CreateMockRead(stream1_body, 7, SYNCHRONOUS),
- MockRead(SYNCHRONOUS, ERR_IO_PENDING, 8) // Force a pause.
+ CreateMockRead(stream2_body1, 4),
+ CreateMockRead(stream2_body2, 5),
+ CreateMockRead(stream2_body3, 6),
+ CreateMockRead(stream2_body4, 7),
+ CreateMockRead(stream1_body, 8, SYNCHRONOUS),
+ MockRead(SYNCHRONOUS, ERR_IO_PENDING, 9) // Force a pause.
};
HttpResponseInfo response;
@@ -2858,10 +2980,13 @@ TEST_F(SpdyNetworkTransactionTest, ServerPushNoURL) {
TEST_F(SpdyNetworkTransactionTest, ServerPushOnPushedStream) {
SpdySerializedFrame stream1_syn(
spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
+ SpdySerializedFrame stream2_priority(
+ spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true));
SpdySerializedFrame goaway(spdy_util_.ConstructSpdyGoAway(
2, GOAWAY_PROTOCOL_ERROR, "Push on even stream id."));
MockWrite writes[] = {
- CreateMockWrite(stream1_syn, 0), CreateMockWrite(goaway, 4),
+ CreateMockWrite(stream1_syn, 0), CreateMockWrite(stream2_priority, 3),
+ CreateMockWrite(goaway, 5),
};
SpdySerializedFrame stream1_reply(
@@ -2872,7 +2997,7 @@ TEST_F(SpdyNetworkTransactionTest, ServerPushOnPushedStream) {
nullptr, 0, 4, 2, GetDefaultUrlWithPath("/bar.dat").c_str()));
MockRead reads[] = {
CreateMockRead(stream1_reply, 1), CreateMockRead(stream2_syn, 2),
- CreateMockRead(stream3_syn, 3),
+ CreateMockRead(stream3_syn, 4),
};
SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
@@ -2928,10 +3053,13 @@ TEST_F(SpdyNetworkTransactionTest, ServerPushOnClosedStream) {
TEST_F(SpdyNetworkTransactionTest, ServerPushOnClosedPushedStream) {
SpdySerializedFrame stream1_syn(
spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
+ SpdySerializedFrame stream2_priority(
+ spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true));
SpdySerializedFrame goaway(spdy_util_.ConstructSpdyGoAway(
2, GOAWAY_PROTOCOL_ERROR, "Push on even stream id."));
MockWrite writes[] = {
- CreateMockWrite(stream1_syn, 0), CreateMockWrite(goaway, 7),
+ CreateMockWrite(stream1_syn, 0), CreateMockWrite(stream2_priority, 3),
+ CreateMockWrite(goaway, 8),
};
SpdySerializedFrame stream1_reply(
@@ -2947,8 +3075,8 @@ TEST_F(SpdyNetworkTransactionTest, ServerPushOnClosedPushedStream) {
MockRead reads[] = {
CreateMockRead(stream1_reply, 1), CreateMockRead(stream2_syn, 2),
- CreateMockRead(stream1_body, 3), CreateMockRead(stream2_body, 4),
- MockRead(ASYNC, ERR_IO_PENDING, 5), CreateMockRead(stream3_syn, 6),
+ CreateMockRead(stream1_body, 4), CreateMockRead(stream2_body, 5),
+ MockRead(ASYNC, ERR_IO_PENDING, 6), CreateMockRead(stream3_syn, 7),
};
SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
@@ -4424,8 +4552,10 @@ TEST_F(SpdyNetworkTransactionTest, SpdyBasicAuth) {
TEST_F(SpdyNetworkTransactionTest, ServerPushWithHeaders) {
SpdySerializedFrame stream1_syn(
spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
+ SpdySerializedFrame stream2_priority(
+ spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true));
MockWrite writes[] = {
- CreateMockWrite(stream1_syn, 0),
+ CreateMockWrite(stream1_syn, 0), CreateMockWrite(stream2_priority, 3),
};
SpdySerializedFrame stream1_reply(
@@ -4452,10 +4582,10 @@ TEST_F(SpdyNetworkTransactionTest, ServerPushWithHeaders) {
MockRead reads[] = {
CreateMockRead(stream1_reply, 1),
CreateMockRead(stream2_syn, 2),
- CreateMockRead(stream2_headers, 3),
- CreateMockRead(stream1_body, 4, SYNCHRONOUS),
- CreateMockRead(stream2_body, 5),
- MockRead(SYNCHRONOUS, ERR_IO_PENDING, 6), // Force a pause
+ CreateMockRead(stream2_headers, 4),
+ CreateMockRead(stream1_body, 5, SYNCHRONOUS),
+ CreateMockRead(stream2_body, 6),
+ MockRead(SYNCHRONOUS, ERR_IO_PENDING, 7), // Force a pause
};
HttpResponseInfo response;
@@ -4480,8 +4610,11 @@ TEST_F(SpdyNetworkTransactionTest, ServerPushClaimBeforeHeaders) {
// We push a stream and attempt to claim it before the headers come down.
SpdySerializedFrame stream1_syn(
spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
+ SpdySerializedFrame stream2_priority(
+ spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true));
MockWrite writes[] = {
CreateMockWrite(stream1_syn, 0, SYNCHRONOUS),
+ CreateMockWrite(stream2_priority, 3),
};
SpdySerializedFrame stream1_reply(
@@ -4502,9 +4635,9 @@ TEST_F(SpdyNetworkTransactionTest, ServerPushClaimBeforeHeaders) {
2, kPushedData, strlen(kPushedData), true));
MockRead reads[] = {
CreateMockRead(stream1_reply, 1), CreateMockRead(stream2_syn, 2),
- CreateMockRead(stream1_body, 3), MockRead(ASYNC, ERR_IO_PENDING, 4),
- CreateMockRead(stream2_headers, 5), CreateMockRead(stream2_body, 6),
- MockRead(ASYNC, ERR_IO_PENDING, 7), MockRead(ASYNC, 0, 8), // EOF
+ CreateMockRead(stream1_body, 4), MockRead(ASYNC, ERR_IO_PENDING, 5),
+ CreateMockRead(stream2_headers, 6), CreateMockRead(stream2_body, 7),
+ MockRead(ASYNC, ERR_IO_PENDING, 8), MockRead(ASYNC, 0, 9), // EOF
};
HttpResponseInfo response;
@@ -4757,8 +4890,10 @@ TEST_F(SpdyNetworkTransactionTest, ServerPushValidCrossOrigin) {
SpdySerializedFrame headers(
spdy_util_.ConstructSpdyGet(url_to_fetch, 1, LOWEST));
+ SpdySerializedFrame push_priority(
+ spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true));
MockWrite writes[] = {
- CreateMockWrite(headers, 0),
+ CreateMockWrite(headers, 0), CreateMockWrite(push_priority, 3),
};
SpdySerializedFrame reply(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
@@ -4771,9 +4906,9 @@ TEST_F(SpdyNetworkTransactionTest, ServerPushValidCrossOrigin) {
MockRead reads[] = {
CreateMockRead(reply, 1),
CreateMockRead(push, 2),
- CreateMockRead(body, 3),
- CreateMockRead(pushed_body, 4),
- MockRead(SYNCHRONOUS, ERR_IO_PENDING, 5),
+ CreateMockRead(body, 4),
+ CreateMockRead(pushed_body, 5),
+ MockRead(SYNCHRONOUS, ERR_IO_PENDING, 6),
};
SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
@@ -4867,8 +5002,10 @@ TEST_F(SpdyNetworkTransactionTest, ServerPushValidCrossOriginWithOpenSession) {
SpdySerializedFrame headers1(
spdy_util_1.ConstructSpdyGet(url_to_fetch1, 1, LOWEST));
+ SpdySerializedFrame push_priority(
+ spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true));
MockWrite writes1[] = {
- CreateMockWrite(headers1, 0),
+ CreateMockWrite(headers1, 0), CreateMockWrite(push_priority, 3),
};
SpdySerializedFrame reply1(spdy_util_1.ConstructSpdyGetReply(nullptr, 0, 1));
@@ -4884,9 +5021,9 @@ TEST_F(SpdyNetworkTransactionTest, ServerPushValidCrossOriginWithOpenSession) {
MockRead reads1[] = {
CreateMockRead(reply1, 1),
CreateMockRead(push, 2),
- CreateMockRead(body1, 3),
- CreateMockRead(pushed_body, 4),
- MockRead(SYNCHRONOUS, ERR_IO_PENDING, 5),
+ CreateMockRead(body1, 4),
+ CreateMockRead(pushed_body, 5),
+ MockRead(SYNCHRONOUS, ERR_IO_PENDING, 6),
};
SequencedSocketData data1(reads1, arraysize(reads1), writes1,
@@ -6001,16 +6138,19 @@ TEST_F(SpdyNetworkTransactionTest,
SpdySerializedFrame push_b(spdy_util_.ConstructInitialSpdyPushFrame(
std::move(push_b_headers), 2, 1));
MockRead reads[] = {
- CreateMockRead(push_a, 1), CreateMockRead(push_b, 2),
+ CreateMockRead(push_a, 1), CreateMockRead(push_b, 3),
};
SpdySerializedFrame req(
spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
+ SpdySerializedFrame priority_a(
+ spdy_util_.ConstructSpdyPriority(4, 1, IDLE, true));
SpdySerializedFrame goaway(spdy_util_.ConstructSpdyGoAway(
4, GOAWAY_PROTOCOL_ERROR,
"New push stream id must be greater than the last accepted."));
MockWrite writes[] = {
- CreateMockWrite(req, 0), CreateMockWrite(goaway, 3),
+ CreateMockWrite(req, 0), CreateMockWrite(priority_a, 2),
+ CreateMockWrite(goaway, 4),
};
SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));

Powered by Google App Engine
This is Rietveld 408576698