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

Side by Side Diff: net/http/http_stream_parser_unittest.cc

Issue 2119623002: Add metrics to track HTTP/0.9 usage for main frames and subresources (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Response to comments Created 4 years, 5 months 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/http/http_stream_parser.h" 5 #include "net/http/http_stream_parser.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <memory> 10 #include <memory>
(...skipping 1108 matching lines...) Expand 10 before | Expand all | Expand 10 after
1119 1119
1120 SimpleGetRunner get_runner; 1120 SimpleGetRunner get_runner;
1121 get_runner.AddRead(response); 1121 get_runner.AddRead(response);
1122 get_runner.SetupParserAndSendRequest(); 1122 get_runner.SetupParserAndSendRequest();
1123 get_runner.ReadHeaders(); 1123 get_runner.ReadHeaders();
1124 EXPECT_EQ(0, get_runner.parser()->received_bytes()); 1124 EXPECT_EQ(0, get_runner.parser()->received_bytes());
1125 int response_size = response.size(); 1125 int response_size = response.size();
1126 int read_lengths[] = {response_size, 0}; 1126 int read_lengths[] = {response_size, 0};
1127 get_runner.ReadBody(response_size, read_lengths); 1127 get_runner.ReadBody(response_size, read_lengths);
1128 EXPECT_EQ(response_size, get_runner.parser()->received_bytes()); 1128 EXPECT_EQ(response_size, get_runner.parser()->received_bytes());
1129 EXPECT_EQ(HttpResponseInfo::CONNECTION_INFO_HTTP0_9,
1130 get_runner.response_info()->connection_info);
1129 } 1131 }
1130 1132
1131 // Test basic case where there is no keep-alive or extra data from the socket, 1133 // Test basic case where there is no keep-alive or extra data from the socket,
1132 // and the entire response is received in a single read. 1134 // and the entire response is received in a single read.
1133 TEST(HttpStreamParser, ReceivedBytesNormal) { 1135 TEST(HttpStreamParser, ReceivedBytesNormal) {
1134 std::string headers = "HTTP/1.1 200 OK\r\n" 1136 std::string headers =
1137 "HTTP/1.0 200 OK\r\n"
1135 "Content-Length: 7\r\n\r\n"; 1138 "Content-Length: 7\r\n\r\n";
1136 std::string body = "content"; 1139 std::string body = "content";
1137 std::string response = headers + body; 1140 std::string response = headers + body;
1138 1141
1139 SimpleGetRunner get_runner; 1142 SimpleGetRunner get_runner;
1140 get_runner.AddRead(response); 1143 get_runner.AddRead(response);
1141 get_runner.SetupParserAndSendRequest(); 1144 get_runner.SetupParserAndSendRequest();
1142 get_runner.ReadHeaders(); 1145 get_runner.ReadHeaders();
1143 int64_t headers_size = headers.size(); 1146 int64_t headers_size = headers.size();
1144 EXPECT_EQ(headers_size, get_runner.parser()->received_bytes()); 1147 EXPECT_EQ(headers_size, get_runner.parser()->received_bytes());
1145 int body_size = body.size(); 1148 int body_size = body.size();
1146 int read_lengths[] = {body_size, 0}; 1149 int read_lengths[] = {body_size, 0};
1147 get_runner.ReadBody(body_size, read_lengths); 1150 get_runner.ReadBody(body_size, read_lengths);
1148 int64_t response_size = response.size(); 1151 int64_t response_size = response.size();
1149 EXPECT_EQ(response_size, get_runner.parser()->received_bytes()); 1152 EXPECT_EQ(response_size, get_runner.parser()->received_bytes());
1153 EXPECT_EQ(HttpResponseInfo::CONNECTION_INFO_HTTP1_0,
1154 get_runner.response_info()->connection_info);
1150 } 1155 }
1151 1156
1152 // Test that bytes that represent "next" response are not counted 1157 // Test that bytes that represent "next" response are not counted
1153 // as current response "received_bytes". 1158 // as current response "received_bytes".
1154 TEST(HttpStreamParser, ReceivedBytesExcludesNextResponse) { 1159 TEST(HttpStreamParser, ReceivedBytesExcludesNextResponse) {
1155 std::string headers = "HTTP/1.1 200 OK\r\n" 1160 std::string headers = "HTTP/1.1 200 OK\r\n"
1156 "Content-Length: 8\r\n\r\n"; 1161 "Content-Length: 8\r\n\r\n";
1157 std::string body = "content8"; 1162 std::string body = "content8";
1158 std::string response = headers + body; 1163 std::string response = headers + body;
1159 std::string next_response = "HTTP/1.1 200 OK\r\n\r\nFOO"; 1164 std::string next_response = "HTTP/1.1 200 OK\r\n\r\nFOO";
1160 std::string data = response + next_response; 1165 std::string data = response + next_response;
1161 1166
1162 SimpleGetRunner get_runner; 1167 SimpleGetRunner get_runner;
1163 get_runner.AddRead(data); 1168 get_runner.AddRead(data);
1164 get_runner.SetupParserAndSendRequest(); 1169 get_runner.SetupParserAndSendRequest();
1165 get_runner.ReadHeaders(); 1170 get_runner.ReadHeaders();
1166 EXPECT_EQ(39, get_runner.parser()->received_bytes()); 1171 EXPECT_EQ(39, get_runner.parser()->received_bytes());
1167 int64_t headers_size = headers.size(); 1172 int64_t headers_size = headers.size();
1168 EXPECT_EQ(headers_size, get_runner.parser()->received_bytes()); 1173 EXPECT_EQ(headers_size, get_runner.parser()->received_bytes());
1169 int body_size = body.size(); 1174 int body_size = body.size();
1170 int read_lengths[] = {body_size, 0}; 1175 int read_lengths[] = {body_size, 0};
1171 get_runner.ReadBody(body_size, read_lengths); 1176 get_runner.ReadBody(body_size, read_lengths);
1172 int64_t response_size = response.size(); 1177 int64_t response_size = response.size();
1173 EXPECT_EQ(response_size, get_runner.parser()->received_bytes()); 1178 EXPECT_EQ(response_size, get_runner.parser()->received_bytes());
1174 int64_t next_response_size = next_response.size(); 1179 int64_t next_response_size = next_response.size();
1175 EXPECT_EQ(next_response_size, get_runner.read_buffer()->offset()); 1180 EXPECT_EQ(next_response_size, get_runner.read_buffer()->offset());
1181 EXPECT_EQ(HttpResponseInfo::CONNECTION_INFO_HTTP1_1,
1182 get_runner.response_info()->connection_info);
1176 } 1183 }
1177 1184
1178 // Test that "received_bytes" calculation works fine when last read 1185 // Test that "received_bytes" calculation works fine when last read
1179 // contains more data than requested by user. 1186 // contains more data than requested by user.
1180 // We send data in two reads: 1187 // We send data in two reads:
1181 // 1) Headers + beginning of response 1188 // 1) Headers + beginning of response
1182 // 2) remaining part of response + next response start 1189 // 2) remaining part of response + next response start
1183 // We setup user read buffer so it fully accepts the beginnig of response 1190 // We setup user read buffer so it fully accepts the beginnig of response
1184 // body, but it is larger that remaining part of body. 1191 // body, but it is larger that remaining part of body.
1185 TEST(HttpStreamParser, ReceivedBytesMultiReadExcludesNextResponse) { 1192 TEST(HttpStreamParser, ReceivedBytesMultiReadExcludesNextResponse) {
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
1387 ASSERT_EQ(kBodySize, parser.ReadResponseBody( 1394 ASSERT_EQ(kBodySize, parser.ReadResponseBody(
1388 body_buffer.get(), kBodySize, callback.callback())); 1395 body_buffer.get(), kBodySize, callback.callback()));
1389 1396
1390 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)), parser.sent_bytes()); 1397 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)), parser.sent_bytes());
1391 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), parser.received_bytes()); 1398 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), parser.received_bytes());
1392 } 1399 }
1393 1400
1394 } // namespace 1401 } // namespace
1395 1402
1396 } // namespace net 1403 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698