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

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

Issue 1327923002: Migrates QUIC sessions to a new network when old network is (about to be) disconnected. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@home
Patch Set: Added read/write socket error tests. 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 15 matching lines...) Expand all
26 host_(host), 26 host_(host),
27 spdy_request_framer_(HTTP2), 27 spdy_request_framer_(HTTP2),
28 spdy_response_framer_(HTTP2) {} 28 spdy_response_framer_(HTTP2) {}
29 29
30 QuicTestPacketMaker::~QuicTestPacketMaker() {} 30 QuicTestPacketMaker::~QuicTestPacketMaker() {}
31 31
32 void QuicTestPacketMaker::set_hostname(const std::string& host) { 32 void QuicTestPacketMaker::set_hostname(const std::string& host) {
33 host_.assign(host); 33 host_.assign(host);
34 } 34 }
35 35
36 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakePingPacket(
37 QuicPacketNumber num,
38 bool include_version) {
39 QuicPacketHeader header;
40 header.public_header.connection_id = connection_id_;
41 header.public_header.reset_flag = false;
42 header.public_header.version_flag = include_version;
43 header.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER;
44 header.packet_number = num;
45 header.entropy_flag = false;
46 header.fec_flag = false;
47 header.fec_group = 0;
48
49 QuicPingFrame ping;
50 return scoped_ptr<QuicEncryptedPacket>(MakePacket(header, QuicFrame(ping)));
51 }
52
36 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeRstPacket( 53 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeRstPacket(
37 QuicPacketNumber num, 54 QuicPacketNumber num,
38 bool include_version, 55 bool include_version,
39 QuicStreamId stream_id, 56 QuicStreamId stream_id,
40 QuicRstStreamErrorCode error_code) { 57 QuicRstStreamErrorCode error_code) {
41 QuicPacketHeader header; 58 QuicPacketHeader header;
42 header.public_header.connection_id = connection_id_; 59 header.public_header.connection_id = connection_id_;
43 header.public_header.reset_flag = false; 60 header.public_header.reset_flag = false;
44 header.public_header.version_flag = include_version; 61 header.public_header.version_flag = include_version;
45 header.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; 62 header.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER;
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 QuicStreamId stream_id, 230 QuicStreamId stream_id,
214 bool should_include_version, 231 bool should_include_version,
215 bool fin, 232 bool fin,
216 QuicStreamOffset offset, 233 QuicStreamOffset offset,
217 base::StringPiece data) { 234 base::StringPiece data) {
218 InitializeHeader(packet_number, should_include_version); 235 InitializeHeader(packet_number, should_include_version);
219 QuicStreamFrame frame(stream_id, fin, offset, data); 236 QuicStreamFrame frame(stream_id, fin, offset, data);
220 return MakePacket(header_, QuicFrame(&frame)); 237 return MakePacket(header_, QuicFrame(&frame));
221 } 238 }
222 239
240 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeAckAndDataPacket(
241 QuicPacketNumber packet_number,
242 bool include_version,
243 QuicStreamId stream_id,
244 QuicPacketNumber largest_received,
245 QuicPacketNumber least_unacked,
246 bool fin,
247 QuicStreamOffset offset,
248 base::StringPiece data) {
249 InitializeHeader(packet_number, include_version);
250
251 QuicAckFrame ack(MakeAckFrame(largest_received));
252 ack.delta_time_largest_observed = QuicTime::Delta::Zero();
253 for (QuicPacketNumber i = least_unacked; i <= largest_received; ++i) {
254 ack.received_packet_times.push_back(make_pair(i, clock_->Now()));
255 }
256 QuicFrames frames;
257 frames.push_back(QuicFrame(&ack));
258
259 QuicStopWaitingFrame stop_waiting;
260 stop_waiting.least_unacked = least_unacked;
261 frames.push_back(QuicFrame(&stop_waiting));
262
263 QuicStreamFrame stream_frame(stream_id, fin, offset, data);
264 frames.push_back(QuicFrame(&stream_frame));
265
266 return MakeMultipleFramesPacket(header_, frames);
267 }
268
223 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeRequestHeadersPacket( 269 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeRequestHeadersPacket(
224 QuicPacketNumber packet_number, 270 QuicPacketNumber packet_number,
225 QuicStreamId stream_id, 271 QuicStreamId stream_id,
226 bool should_include_version, 272 bool should_include_version,
227 bool fin, 273 bool fin,
228 SpdyPriority priority, 274 SpdyPriority priority,
229 const SpdyHeaderBlock& headers, 275 const SpdyHeaderBlock& headers,
230 size_t* spdy_headers_frame_length) { 276 size_t* spdy_headers_frame_length) {
231 InitializeHeader(packet_number, should_include_version); 277 InitializeHeader(packet_number, should_include_version);
232 scoped_ptr<SpdySerializedFrame> spdy_frame; 278 scoped_ptr<SpdySerializedFrame> spdy_frame;
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 const std::string& status) { 366 const std::string& status) {
321 SpdyHeaderBlock headers; 367 SpdyHeaderBlock headers;
322 headers[":status"] = status; 368 headers[":status"] = status;
323 headers["content-type"] = "text/plain"; 369 headers["content-type"] = "text/plain";
324 return headers; 370 return headers;
325 } 371 }
326 372
327 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakePacket( 373 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakePacket(
328 const QuicPacketHeader& header, 374 const QuicPacketHeader& header,
329 const QuicFrame& frame) { 375 const QuicFrame& frame) {
376 QuicFrames frames;
377 frames.push_back(frame);
378 return MakeMultipleFramesPacket(header, frames);
379 }
380
381 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeMultipleFramesPacket(
382 const QuicPacketHeader& header,
383 const QuicFrames& frames) {
330 QuicFramer framer(SupportedVersions(version_), QuicTime::Zero(), 384 QuicFramer framer(SupportedVersions(version_), QuicTime::Zero(),
331 Perspective::IS_CLIENT); 385 Perspective::IS_CLIENT);
332 QuicFrames frames;
333 frames.push_back(frame);
334 scoped_ptr<QuicPacket> packet( 386 scoped_ptr<QuicPacket> packet(
335 BuildUnsizedDataPacket(&framer, header, frames)); 387 BuildUnsizedDataPacket(&framer, header, frames));
336 char buffer[kMaxPacketSize]; 388 char buffer[kMaxPacketSize];
337 size_t encrypted_size = framer.EncryptPayload( 389 size_t encrypted_size = framer.EncryptPayload(
338 ENCRYPTION_NONE, header.packet_number, *packet, buffer, kMaxPacketSize); 390 ENCRYPTION_NONE, header.packet_number, *packet, buffer, kMaxPacketSize);
339 EXPECT_NE(0u, encrypted_size); 391 EXPECT_NE(0u, encrypted_size);
340 QuicEncryptedPacket encrypted(buffer, encrypted_size, false); 392 QuicEncryptedPacket encrypted(buffer, encrypted_size, false);
341 return scoped_ptr<QuicEncryptedPacket>(encrypted.Clone()); 393 return scoped_ptr<QuicEncryptedPacket>(encrypted.Clone());
342 } 394 }
343 395
344 void QuicTestPacketMaker::InitializeHeader(QuicPacketNumber packet_number, 396 void QuicTestPacketMaker::InitializeHeader(QuicPacketNumber packet_number,
345 bool should_include_version) { 397 bool should_include_version) {
346 header_.public_header.connection_id = connection_id_; 398 header_.public_header.connection_id = connection_id_;
347 header_.public_header.reset_flag = false; 399 header_.public_header.reset_flag = false;
348 header_.public_header.version_flag = should_include_version; 400 header_.public_header.version_flag = should_include_version;
349 header_.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; 401 header_.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER;
350 header_.packet_number = packet_number; 402 header_.packet_number = packet_number;
351 header_.fec_group = 0; 403 header_.fec_group = 0;
352 header_.entropy_flag = false; 404 header_.entropy_flag = false;
353 header_.fec_flag = false; 405 header_.fec_flag = false;
354 } 406 }
355 407
356 } // namespace test 408 } // namespace test
357 } // namespace net 409 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698