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

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

Issue 2096713002: Reduce SpdyHeaderBlock copies with move semantics. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: clear() does not work after all. Created 4 years, 6 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
« no previous file with comments | « net/spdy/buffered_spdy_framer.cc ('k') | net/spdy/spdy_network_transaction_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/spdy/buffered_spdy_framer.h" 5 #include "net/spdy/buffered_spdy_framer.h"
6 6
7 #include <utility>
8
7 #include "base/logging.h" 9 #include "base/logging.h"
8 #include "net/spdy/spdy_test_util_common.h" 10 #include "net/spdy/spdy_test_util_common.h"
9 #include "testing/platform_test.h" 11 #include "testing/platform_test.h"
10 12
11 namespace net { 13 namespace net {
12 14
13 namespace { 15 namespace {
14 16
15 class TestBufferedSpdyVisitor : public BufferedSpdyFramerVisitorInterface { 17 class TestBufferedSpdyVisitor : public BufferedSpdyFramerVisitorInterface {
16 public: 18 public:
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
235 return; 237 return;
236 } 238 }
237 SpdyHeaderBlock headers; 239 SpdyHeaderBlock headers;
238 headers["aa"] = "vv"; 240 headers["aa"] = "vv";
239 headers["bb"] = "ww"; 241 headers["bb"] = "ww";
240 BufferedSpdyFramer framer(spdy_version()); 242 BufferedSpdyFramer framer(spdy_version());
241 std::unique_ptr<SpdySerializedFrame> control_frame( 243 std::unique_ptr<SpdySerializedFrame> control_frame(
242 framer.CreateSynStream(1, // stream_id 244 framer.CreateSynStream(1, // stream_id
243 0, // associated_stream_id 245 0, // associated_stream_id
244 1, // priority 246 1, // priority
245 CONTROL_FLAG_NONE, &headers)); 247 CONTROL_FLAG_NONE, headers));
246 EXPECT_TRUE(control_frame.get() != NULL); 248 EXPECT_TRUE(control_frame.get() != NULL);
247 249
248 TestBufferedSpdyVisitor visitor(spdy_version()); 250 TestBufferedSpdyVisitor visitor(spdy_version());
249 visitor.SimulateInFramer( 251 visitor.SimulateInFramer(
250 reinterpret_cast<unsigned char*>(control_frame.get()->data()), 252 reinterpret_cast<unsigned char*>(control_frame.get()->data()),
251 control_frame.get()->size()); 253 control_frame.get()->size());
252 EXPECT_EQ(0, visitor.error_count_); 254 EXPECT_EQ(0, visitor.error_count_);
253 EXPECT_EQ(1, visitor.syn_frame_count_); 255 EXPECT_EQ(1, visitor.syn_frame_count_);
254 EXPECT_EQ(0, visitor.syn_reply_frame_count_); 256 EXPECT_EQ(0, visitor.syn_reply_frame_count_);
255 EXPECT_EQ(0, visitor.headers_frame_count_); 257 EXPECT_EQ(0, visitor.headers_frame_count_);
256 EXPECT_EQ(0, visitor.push_promise_frame_count_); 258 EXPECT_EQ(0, visitor.push_promise_frame_count_);
257 EXPECT_EQ(headers, visitor.headers_); 259 EXPECT_EQ(headers, visitor.headers_);
258 } 260 }
259 261
260 TEST_P(BufferedSpdyFramerTest, HeaderListTooLarge) { 262 TEST_P(BufferedSpdyFramerTest, HeaderListTooLarge) {
261 SpdyHeaderBlock headers; 263 SpdyHeaderBlock headers;
262 std::string long_header_value(256 * 1024, 'x'); 264 std::string long_header_value(256 * 1024, 'x');
263 headers["foo"] = long_header_value; 265 headers["foo"] = long_header_value;
264 BufferedSpdyFramer framer(spdy_version()); 266 BufferedSpdyFramer framer(spdy_version());
265 std::unique_ptr<SpdySerializedFrame> control_frame( 267 std::unique_ptr<SpdySerializedFrame> control_frame(
266 framer.CreateHeaders(1, // stream_id 268 framer.CreateHeaders(1, // stream_id
267 CONTROL_FLAG_NONE, 269 CONTROL_FLAG_NONE,
268 255, // weight 270 255, // weight
269 &headers)); 271 std::move(headers)));
270 EXPECT_TRUE(control_frame); 272 EXPECT_TRUE(control_frame);
271 273
272 TestBufferedSpdyVisitor visitor(spdy_version()); 274 TestBufferedSpdyVisitor visitor(spdy_version());
273 visitor.SimulateInFramer( 275 visitor.SimulateInFramer(
274 reinterpret_cast<unsigned char*>(control_frame.get()->data()), 276 reinterpret_cast<unsigned char*>(control_frame.get()->data()),
275 control_frame.get()->size()); 277 control_frame.get()->size());
276 278
277 EXPECT_EQ(1, visitor.error_count_); 279 EXPECT_EQ(1, visitor.error_count_);
278 EXPECT_EQ(0, visitor.syn_frame_count_); 280 EXPECT_EQ(0, visitor.syn_frame_count_);
279 EXPECT_EQ(0, visitor.syn_reply_frame_count_); 281 EXPECT_EQ(0, visitor.syn_reply_frame_count_);
280 EXPECT_EQ(0, visitor.headers_frame_count_); 282 EXPECT_EQ(0, visitor.headers_frame_count_);
281 EXPECT_EQ(0, visitor.push_promise_frame_count_); 283 EXPECT_EQ(0, visitor.push_promise_frame_count_);
282 EXPECT_EQ(SpdyHeaderBlock(), visitor.headers_); 284 EXPECT_EQ(SpdyHeaderBlock(), visitor.headers_);
283 } 285 }
284 286
285 TEST_P(BufferedSpdyFramerTest, ReadSynReplyHeaderBlock) { 287 TEST_P(BufferedSpdyFramerTest, ReadSynReplyHeaderBlock) {
286 if (spdy_version() > SPDY3) { 288 if (spdy_version() > SPDY3) {
287 // SYN_REPLY not supported in SPDY>3. 289 // SYN_REPLY not supported in SPDY>3.
288 return; 290 return;
289 } 291 }
290 SpdyHeaderBlock headers; 292 SpdyHeaderBlock headers;
291 headers["alpha"] = "beta"; 293 headers["alpha"] = "beta";
292 headers["gamma"] = "delta"; 294 headers["gamma"] = "delta";
293 BufferedSpdyFramer framer(spdy_version()); 295 BufferedSpdyFramer framer(spdy_version());
294 std::unique_ptr<SpdySerializedFrame> control_frame( 296 std::unique_ptr<SpdySerializedFrame> control_frame(
295 framer.CreateSynReply(1, // stream_id 297 framer.CreateSynReply(1, // stream_id
296 CONTROL_FLAG_NONE, &headers)); 298 CONTROL_FLAG_NONE, headers));
297 EXPECT_TRUE(control_frame.get() != NULL); 299 EXPECT_TRUE(control_frame.get() != NULL);
298 300
299 TestBufferedSpdyVisitor visitor(spdy_version()); 301 TestBufferedSpdyVisitor visitor(spdy_version());
300 visitor.SimulateInFramer( 302 visitor.SimulateInFramer(
301 reinterpret_cast<unsigned char*>(control_frame.get()->data()), 303 reinterpret_cast<unsigned char*>(control_frame.get()->data()),
302 control_frame.get()->size()); 304 control_frame.get()->size());
303 EXPECT_EQ(0, visitor.error_count_); 305 EXPECT_EQ(0, visitor.error_count_);
304 EXPECT_EQ(0, visitor.syn_frame_count_); 306 EXPECT_EQ(0, visitor.syn_frame_count_);
305 EXPECT_EQ(0, visitor.push_promise_frame_count_); 307 EXPECT_EQ(0, visitor.push_promise_frame_count_);
306 if (spdy_version() < HTTP2) { 308 if (spdy_version() < HTTP2) {
307 EXPECT_EQ(1, visitor.syn_reply_frame_count_); 309 EXPECT_EQ(1, visitor.syn_reply_frame_count_);
308 EXPECT_EQ(0, visitor.headers_frame_count_); 310 EXPECT_EQ(0, visitor.headers_frame_count_);
309 } else { 311 } else {
310 EXPECT_EQ(0, visitor.syn_reply_frame_count_); 312 EXPECT_EQ(0, visitor.syn_reply_frame_count_);
311 EXPECT_EQ(1, visitor.headers_frame_count_); 313 EXPECT_EQ(1, visitor.headers_frame_count_);
312 } 314 }
313 EXPECT_EQ(headers, visitor.headers_); 315 EXPECT_EQ(headers, visitor.headers_);
314 } 316 }
315 317
316 TEST_P(BufferedSpdyFramerTest, ReadHeadersHeaderBlock) { 318 TEST_P(BufferedSpdyFramerTest, ReadHeadersHeaderBlock) {
317 SpdyHeaderBlock headers; 319 SpdyHeaderBlock headers;
318 headers["alpha"] = "beta"; 320 headers["alpha"] = "beta";
319 headers["gamma"] = "delta"; 321 headers["gamma"] = "delta";
320 BufferedSpdyFramer framer(spdy_version()); 322 BufferedSpdyFramer framer(spdy_version());
321 std::unique_ptr<SpdySerializedFrame> control_frame( 323 std::unique_ptr<SpdySerializedFrame> control_frame(
322 framer.CreateHeaders(1, // stream_id 324 framer.CreateHeaders(1, // stream_id
323 CONTROL_FLAG_NONE, 325 CONTROL_FLAG_NONE,
324 255, // weight 326 255, // weight
325 &headers)); 327 headers));
326 EXPECT_TRUE(control_frame.get() != NULL); 328 EXPECT_TRUE(control_frame.get() != NULL);
327 329
328 TestBufferedSpdyVisitor visitor(spdy_version()); 330 TestBufferedSpdyVisitor visitor(spdy_version());
329 visitor.SimulateInFramer( 331 visitor.SimulateInFramer(
330 reinterpret_cast<unsigned char*>(control_frame.get()->data()), 332 reinterpret_cast<unsigned char*>(control_frame.get()->data()),
331 control_frame.get()->size()); 333 control_frame.get()->size());
332 EXPECT_EQ(0, visitor.error_count_); 334 EXPECT_EQ(0, visitor.error_count_);
333 EXPECT_EQ(0, visitor.syn_frame_count_); 335 EXPECT_EQ(0, visitor.syn_frame_count_);
334 EXPECT_EQ(0, visitor.syn_reply_frame_count_); 336 EXPECT_EQ(0, visitor.syn_reply_frame_count_);
335 EXPECT_EQ(1, visitor.headers_frame_count_); 337 EXPECT_EQ(1, visitor.headers_frame_count_);
336 EXPECT_EQ(0, visitor.push_promise_frame_count_); 338 EXPECT_EQ(0, visitor.push_promise_frame_count_);
337 EXPECT_EQ(headers, visitor.headers_); 339 EXPECT_EQ(headers, visitor.headers_);
338 } 340 }
339 341
340 TEST_P(BufferedSpdyFramerTest, ReadPushPromiseHeaderBlock) { 342 TEST_P(BufferedSpdyFramerTest, ReadPushPromiseHeaderBlock) {
341 if (spdy_version() < HTTP2) 343 if (spdy_version() < HTTP2)
342 return; 344 return;
343 SpdyHeaderBlock headers; 345 SpdyHeaderBlock headers;
344 headers["alpha"] = "beta"; 346 headers["alpha"] = "beta";
345 headers["gamma"] = "delta"; 347 headers["gamma"] = "delta";
346 BufferedSpdyFramer framer(spdy_version()); 348 BufferedSpdyFramer framer(spdy_version());
347 std::unique_ptr<SpdySerializedFrame> control_frame( 349 std::unique_ptr<SpdySerializedFrame> control_frame(
348 framer.CreatePushPromise(1, 2, &headers)); 350 framer.CreatePushPromise(1, 2, headers));
349 EXPECT_TRUE(control_frame.get() != NULL); 351 EXPECT_TRUE(control_frame.get() != NULL);
350 352
351 TestBufferedSpdyVisitor visitor(spdy_version()); 353 TestBufferedSpdyVisitor visitor(spdy_version());
352 visitor.SimulateInFramer( 354 visitor.SimulateInFramer(
353 reinterpret_cast<unsigned char*>(control_frame.get()->data()), 355 reinterpret_cast<unsigned char*>(control_frame.get()->data()),
354 control_frame.get()->size()); 356 control_frame.get()->size());
355 EXPECT_EQ(0, visitor.error_count_); 357 EXPECT_EQ(0, visitor.error_count_);
356 EXPECT_EQ(0, visitor.syn_frame_count_); 358 EXPECT_EQ(0, visitor.syn_frame_count_);
357 EXPECT_EQ(0, visitor.syn_reply_frame_count_); 359 EXPECT_EQ(0, visitor.syn_reply_frame_count_);
358 EXPECT_EQ(0, visitor.headers_frame_count_); 360 EXPECT_EQ(0, visitor.headers_frame_count_);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
401 altsvc_frame.size()); 403 altsvc_frame.size());
402 EXPECT_EQ(0, visitor.error_count_); 404 EXPECT_EQ(0, visitor.error_count_);
403 EXPECT_EQ(1, visitor.altsvc_count_); 405 EXPECT_EQ(1, visitor.altsvc_count_);
404 EXPECT_EQ(altsvc_stream_id, visitor.altsvc_stream_id_); 406 EXPECT_EQ(altsvc_stream_id, visitor.altsvc_stream_id_);
405 EXPECT_EQ(altsvc_origin, visitor.altsvc_origin_); 407 EXPECT_EQ(altsvc_origin, visitor.altsvc_origin_);
406 ASSERT_EQ(1u, visitor.altsvc_vector_.size()); 408 ASSERT_EQ(1u, visitor.altsvc_vector_.size());
407 EXPECT_EQ(alternative_service, visitor.altsvc_vector_[0]); 409 EXPECT_EQ(alternative_service, visitor.altsvc_vector_[0]);
408 } 410 }
409 411
410 } // namespace net 412 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/buffered_spdy_framer.cc ('k') | net/spdy/spdy_network_transaction_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698