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

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

Issue 1411383005: Initial implementation of RequestPriority-based HTTP/2 dependencies. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Updated tests. Created 5 years, 1 month 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) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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_test_util_common.h" 5 #include "net/spdy/spdy_test_util_common.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <cstddef> 9 #include <cstddef>
10 10
(...skipping 716 matching lines...) Expand 10 before | Expand all | Expand 10 after
727 } 727 }
728 728
729 void SpdySessionPoolPeer::SetSessionMaxRecvWindowSize(size_t window) { 729 void SpdySessionPoolPeer::SetSessionMaxRecvWindowSize(size_t window) {
730 pool_->session_max_recv_window_size_ = window; 730 pool_->session_max_recv_window_size_ = window;
731 } 731 }
732 732
733 void SpdySessionPoolPeer::SetStreamInitialRecvWindowSize(size_t window) { 733 void SpdySessionPoolPeer::SetStreamInitialRecvWindowSize(size_t window) {
734 pool_->stream_max_recv_window_size_ = window; 734 pool_->stream_max_recv_window_size_ = window;
735 } 735 }
736 736
737 SpdyTestUtil::SpdyTestUtil(NextProto protocol) 737 SpdyTestUtil::SpdyTestUtil(NextProto protocol, bool dependency_priorities)
738 : protocol_(protocol), 738 : protocol_(protocol),
739 spdy_version_(NextProtoToSpdyMajorVersion(protocol)), 739 spdy_version_(NextProtoToSpdyMajorVersion(protocol)),
740 default_url_(GURL(kDefaultURL)) { 740 default_url_(GURL(kDefaultURL)),
741 dependency_priorities_(dependency_priorities) {
741 DCHECK(next_proto_is_spdy(protocol)) << "Invalid protocol: " << protocol; 742 DCHECK(next_proto_is_spdy(protocol)) << "Invalid protocol: " << protocol;
742 } 743 }
743 744
745 SpdyTestUtil::~SpdyTestUtil() {}
746
744 void SpdyTestUtil::AddUrlToHeaderBlock(base::StringPiece url, 747 void SpdyTestUtil::AddUrlToHeaderBlock(base::StringPiece url,
745 SpdyHeaderBlock* headers) const { 748 SpdyHeaderBlock* headers) const {
746 std::string scheme, host, path; 749 std::string scheme, host, path;
747 ParseUrl(url, &scheme, &host, &path); 750 ParseUrl(url, &scheme, &host, &path);
748 (*headers)[GetHostKey()] = host; 751 (*headers)[GetHostKey()] = host;
749 (*headers)[GetSchemeKey()] = scheme; 752 (*headers)[GetSchemeKey()] = scheme;
750 (*headers)[GetPathKey()] = path; 753 (*headers)[GetPathKey()] = path;
751 } 754 }
752 755
753 scoped_ptr<SpdyHeaderBlock> SpdyTestUtil::ConstructGetHeaderBlock( 756 scoped_ptr<SpdyHeaderBlock> SpdyTestUtil::ConstructGetHeaderBlock(
(...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after
1128 AppendToHeaderBlock(headers, header_count, 1131 AppendToHeaderBlock(headers, header_count,
1129 spdy_headers.mutable_header_block()); 1132 spdy_headers.mutable_header_block());
1130 return CreateFramer(false)->SerializeFrame(spdy_headers); 1133 return CreateFramer(false)->SerializeFrame(spdy_headers);
1131 } 1134 }
1132 1135
1133 SpdyFrame* SpdyTestUtil::ConstructSpdySyn(int stream_id, 1136 SpdyFrame* SpdyTestUtil::ConstructSpdySyn(int stream_id,
1134 const SpdyHeaderBlock& block, 1137 const SpdyHeaderBlock& block,
1135 RequestPriority priority, 1138 RequestPriority priority,
1136 bool compressed, 1139 bool compressed,
1137 bool fin) const { 1140 bool fin) const {
1141 // Get the stream id of the next highest priority request
1142 // (most recent request of the same priority, or last request of
1143 // an earlier priority).
1144 int parent_stream_id = 0;
1145 for (int q = priority; q >= IDLE; --q) {
1146 if (!priority_to_stream_id_list_[q].empty()) {
1147 parent_stream_id = priority_to_stream_id_list_[q].back();
1148 break;
1149 }
1150 }
1151
1152 priority_to_stream_id_list_[priority].push_back(stream_id);
1153
1138 if (protocol_ < kProtoHTTP2) { 1154 if (protocol_ < kProtoHTTP2) {
1139 SpdySynStreamIR syn_stream(stream_id); 1155 SpdySynStreamIR syn_stream(stream_id);
1140 syn_stream.set_header_block(block); 1156 syn_stream.set_header_block(block);
1141 syn_stream.set_priority( 1157 syn_stream.set_priority(
1142 ConvertRequestPriorityToSpdyPriority(priority, spdy_version())); 1158 ConvertRequestPriorityToSpdyPriority(priority, spdy_version()));
1143 syn_stream.set_fin(fin); 1159 syn_stream.set_fin(fin);
1144 return CreateFramer(compressed)->SerializeFrame(syn_stream); 1160 return CreateFramer(compressed)->SerializeFrame(syn_stream);
1145 } else { 1161 } else {
1146 SpdyHeadersIR headers(stream_id); 1162 SpdyHeadersIR headers(stream_id);
1147 headers.set_header_block(block); 1163 headers.set_header_block(block);
1148 headers.set_has_priority(true); 1164 headers.set_has_priority(true);
1149 headers.set_priority( 1165 headers.set_priority(
1150 ConvertRequestPriorityToSpdyPriority(priority, spdy_version())); 1166 ConvertRequestPriorityToSpdyPriority(priority, spdy_version()));
1167 if (dependency_priorities_) {
1168 headers.set_parent_stream_id(parent_stream_id);
1169 headers.set_exclusive(true);
1170 }
1151 headers.set_fin(fin); 1171 headers.set_fin(fin);
1152 return CreateFramer(compressed)->SerializeFrame(headers); 1172 return CreateFramer(compressed)->SerializeFrame(headers);
1153 } 1173 }
1154 } 1174 }
1155 1175
1156 SpdyFrame* SpdyTestUtil::ConstructSpdyReply(int stream_id, 1176 SpdyFrame* SpdyTestUtil::ConstructSpdyReply(int stream_id,
1157 const SpdyHeaderBlock& headers) { 1177 const SpdyHeaderBlock& headers) {
1158 if (protocol_ < kProtoHTTP2) { 1178 if (protocol_ < kProtoHTTP2) {
1159 SpdySynReplyIR syn_reply(stream_id); 1179 SpdySynReplyIR syn_reply(stream_id);
1160 syn_reply.set_header_block(headers); 1180 syn_reply.set_header_block(headers);
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
1265 return framer.SerializeData(data_ir); 1285 return framer.SerializeData(data_ir);
1266 } 1286 }
1267 1287
1268 SpdyFrame* SpdyTestUtil::ConstructWrappedSpdyFrame( 1288 SpdyFrame* SpdyTestUtil::ConstructWrappedSpdyFrame(
1269 const scoped_ptr<SpdyFrame>& frame, 1289 const scoped_ptr<SpdyFrame>& frame,
1270 int stream_id) { 1290 int stream_id) {
1271 return ConstructSpdyBodyFrame(stream_id, frame->data(), 1291 return ConstructSpdyBodyFrame(stream_id, frame->data(),
1272 frame->size(), false); 1292 frame->size(), false);
1273 } 1293 }
1274 1294
1295 void SpdyTestUtil::OnStreamDestruction(int stream_id) {
1296 LOG(ERROR) << __FUNCTION__ << " stream_id " << stream_id;
Bence 2015/11/11 18:47:15 I assume you do not intend to keep these LOG state
Randy Smith (Not in Mondays) 2015/11/11 23:25:59 Whoops, I was trying to keep these in the git stas
1297 for (auto priority_it = priority_to_stream_id_list_.begin();
1298 priority_it != priority_to_stream_id_list_.end(); ++priority_it) {
1299 for (auto stream_it = priority_it->second.begin();
1300 stream_it != priority_it->second.end(); ++stream_it) {
1301 if (*stream_it == stream_id) {
1302 LOG(ERROR) << __FUNCTION__ << ":" << __LINE__ << " vector size "
1303 << priority_it->second.size();
1304 priority_it->second.erase(stream_it);
1305 LOG(ERROR) << __FUNCTION__ << ":" << __LINE__ << " vector size "
1306 << priority_it->second.size();
1307 return;
1308 }
1309 }
1310 }
1311 LOG(ERROR) << __FUNCTION__ << "Reached end.";
1312 NOTREACHED();
1313 }
1314
1275 const SpdyHeaderInfo SpdyTestUtil::MakeSpdyHeader(SpdyFrameType type) { 1315 const SpdyHeaderInfo SpdyTestUtil::MakeSpdyHeader(SpdyFrameType type) {
1276 const SpdyHeaderInfo kHeader = { 1316 const SpdyHeaderInfo kHeader = {
1277 type, 1317 type,
1278 1, // Stream ID 1318 1, // Stream ID
1279 0, // Associated stream ID 1319 0, // Associated stream ID
1280 ConvertRequestPriorityToSpdyPriority(LOWEST, spdy_version_), 1320 ConvertRequestPriorityToSpdyPriority(LOWEST, spdy_version_),
1281 kSpdyCredentialSlotUnused, 1321 kSpdyCredentialSlotUnused,
1282 CONTROL_FLAG_FIN, // Control Flags 1322 CONTROL_FLAG_FIN, // Control Flags
1283 false, // Compressed 1323 false, // Compressed
1284 RST_STREAM_INVALID, 1324 RST_STREAM_INVALID,
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
1356 } 1396 }
1357 } 1397 }
1358 1398
1359 void SpdyTestUtil::SetPriority(RequestPriority priority, 1399 void SpdyTestUtil::SetPriority(RequestPriority priority,
1360 SpdySynStreamIR* ir) const { 1400 SpdySynStreamIR* ir) const {
1361 ir->set_priority(ConvertRequestPriorityToSpdyPriority( 1401 ir->set_priority(ConvertRequestPriorityToSpdyPriority(
1362 priority, spdy_version())); 1402 priority, spdy_version()));
1363 } 1403 }
1364 1404
1365 } // namespace net 1405 } // namespace net
OLDNEW
« net/spdy/spdy_test_util_common.h ('K') | « net/spdy/spdy_test_util_common.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698