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)); |