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

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

Issue 2555183002: Do not reset stream if HTTP/2 response contains status text. (Closed)
Patch Set: Re: #7. 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
« no previous file with comments | « net/spdy/spdy_stream.cc ('k') | tools/metrics/histograms/histograms.xml » ('j') | 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 1030 matching lines...) Expand 10 before | Expand all | Expand 10 after
1041 1041
1042 EXPECT_THAT(delegate.WaitForClose(), IsOk()); 1042 EXPECT_THAT(delegate.WaitForClose(), IsOk());
1043 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); 1043 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey()));
1044 EXPECT_EQ(std::string(kPostBody, kPostBodyLength), 1044 EXPECT_EQ(std::string(kPostBody, kPostBodyLength),
1045 delegate.TakeReceivedData()); 1045 delegate.TakeReceivedData());
1046 1046
1047 EXPECT_TRUE(data.AllWriteDataConsumed()); 1047 EXPECT_TRUE(data.AllWriteDataConsumed());
1048 EXPECT_TRUE(data.AllReadDataConsumed()); 1048 EXPECT_TRUE(data.AllReadDataConsumed());
1049 } 1049 }
1050 1050
1051 TEST_F(SpdyStreamTest, StatusMustBeNumber) { 1051 TEST_F(SpdyStreamTest, StatusMustStartWithNumber) {
1052 SpdySerializedFrame req( 1052 SpdySerializedFrame req(
1053 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 1053 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
1054 AddWrite(req); 1054 AddWrite(req);
1055 1055
1056 SpdyHeaderBlock incorrect_headers; 1056 SpdyHeaderBlock incorrect_headers;
1057 incorrect_headers[":status"] = "nan"; 1057 incorrect_headers[":status"] = "nan";
1058 SpdySerializedFrame reply(spdy_util_.ConstructSpdyResponseHeaders( 1058 SpdySerializedFrame reply(spdy_util_.ConstructSpdyResponseHeaders(
1059 1, std::move(incorrect_headers), false)); 1059 1, std::move(incorrect_headers), false));
1060 AddRead(reply); 1060 AddRead(reply);
1061 1061
(...skipping 26 matching lines...) Expand all
1088 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers), 1088 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers),
1089 NO_MORE_DATA_TO_SEND)); 1089 NO_MORE_DATA_TO_SEND));
1090 EXPECT_EQ(kDefaultUrl, stream->GetUrlFromHeaders().spec()); 1090 EXPECT_EQ(kDefaultUrl, stream->GetUrlFromHeaders().spec());
1091 1091
1092 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_SPDY_PROTOCOL_ERROR)); 1092 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_SPDY_PROTOCOL_ERROR));
1093 1093
1094 EXPECT_TRUE(data.AllWriteDataConsumed()); 1094 EXPECT_TRUE(data.AllWriteDataConsumed());
1095 EXPECT_TRUE(data.AllReadDataConsumed()); 1095 EXPECT_TRUE(data.AllReadDataConsumed());
1096 } 1096 }
1097 1097
1098 TEST_F(SpdyStreamTest, StatusCanHaveExtraText) {
1099 SpdySerializedFrame req(
1100 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
1101 AddWrite(req);
1102
1103 SpdyHeaderBlock headers_with_status_text;
1104 headers_with_status_text[":status"] =
1105 "200 Some random extra text describing status";
1106 SpdySerializedFrame reply(spdy_util_.ConstructSpdyResponseHeaders(
1107 1, std::move(headers_with_status_text), false));
1108 AddRead(reply);
1109
1110 SpdySerializedFrame body(
1111 spdy_util_.ConstructSpdyDataFrame(1, kPostBody, kPostBodyLength, true));
1112 AddRead(body);
1113
1114 AddReadEOF();
1115
1116 SequencedSocketData data(GetReads(), GetNumReads(), GetWrites(),
1117 GetNumWrites());
1118 MockConnect connect_data(SYNCHRONOUS, OK);
1119 data.set_connect_data(connect_data);
1120 session_deps_.socket_factory->AddSocketDataProvider(&data);
1121
1122 AddSSLSocketData();
1123
1124 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession());
1125
1126 base::WeakPtr<SpdyStream> stream = CreateStreamSynchronously(
1127 SPDY_REQUEST_RESPONSE_STREAM, session, url_, LOWEST, NetLogWithSource());
1128 ASSERT_TRUE(stream);
1129
1130 StreamDelegateDoNothing delegate(stream);
1131 stream->SetDelegate(&delegate);
1132
1133 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty());
1134
1135 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl));
1136 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers),
1137 NO_MORE_DATA_TO_SEND));
1138 EXPECT_EQ(kDefaultUrl, stream->GetUrlFromHeaders().spec());
1139
1140 EXPECT_THAT(delegate.WaitForClose(), IsOk());
1141 EXPECT_EQ("200 Some random extra text describing status",
1142 delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey()));
1143 EXPECT_EQ(std::string(kPostBody, kPostBodyLength),
1144 delegate.TakeReceivedData());
1145
1146 EXPECT_TRUE(data.AllWriteDataConsumed());
1147 EXPECT_TRUE(data.AllReadDataConsumed());
1148 }
1149
1098 // Call IncreaseSendWindowSize on a stream with a large enough delta to overflow 1150 // Call IncreaseSendWindowSize on a stream with a large enough delta to overflow
1099 // an int32_t. The SpdyStream should handle that case gracefully. 1151 // an int32_t. The SpdyStream should handle that case gracefully.
1100 TEST_F(SpdyStreamTest, IncreaseSendWindowSizeOverflow) { 1152 TEST_F(SpdyStreamTest, IncreaseSendWindowSizeOverflow) {
1101 SpdySerializedFrame req(spdy_util_.ConstructSpdyPost( 1153 SpdySerializedFrame req(spdy_util_.ConstructSpdyPost(
1102 kDefaultUrl, 1, kPostBodyLength, LOWEST, nullptr, 0)); 1154 kDefaultUrl, 1, kPostBodyLength, LOWEST, nullptr, 0));
1103 AddWrite(req); 1155 AddWrite(req);
1104 1156
1105 AddReadPause(); 1157 AddReadPause();
1106 1158
1107 // Triggered by the overflowing call to IncreaseSendWindowSize 1159 // Triggered by the overflowing call to IncreaseSendWindowSize
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after
1403 EXPECT_EQ(response_len, stream->raw_received_bytes()); 1455 EXPECT_EQ(response_len, stream->raw_received_bytes());
1404 1456
1405 // FIN 1457 // FIN
1406 data.Resume(); 1458 data.Resume();
1407 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); 1459 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED));
1408 } 1460 }
1409 1461
1410 } // namespace test 1462 } // namespace test
1411 1463
1412 } // namespace net 1464 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/spdy_stream.cc ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698