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

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

Issue 2555563003: Ignore 1xx informational headers. (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 976 matching lines...) Expand 10 before | Expand all | Expand 10 after
987 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers), 987 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers),
988 NO_MORE_DATA_TO_SEND)); 988 NO_MORE_DATA_TO_SEND));
989 EXPECT_EQ(kDefaultUrl, stream->GetUrlFromHeaders().spec()); 989 EXPECT_EQ(kDefaultUrl, stream->GetUrlFromHeaders().spec());
990 990
991 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_SPDY_PROTOCOL_ERROR)); 991 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_SPDY_PROTOCOL_ERROR));
992 992
993 EXPECT_TRUE(data.AllWriteDataConsumed()); 993 EXPECT_TRUE(data.AllWriteDataConsumed());
994 EXPECT_TRUE(data.AllReadDataConsumed()); 994 EXPECT_TRUE(data.AllReadDataConsumed());
995 } 995 }
996 996
997 TEST_F(SpdyStreamTest, InformationalHeaders) {
998 SpdySerializedFrame req(
999 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
1000 AddWrite(req);
1001
1002 SpdyHeaderBlock informational_headers;
1003 informational_headers[":status"] = "100";
1004 SpdySerializedFrame informational_response(
1005 spdy_util_.ConstructSpdyResponseHeaders(
1006 1, std::move(informational_headers), false));
1007 AddRead(informational_response);
1008
1009 SpdySerializedFrame reply(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
1010 AddRead(reply);
1011
1012 SpdySerializedFrame body(
1013 spdy_util_.ConstructSpdyDataFrame(1, kPostBody, kPostBodyLength, true));
1014 AddRead(body);
1015
1016 AddReadEOF();
1017
1018 SequencedSocketData data(GetReads(), GetNumReads(), GetWrites(),
1019 GetNumWrites());
1020 MockConnect connect_data(SYNCHRONOUS, OK);
1021 data.set_connect_data(connect_data);
1022 session_deps_.socket_factory->AddSocketDataProvider(&data);
1023
1024 AddSSLSocketData();
1025
1026 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession());
1027
1028 base::WeakPtr<SpdyStream> stream = CreateStreamSynchronously(
1029 SPDY_REQUEST_RESPONSE_STREAM, session, url_, LOWEST, NetLogWithSource());
1030 ASSERT_TRUE(stream);
1031
1032 StreamDelegateDoNothing delegate(stream);
1033 stream->SetDelegate(&delegate);
1034
1035 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty());
1036
1037 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl));
1038 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers),
1039 NO_MORE_DATA_TO_SEND));
1040 EXPECT_EQ(kDefaultUrl, stream->GetUrlFromHeaders().spec());
1041
1042 EXPECT_THAT(delegate.WaitForClose(), IsOk());
1043 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey()));
1044 EXPECT_EQ(std::string(kPostBody, kPostBodyLength),
1045 delegate.TakeReceivedData());
1046
1047 EXPECT_TRUE(data.AllWriteDataConsumed());
1048 EXPECT_TRUE(data.AllReadDataConsumed());
1049 }
1050
1051 TEST_F(SpdyStreamTest, StatusMustBeNumber) {
1052 SpdySerializedFrame req(
1053 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
1054 AddWrite(req);
1055
1056 SpdyHeaderBlock incorrect_headers;
1057 incorrect_headers[":status"] = "nan";
1058 SpdySerializedFrame reply(spdy_util_.ConstructSpdyResponseHeaders(
1059 1, std::move(incorrect_headers), false));
1060 AddRead(reply);
1061
1062 SpdySerializedFrame rst(
1063 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_PROTOCOL_ERROR));
1064 AddWrite(rst);
1065
1066 AddReadEOF();
1067
1068 SequencedSocketData data(GetReads(), GetNumReads(), GetWrites(),
1069 GetNumWrites());
1070 MockConnect connect_data(SYNCHRONOUS, OK);
1071 data.set_connect_data(connect_data);
1072 session_deps_.socket_factory->AddSocketDataProvider(&data);
1073
1074 AddSSLSocketData();
1075
1076 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession());
1077
1078 base::WeakPtr<SpdyStream> stream = CreateStreamSynchronously(
1079 SPDY_REQUEST_RESPONSE_STREAM, session, url_, LOWEST, NetLogWithSource());
1080 ASSERT_TRUE(stream);
1081
1082 StreamDelegateDoNothing delegate(stream);
1083 stream->SetDelegate(&delegate);
1084
1085 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty());
1086
1087 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl));
1088 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers),
1089 NO_MORE_DATA_TO_SEND));
1090 EXPECT_EQ(kDefaultUrl, stream->GetUrlFromHeaders().spec());
1091
1092 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_SPDY_PROTOCOL_ERROR));
1093
1094 EXPECT_TRUE(data.AllWriteDataConsumed());
1095 EXPECT_TRUE(data.AllReadDataConsumed());
1096 }
1097
997 // Call IncreaseSendWindowSize on a stream with a large enough delta to overflow 1098 // Call IncreaseSendWindowSize on a stream with a large enough delta to overflow
998 // an int32_t. The SpdyStream should handle that case gracefully. 1099 // an int32_t. The SpdyStream should handle that case gracefully.
999 TEST_F(SpdyStreamTest, IncreaseSendWindowSizeOverflow) { 1100 TEST_F(SpdyStreamTest, IncreaseSendWindowSizeOverflow) {
1000 SpdySerializedFrame req(spdy_util_.ConstructSpdyPost( 1101 SpdySerializedFrame req(spdy_util_.ConstructSpdyPost(
1001 kDefaultUrl, 1, kPostBodyLength, LOWEST, nullptr, 0)); 1102 kDefaultUrl, 1, kPostBodyLength, LOWEST, nullptr, 0));
1002 AddWrite(req); 1103 AddWrite(req);
1003 1104
1004 AddReadPause(); 1105 AddReadPause();
1005 1106
1006 // Triggered by the overflowing call to IncreaseSendWindowSize 1107 // Triggered by the overflowing call to IncreaseSendWindowSize
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after
1302 EXPECT_EQ(response_len, stream->raw_received_bytes()); 1403 EXPECT_EQ(response_len, stream->raw_received_bytes());
1303 1404
1304 // FIN 1405 // FIN
1305 data.Resume(); 1406 data.Resume();
1306 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); 1407 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED));
1307 } 1408 }
1308 1409
1309 } // namespace test 1410 } // namespace test
1310 1411
1311 } // namespace net 1412 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698