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

Side by Side Diff: net/quic/test_tools/quic_test_packet_maker.cc

Issue 1540463003: Change the interface of GetAlternativeServicesFor, always return the best Alt-Svc entry. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: add a new testcase: use first exisiting quic session when multiple are available Created 4 years, 11 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 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/quic/test_tools/quic_test_packet_maker.h" 5 #include "net/quic/test_tools/quic_test_packet_maker.h"
6 6
7 #include <list> 7 #include <list>
8 8
9 #include "net/quic/quic_framer.h" 9 #include "net/quic/quic_framer.h"
10 #include "net/quic/quic_http_utils.h" 10 #include "net/quic/quic_http_utils.h"
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 close.error_code = QUIC_CRYPTO_VERSION_NOT_SUPPORTED; 167 close.error_code = QUIC_CRYPTO_VERSION_NOT_SUPPORTED;
168 close.error_details = "Time to panic!"; 168 close.error_details = "Time to panic!";
169 return scoped_ptr<QuicEncryptedPacket>(MakePacket(header, QuicFrame(&close))); 169 return scoped_ptr<QuicEncryptedPacket>(MakePacket(header, QuicFrame(&close)));
170 } 170 }
171 171
172 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeAckPacket( 172 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeAckPacket(
173 QuicPacketNumber packet_number, 173 QuicPacketNumber packet_number,
174 QuicPacketNumber largest_received, 174 QuicPacketNumber largest_received,
175 QuicPacketNumber least_unacked, 175 QuicPacketNumber least_unacked,
176 bool send_feedback) { 176 bool send_feedback) {
177 return MakeAckPacket(packet_number, largest_received, least_unacked,
178 least_unacked, send_feedback);
179 }
180
181 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeAckPacket(
182 QuicPacketNumber packet_number,
183 QuicPacketNumber largest_received,
184 QuicPacketNumber ack_least_unacked,
185 QuicPacketNumber stop_least_unacked,
186 bool send_feedback) {
177 QuicPacketHeader header; 187 QuicPacketHeader header;
178 header.public_header.connection_id = connection_id_; 188 header.public_header.connection_id = connection_id_;
179 header.public_header.reset_flag = false; 189 header.public_header.reset_flag = false;
180 header.public_header.version_flag = false; 190 header.public_header.version_flag = false;
181 header.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; 191 header.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER;
182 header.packet_number = packet_number; 192 header.packet_number = packet_number;
183 header.entropy_flag = false; 193 header.entropy_flag = false;
184 header.fec_flag = false; 194 header.fec_flag = false;
185 header.fec_group = 0; 195 header.fec_group = 0;
186 196
187 QuicAckFrame ack(MakeAckFrame(largest_received)); 197 QuicAckFrame ack(MakeAckFrame(largest_received));
188 ack.delta_time_largest_observed = QuicTime::Delta::Zero(); 198 ack.delta_time_largest_observed = QuicTime::Delta::Zero();
189 for (QuicPacketNumber i = least_unacked; i <= largest_received; ++i) { 199 for (QuicPacketNumber i = ack_least_unacked; i <= largest_received; ++i) {
190 ack.received_packet_times.push_back(make_pair(i, clock_->Now())); 200 ack.received_packet_times.push_back(make_pair(i, clock_->Now()));
191 } 201 }
192 202
193 QuicFramer framer(SupportedVersions(version_), clock_->Now(), 203 QuicFramer framer(SupportedVersions(version_), clock_->Now(),
194 Perspective::IS_CLIENT); 204 Perspective::IS_CLIENT);
195 QuicFrames frames; 205 QuicFrames frames;
196 frames.push_back(QuicFrame(&ack)); 206 frames.push_back(QuicFrame(&ack));
197 207
198 QuicStopWaitingFrame stop_waiting; 208 QuicStopWaitingFrame stop_waiting;
199 stop_waiting.least_unacked = least_unacked; 209 stop_waiting.least_unacked = stop_least_unacked;
200 frames.push_back(QuicFrame(&stop_waiting)); 210 frames.push_back(QuicFrame(&stop_waiting));
201 211
202 scoped_ptr<QuicPacket> packet( 212 scoped_ptr<QuicPacket> packet(
203 BuildUnsizedDataPacket(&framer, header, frames)); 213 BuildUnsizedDataPacket(&framer, header, frames));
204 char buffer[kMaxPacketSize]; 214 char buffer[kMaxPacketSize];
205 size_t encrypted_size = framer.EncryptPayload( 215 size_t encrypted_size = framer.EncryptPayload(
206 ENCRYPTION_NONE, header.packet_number, *packet, buffer, kMaxPacketSize); 216 ENCRYPTION_NONE, header.packet_number, *packet, buffer, kMaxPacketSize);
207 EXPECT_NE(0u, encrypted_size); 217 EXPECT_NE(0u, encrypted_size);
208 QuicEncryptedPacket encrypted(buffer, encrypted_size, false); 218 QuicEncryptedPacket encrypted(buffer, encrypted_size, false);
209 return scoped_ptr<QuicEncryptedPacket>(encrypted.Clone()); 219 return scoped_ptr<QuicEncryptedPacket>(encrypted.Clone());
(...skipping 13 matching lines...) Expand all
223 } 233 }
224 234
225 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeRequestHeadersPacket( 235 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeRequestHeadersPacket(
226 QuicPacketNumber packet_number, 236 QuicPacketNumber packet_number,
227 QuicStreamId stream_id, 237 QuicStreamId stream_id,
228 bool should_include_version, 238 bool should_include_version,
229 bool fin, 239 bool fin,
230 SpdyPriority priority, 240 SpdyPriority priority,
231 const SpdyHeaderBlock& headers, 241 const SpdyHeaderBlock& headers,
232 size_t* spdy_headers_frame_length) { 242 size_t* spdy_headers_frame_length) {
243 return MakeRequestHeadersPacket(packet_number, stream_id,
244 should_include_version, fin, priority,
245 headers, spdy_headers_frame_length, nullptr);
246 }
247
248 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeRequestHeadersPacket(
249 QuicPacketNumber packet_number,
250 QuicStreamId stream_id,
251 bool should_include_version,
252 bool fin,
253 SpdyPriority priority,
254 const SpdyHeaderBlock& headers,
255 size_t* spdy_headers_frame_length,
256 QuicStreamOffset* offset) {
233 InitializeHeader(packet_number, should_include_version); 257 InitializeHeader(packet_number, should_include_version);
234 scoped_ptr<SpdySerializedFrame> spdy_frame; 258 scoped_ptr<SpdySerializedFrame> spdy_frame;
235 if (spdy_request_framer_.protocol_version() == SPDY3) { 259 if (spdy_request_framer_.protocol_version() == SPDY3) {
236 SpdySynStreamIR syn_stream(stream_id); 260 SpdySynStreamIR syn_stream(stream_id);
237 syn_stream.set_header_block(headers); 261 syn_stream.set_header_block(headers);
238 syn_stream.set_fin(fin); 262 syn_stream.set_fin(fin);
239 syn_stream.set_priority(priority); 263 syn_stream.set_priority(priority);
240 spdy_frame.reset(spdy_request_framer_.SerializeSynStream(syn_stream)); 264 spdy_frame.reset(spdy_request_framer_.SerializeSynStream(syn_stream));
241 } else { 265 } else {
242 SpdyHeadersIR headers_frame(stream_id); 266 SpdyHeadersIR headers_frame(stream_id);
243 headers_frame.set_header_block(headers); 267 headers_frame.set_header_block(headers);
244 headers_frame.set_fin(fin); 268 headers_frame.set_fin(fin);
245 headers_frame.set_priority(priority); 269 headers_frame.set_priority(priority);
246 headers_frame.set_has_priority(true); 270 headers_frame.set_has_priority(true);
247 spdy_frame.reset(spdy_request_framer_.SerializeFrame(headers_frame)); 271 spdy_frame.reset(spdy_request_framer_.SerializeFrame(headers_frame));
248 } 272 }
249 if (spdy_headers_frame_length) { 273 if (spdy_headers_frame_length) {
250 *spdy_headers_frame_length = spdy_frame->size(); 274 *spdy_headers_frame_length = spdy_frame->size();
251 } 275 }
252 QuicStreamFrame frame( 276 if (offset != nullptr) {
253 kHeadersStreamId, false, 0, 277 QuicStreamFrame frame(
254 base::StringPiece(spdy_frame->data(), spdy_frame->size())); 278 kHeadersStreamId, false, *offset,
255 return MakePacket(header_, QuicFrame(&frame)); 279 base::StringPiece(spdy_frame->data(), spdy_frame->size()));
280 *offset += spdy_frame->size();
281 return MakePacket(header_, QuicFrame(&frame));
282 } else {
283 QuicStreamFrame frame(
284 kHeadersStreamId, false, 0,
285 base::StringPiece(spdy_frame->data(), spdy_frame->size()));
286
287 return MakePacket(header_, QuicFrame(&frame));
288 }
256 } 289 }
257 290
258 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeRequestHeadersPacket( 291 // Convenience method for calling MakeRequestHeadersPacket with nullptr for
292 // |spdy_headers_frame_length|.
293 scoped_ptr<QuicEncryptedPacket>
294 QuicTestPacketMaker::MakeRequestHeadersPacketWithOffsetTracking(
259 QuicPacketNumber packet_number, 295 QuicPacketNumber packet_number,
260 QuicStreamId stream_id, 296 QuicStreamId stream_id,
261 bool should_include_version, 297 bool should_include_version,
262 bool fin, 298 bool fin,
263 SpdyPriority priority, 299 SpdyPriority priority,
264 const SpdyHeaderBlock& headers) { 300 const SpdyHeaderBlock& headers,
301 QuicStreamOffset* offset) {
265 return MakeRequestHeadersPacket(packet_number, stream_id, 302 return MakeRequestHeadersPacket(packet_number, stream_id,
266 should_include_version, fin, priority, 303 should_include_version, fin, priority,
267 headers, nullptr); 304 headers, nullptr, offset);
268 } 305 }
269 306
270 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeResponseHeadersPacket( 307 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeResponseHeadersPacket(
271 QuicPacketNumber packet_number, 308 QuicPacketNumber packet_number,
272 QuicStreamId stream_id, 309 QuicStreamId stream_id,
273 bool should_include_version, 310 bool should_include_version,
274 bool fin, 311 bool fin,
275 const SpdyHeaderBlock& headers, 312 const SpdyHeaderBlock& headers,
276 size_t* spdy_headers_frame_length) { 313 size_t* spdy_headers_frame_length,
314 QuicStreamOffset* offset) {
277 InitializeHeader(packet_number, should_include_version); 315 InitializeHeader(packet_number, should_include_version);
278 scoped_ptr<SpdySerializedFrame> spdy_frame; 316 scoped_ptr<SpdySerializedFrame> spdy_frame;
279 if (spdy_request_framer_.protocol_version() == SPDY3) { 317 if (spdy_response_framer_.protocol_version() == SPDY3) {
280 SpdySynReplyIR syn_reply(stream_id); 318 SpdySynReplyIR syn_reply(stream_id);
281 syn_reply.set_header_block(headers); 319 syn_reply.set_header_block(headers);
282 syn_reply.set_fin(fin); 320 syn_reply.set_fin(fin);
283 spdy_frame.reset(spdy_response_framer_.SerializeSynReply(syn_reply)); 321 spdy_frame.reset(spdy_response_framer_.SerializeSynReply(syn_reply));
284 } else { 322 } else {
285 SpdyHeadersIR headers_frame(stream_id); 323 SpdyHeadersIR headers_frame(stream_id);
286 headers_frame.set_header_block(headers); 324 headers_frame.set_header_block(headers);
287 headers_frame.set_fin(fin); 325 headers_frame.set_fin(fin);
288 spdy_frame.reset(spdy_request_framer_.SerializeFrame(headers_frame)); 326 spdy_frame.reset(spdy_response_framer_.SerializeFrame(headers_frame));
289 } 327 }
290 if (spdy_headers_frame_length) { 328 if (spdy_headers_frame_length) {
291 *spdy_headers_frame_length = spdy_frame->size(); 329 *spdy_headers_frame_length = spdy_frame->size();
292 } 330 }
293 QuicStreamFrame frame( 331 if (offset != nullptr) {
294 kHeadersStreamId, false, 0, 332 QuicStreamFrame frame(
295 base::StringPiece(spdy_frame->data(), spdy_frame->size())); 333 kHeadersStreamId, false, *offset,
296 return MakePacket(header_, QuicFrame(&frame)); 334 base::StringPiece(spdy_frame->data(), spdy_frame->size()));
335 *offset += spdy_frame->size();
336 return MakePacket(header_, QuicFrame(&frame));
337 } else {
338 QuicStreamFrame frame(
339 kHeadersStreamId, false, 0,
340 base::StringPiece(spdy_frame->data(), spdy_frame->size()));
341 return MakePacket(header_, QuicFrame(&frame));
342 }
297 } 343 }
298 344
299 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeResponseHeadersPacket( 345 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeResponseHeadersPacket(
300 QuicPacketNumber packet_number, 346 QuicPacketNumber packet_number,
301 QuicStreamId stream_id, 347 QuicStreamId stream_id,
302 bool should_include_version, 348 bool should_include_version,
303 bool fin, 349 bool fin,
304 const SpdyHeaderBlock& headers) { 350 const SpdyHeaderBlock& headers,
305 return MakeResponseHeadersPacket( 351 size_t* spdy_headers_frame_length) {
306 packet_number, stream_id, should_include_version, fin, headers, nullptr); 352 return MakeResponseHeadersPacket(packet_number, stream_id,
353 should_include_version, fin, headers,
354 spdy_headers_frame_length, nullptr);
355 }
356
357 // Convenience method for calling MakeResponseHeadersPacket with nullptr for
358 // |spdy_headers_frame_length|.
359 scoped_ptr<QuicEncryptedPacket>
360 QuicTestPacketMaker::MakeResponseHeadersPacketWithOffsetTracking(
361 QuicPacketNumber packet_number,
362 QuicStreamId stream_id,
363 bool should_include_version,
364 bool fin,
365 const SpdyHeaderBlock& headers,
366 QuicStreamOffset* offset) {
367 return MakeResponseHeadersPacket(packet_number, stream_id,
368 should_include_version, fin, headers,
369 nullptr, offset);
307 } 370 }
308 371
309 SpdyHeaderBlock QuicTestPacketMaker::GetRequestHeaders( 372 SpdyHeaderBlock QuicTestPacketMaker::GetRequestHeaders(
310 const std::string& method, 373 const std::string& method,
311 const std::string& scheme, 374 const std::string& scheme,
312 const std::string& path) { 375 const std::string& path) {
313 SpdyHeaderBlock headers; 376 SpdyHeaderBlock headers;
314 headers[":method"] = method; 377 headers[":method"] = method;
315 headers[":authority"] = host_; 378 headers[":authority"] = host_;
316 headers[":scheme"] = scheme; 379 headers[":scheme"] = scheme;
317 headers[":path"] = path; 380 headers[":path"] = path;
318 return headers; 381 return headers;
319 } 382 }
320 383
321 SpdyHeaderBlock QuicTestPacketMaker::GetResponseHeaders( 384 SpdyHeaderBlock QuicTestPacketMaker::GetResponseHeaders(
322 const std::string& status) { 385 const std::string& status) {
323 SpdyHeaderBlock headers; 386 SpdyHeaderBlock headers;
324 headers[":status"] = status; 387 headers[":status"] = status;
325 headers["content-type"] = "text/plain"; 388 headers["content-type"] = "text/plain";
326 return headers; 389 return headers;
327 } 390 }
328 391
392 SpdyHeaderBlock QuicTestPacketMaker::GetResponseHeaders(
393 const std::string& status,
394 const std::string& alt_svc) {
395 SpdyHeaderBlock headers;
396 headers[":status"] = status;
397 headers["Alt-Svc"] = alt_svc;
398 headers["content-type"] = "text/plain";
399 return headers;
400 }
401
329 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakePacket( 402 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakePacket(
330 const QuicPacketHeader& header, 403 const QuicPacketHeader& header,
331 const QuicFrame& frame) { 404 const QuicFrame& frame) {
332 QuicFramer framer(SupportedVersions(version_), QuicTime::Zero(), 405 QuicFramer framer(SupportedVersions(version_), QuicTime::Zero(),
333 Perspective::IS_CLIENT); 406 Perspective::IS_CLIENT);
334 QuicFrames frames; 407 QuicFrames frames;
335 frames.push_back(frame); 408 frames.push_back(frame);
336 scoped_ptr<QuicPacket> packet( 409 scoped_ptr<QuicPacket> packet(
337 BuildUnsizedDataPacket(&framer, header, frames)); 410 BuildUnsizedDataPacket(&framer, header, frames));
338 char buffer[kMaxPacketSize]; 411 char buffer[kMaxPacketSize];
(...skipping 11 matching lines...) Expand all
350 header_.public_header.version_flag = should_include_version; 423 header_.public_header.version_flag = should_include_version;
351 header_.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; 424 header_.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER;
352 header_.packet_number = packet_number; 425 header_.packet_number = packet_number;
353 header_.fec_group = 0; 426 header_.fec_group = 0;
354 header_.entropy_flag = false; 427 header_.entropy_flag = false;
355 header_.fec_flag = false; 428 header_.fec_flag = false;
356 } 429 }
357 430
358 } // namespace test 431 } // namespace test
359 } // namespace net 432 } // namespace net
OLDNEW
« net/quic/quic_network_transaction_unittest.cc ('K') | « net/quic/test_tools/quic_test_packet_maker.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698