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

Side by Side Diff: net/tools/flip_server/spdy_interface_test.cc

Issue 2102253003: Make SpdyHeaderBlock non-copyable. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: iOS fix. 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
« no previous file with comments | « net/tools/flip_server/spdy_interface.cc ('k') | net/tools/quic/end_to_end_test.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 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/tools/flip_server/spdy_interface.h" 5 #include "net/tools/flip_server/spdy_interface.h"
6 6
7 #include <list> 7 #include <list>
8 #include <memory> 8 #include <memory>
9 9
10 #include "base/strings/string_piece.h" 10 #include "base/strings/string_piece.h"
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 const char* data; 42 const char* data;
43 size_t size; 43 size_t size;
44 std::string string; 44 std::string string;
45 }; 45 };
46 46
47 class SpdyFramerVisitor : public BufferedSpdyFramerVisitorInterface { 47 class SpdyFramerVisitor : public BufferedSpdyFramerVisitorInterface {
48 public: 48 public:
49 virtual ~SpdyFramerVisitor() {} 49 virtual ~SpdyFramerVisitor() {}
50 MOCK_METHOD1(OnError, void(SpdyFramer::SpdyError)); 50 MOCK_METHOD1(OnError, void(SpdyFramer::SpdyError));
51 MOCK_METHOD2(OnStreamError, void(SpdyStreamId, const std::string&)); 51 MOCK_METHOD2(OnStreamError, void(SpdyStreamId, const std::string&));
52 MOCK_METHOD6(OnSynStream, 52 // SaveArg cannot be used on non-copyable types like SpdyHeaderBlock.
53 void OnSynStream(SpdyStreamId stream_id,
54 SpdyStreamId associated_stream_id,
55 SpdyPriority priority,
56 bool fin,
57 bool unidirectional,
58 const SpdyHeaderBlock& headers) override {
59 actual_header_block_ = headers.Clone();
60 OnSynStreamMock(stream_id, associated_stream_id, priority, fin,
61 unidirectional, headers);
62 }
63 MOCK_METHOD6(OnSynStreamMock,
53 void(SpdyStreamId, 64 void(SpdyStreamId,
54 SpdyStreamId, 65 SpdyStreamId,
55 SpdyPriority, 66 SpdyPriority,
56 bool, 67 bool,
57 bool, 68 bool,
58 const SpdyHeaderBlock&)); 69 const SpdyHeaderBlock&));
59 MOCK_METHOD3(OnSynReply, void(SpdyStreamId, bool, const SpdyHeaderBlock&)); 70 void OnSynReply(SpdyStreamId stream_id,
60 MOCK_METHOD7(OnHeaders, 71 bool fin,
72 const SpdyHeaderBlock& headers) override {
73 actual_header_block_ = headers.Clone();
74 OnSynReplyMock(stream_id, fin, headers);
75 }
76 MOCK_METHOD3(OnSynReplyMock,
77 void(SpdyStreamId, bool, const SpdyHeaderBlock&));
78 void OnHeaders(SpdyStreamId stream_id,
79 bool has_priority,
80 int weight,
81 SpdyStreamId parent_stream_id,
82 bool exclusive,
83 bool fin,
84 const SpdyHeaderBlock& headers) override {
85 actual_header_block_ = headers.Clone();
86 OnHeadersMock(stream_id, has_priority, weight, parent_stream_id, exclusive,
87 fin, headers);
88 }
89 MOCK_METHOD7(OnHeadersMock,
61 void(SpdyStreamId stream_id, 90 void(SpdyStreamId stream_id,
62 bool has_priority, 91 bool has_priority,
63 int weight, 92 int weight,
64 SpdyStreamId parent_stream_id, 93 SpdyStreamId parent_stream_id,
65 bool exclusive, 94 bool exclusive,
66 bool fin, 95 bool fin,
67 const SpdyHeaderBlock& headers)); 96 const SpdyHeaderBlock& headers));
68 MOCK_METHOD3(OnDataFrameHeader, void(SpdyStreamId, size_t, bool)); 97 MOCK_METHOD3(OnDataFrameHeader, void(SpdyStreamId, size_t, bool));
69 MOCK_METHOD3(OnStreamFrameData, void(SpdyStreamId, const char*, size_t)); 98 MOCK_METHOD3(OnStreamFrameData, void(SpdyStreamId, const char*, size_t));
70 MOCK_METHOD1(OnStreamEnd, void(SpdyStreamId)); 99 MOCK_METHOD1(OnStreamEnd, void(SpdyStreamId));
71 MOCK_METHOD2(OnStreamPadding, void(SpdyStreamId, size_t)); 100 MOCK_METHOD2(OnStreamPadding, void(SpdyStreamId, size_t));
72 MOCK_METHOD1(OnHeaderFrameStart, 101 MOCK_METHOD1(OnHeaderFrameStart,
73 SpdyHeadersHandlerInterface*(SpdyStreamId stream_id)); 102 SpdyHeadersHandlerInterface*(SpdyStreamId stream_id));
74 MOCK_METHOD2(OnHeaderFrameEnd, 103 MOCK_METHOD2(OnHeaderFrameEnd,
75 void(SpdyStreamId stream_id, bool end_headers)); 104 void(SpdyStreamId stream_id, bool end_headers));
76 MOCK_METHOD1(OnSettings, void(bool clear_persisted)); 105 MOCK_METHOD1(OnSettings, void(bool clear_persisted));
77 MOCK_METHOD3(OnSetting, void(SpdySettingsIds, uint8_t, uint32_t)); 106 MOCK_METHOD3(OnSetting, void(SpdySettingsIds, uint8_t, uint32_t));
78 MOCK_METHOD2(OnPing, void(SpdyPingId unique_id, bool is_ack)); 107 MOCK_METHOD2(OnPing, void(SpdyPingId unique_id, bool is_ack));
79 MOCK_METHOD2(OnRstStream, void(SpdyStreamId, SpdyRstStreamStatus)); 108 MOCK_METHOD2(OnRstStream, void(SpdyStreamId, SpdyRstStreamStatus));
80 MOCK_METHOD3(OnGoAway, void(SpdyStreamId, SpdyGoAwayStatus, StringPiece)); 109 MOCK_METHOD3(OnGoAway, void(SpdyStreamId, SpdyGoAwayStatus, StringPiece));
81 MOCK_METHOD2(OnWindowUpdate, void(SpdyStreamId, int)); 110 MOCK_METHOD2(OnWindowUpdate, void(SpdyStreamId, int));
82 MOCK_METHOD3(OnPushPromise, 111 MOCK_METHOD3(OnPushPromise,
83 void(SpdyStreamId, SpdyStreamId, const SpdyHeaderBlock&)); 112 void(SpdyStreamId, SpdyStreamId, const SpdyHeaderBlock&));
84 MOCK_METHOD3(OnAltSvc, 113 MOCK_METHOD3(OnAltSvc,
85 void(SpdyStreamId, 114 void(SpdyStreamId,
86 base::StringPiece, 115 base::StringPiece,
87 const SpdyAltSvcWireFormat::AlternativeServiceVector&)); 116 const SpdyAltSvcWireFormat::AlternativeServiceVector&));
88 MOCK_METHOD2(OnUnknownFrame, bool(SpdyStreamId stream_id, int frame_type)); 117 MOCK_METHOD2(OnUnknownFrame, bool(SpdyStreamId stream_id, int frame_type));
118
119 SpdyHeaderBlock actual_header_block_;
89 }; 120 };
90 121
91 class FakeSMConnection : public SMConnection { 122 class FakeSMConnection : public SMConnection {
92 public: 123 public:
93 FakeSMConnection(EpollServer* epoll_server, 124 FakeSMConnection(EpollServer* epoll_server,
94 SSLState* ssl_state, 125 SSLState* ssl_state,
95 MemoryCache* memory_cache, 126 MemoryCache* memory_cache,
96 FlipAcceptor* acceptor, 127 FlipAcceptor* acceptor,
97 std::string log_prefix) 128 std::string log_prefix)
98 : SMConnection(epoll_server, 129 : SMConnection(epoll_server,
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
359 memory_cache_->InsertFile(&headers, filename, ""); 390 memory_cache_->InsertFile(&headers, filename, "");
360 mci.file_data = memory_cache_->GetFileData(filename); 391 mci.file_data = memory_cache_->GetFileData(filename);
361 } 392 }
362 393
363 interface_->AddToOutputOrder(mci); 394 interface_->AddToOutputOrder(mci);
364 ASSERT_TRUE(HasStream(stream_id)); 395 ASSERT_TRUE(HasStream(stream_id));
365 } 396 }
366 397
367 TEST_P(SpdySMProxyTest, SendErrorNotFound) { 398 TEST_P(SpdySMProxyTest, SendErrorNotFound) {
368 uint32_t stream_id = 82; 399 uint32_t stream_id = 82;
369 SpdyHeaderBlock actual_header_block;
370 const char* actual_data; 400 const char* actual_data;
371 size_t actual_size; 401 size_t actual_size;
372 testing::MockFunction<void(int)> checkpoint; // NOLINT 402 testing::MockFunction<void(int)> checkpoint; // NOLINT
373 403
374 interface_->SendErrorNotFound(stream_id); 404 interface_->SendErrorNotFound(stream_id);
375 405
376 ASSERT_EQ(2u, connection_->output_list()->size()); 406 ASSERT_EQ(2u, connection_->output_list()->size());
377 407
378 { 408 {
379 InSequence s; 409 InSequence s;
380 if (GetParam() < HTTP2) { 410 if (GetParam() < HTTP2) {
381 EXPECT_CALL(*spdy_framer_visitor_, 411 EXPECT_CALL(*spdy_framer_visitor_, OnSynReplyMock(stream_id, false, _));
382 OnSynReply(stream_id, false, _))
383 .WillOnce(SaveArg<2>(&actual_header_block));
384 } else { 412 } else {
385 EXPECT_CALL(*spdy_framer_visitor_, 413 EXPECT_CALL(*spdy_framer_visitor_,
386 OnHeaders(stream_id, /*has_priority=*/false, _, _, _, 414 OnHeadersMock(stream_id, /*has_priority=*/false, _, _, _,
387 /*fin=*/false, _)) 415 /*fin=*/false, _));
388 .WillOnce(SaveArg<6>(&actual_header_block));
389 } 416 }
390 EXPECT_CALL(checkpoint, Call(0)); 417 EXPECT_CALL(checkpoint, Call(0));
391 EXPECT_CALL(*spdy_framer_visitor_, 418 EXPECT_CALL(*spdy_framer_visitor_,
392 OnDataFrameHeader(stream_id, _, true)); 419 OnDataFrameHeader(stream_id, _, true));
393 EXPECT_CALL(*spdy_framer_visitor_, OnStreamFrameData(stream_id, _, _)) 420 EXPECT_CALL(*spdy_framer_visitor_, OnStreamFrameData(stream_id, _, _))
394 .Times(1) 421 .Times(1)
395 .WillOnce(DoAll(SaveArg<1>(&actual_data), SaveArg<2>(&actual_size))); 422 .WillOnce(DoAll(SaveArg<1>(&actual_data), SaveArg<2>(&actual_size)));
396 EXPECT_CALL(*spdy_framer_visitor_, OnStreamFrameData(stream_id, NULL, 0)) 423 EXPECT_CALL(*spdy_framer_visitor_, OnStreamFrameData(stream_id, NULL, 0))
397 .Times(1); 424 .Times(1);
398 } 425 }
399 426
400 std::list<DataFrame*>::const_iterator i = connection_->output_list()->begin(); 427 std::list<DataFrame*>::const_iterator i = connection_->output_list()->begin();
401 DataFrame* df = *i++; 428 DataFrame* df = *i++;
402 spdy_framer_->ProcessInput(df->data, df->size); 429 spdy_framer_->ProcessInput(df->data, df->size);
403 checkpoint.Call(0); 430 checkpoint.Call(0);
404 df = *i++; 431 df = *i++;
405 spdy_framer_->ProcessInput(df->data, df->size); 432 spdy_framer_->ProcessInput(df->data, df->size);
406 433
407 ASSERT_EQ(2, spdy_framer_->frames_received()); 434 ASSERT_EQ(2, spdy_framer_->frames_received());
408 ASSERT_EQ(2u, actual_header_block.size()); 435 ASSERT_EQ(2u, spdy_framer_visitor_->actual_header_block_.size());
409 ASSERT_EQ("404 Not Found", actual_header_block[":status"]); 436 ASSERT_EQ("404 Not Found",
410 ASSERT_EQ("HTTP/1.1", actual_header_block[":version"]); 437 spdy_framer_visitor_->actual_header_block_[":status"]);
438 ASSERT_EQ("HTTP/1.1", spdy_framer_visitor_->actual_header_block_[":version"]);
411 ASSERT_EQ("wtf?", StringPiece(actual_data, actual_size)); 439 ASSERT_EQ("wtf?", StringPiece(actual_data, actual_size));
412 } 440 }
413 441
414 TEST_P(SpdySMProxyTest, SendSynStream) { 442 TEST_P(SpdySMProxyTest, SendSynStream) {
415 uint32_t stream_id = 82; 443 uint32_t stream_id = 82;
416 BalsaHeaders headers; 444 BalsaHeaders headers;
417 SpdyHeaderBlock actual_header_block;
418 headers.AppendHeader("key1", "value1"); 445 headers.AppendHeader("key1", "value1");
419 headers.AppendHeader("Host", "www.example.com"); 446 headers.AppendHeader("Host", "www.example.com");
420 headers.SetRequestFirstlineFromStringPieces("GET", "/path", "HTTP/1.1"); 447 headers.SetRequestFirstlineFromStringPieces("GET", "/path", "HTTP/1.1");
421 448
422 interface_->SendSynStream(stream_id, headers); 449 interface_->SendSynStream(stream_id, headers);
423 450
424 ASSERT_EQ(1u, connection_->output_list()->size()); 451 ASSERT_EQ(1u, connection_->output_list()->size());
425 std::list<DataFrame*>::const_iterator i = connection_->output_list()->begin(); 452 std::list<DataFrame*>::const_iterator i = connection_->output_list()->begin();
426 DataFrame* df = *i++; 453 DataFrame* df = *i++;
427 454
428 { 455 {
429 InSequence s; 456 InSequence s;
430 EXPECT_CALL(*spdy_framer_visitor_, 457 EXPECT_CALL(*spdy_framer_visitor_,
431 OnSynStream(stream_id, 0, _, false, false, _)) 458 OnSynStreamMock(stream_id, 0, _, false, false, _));
432 .WillOnce(SaveArg<5>(&actual_header_block));
433 } 459 }
434 460
435 spdy_framer_->ProcessInput(df->data, df->size); 461 spdy_framer_->ProcessInput(df->data, df->size);
436 ASSERT_EQ(1, spdy_framer_->frames_received()); 462 ASSERT_EQ(1, spdy_framer_->frames_received());
437 ASSERT_EQ(5u, actual_header_block.size()); 463 ASSERT_EQ(5u, spdy_framer_visitor_->actual_header_block_.size());
438 ASSERT_EQ("GET", actual_header_block[":method"]); 464 ASSERT_EQ("GET", spdy_framer_visitor_->actual_header_block_[":method"]);
439 ASSERT_EQ("HTTP/1.1", actual_header_block[":version"]); 465 ASSERT_EQ("HTTP/1.1", spdy_framer_visitor_->actual_header_block_[":version"]);
440 ASSERT_EQ("/path", actual_header_block[":path"]); 466 ASSERT_EQ("/path", spdy_framer_visitor_->actual_header_block_[":path"]);
441 ASSERT_EQ("www.example.com", actual_header_block[":host"]); 467 ASSERT_EQ("www.example.com",
442 ASSERT_EQ("value1", actual_header_block["key1"]); 468 spdy_framer_visitor_->actual_header_block_[":host"]);
469 ASSERT_EQ("value1", spdy_framer_visitor_->actual_header_block_["key1"]);
443 } 470 }
444 471
445 TEST_P(SpdySMProxyTest, SendSynReply) { 472 TEST_P(SpdySMProxyTest, SendSynReply) {
446 uint32_t stream_id = 82; 473 uint32_t stream_id = 82;
447 BalsaHeaders headers; 474 BalsaHeaders headers;
448 SpdyHeaderBlock actual_header_block;
449 headers.AppendHeader("key1", "value1"); 475 headers.AppendHeader("key1", "value1");
450 headers.SetResponseFirstlineFromStringPieces("HTTP/1.1", "200", "OK"); 476 headers.SetResponseFirstlineFromStringPieces("HTTP/1.1", "200", "OK");
451 477
452 interface_->SendSynReply(stream_id, headers); 478 interface_->SendSynReply(stream_id, headers);
453 479
454 ASSERT_EQ(1u, connection_->output_list()->size()); 480 ASSERT_EQ(1u, connection_->output_list()->size());
455 std::list<DataFrame*>::const_iterator i = connection_->output_list()->begin(); 481 std::list<DataFrame*>::const_iterator i = connection_->output_list()->begin();
456 DataFrame* df = *i++; 482 DataFrame* df = *i++;
457 483
458 { 484 {
459 InSequence s; 485 InSequence s;
460 if (GetParam() < HTTP2) { 486 if (GetParam() < HTTP2) {
461 EXPECT_CALL(*spdy_framer_visitor_, OnSynReply(stream_id, false, _)) 487 EXPECT_CALL(*spdy_framer_visitor_, OnSynReplyMock(stream_id, false, _));
462 .WillOnce(SaveArg<2>(&actual_header_block));
463 } else { 488 } else {
464 EXPECT_CALL(*spdy_framer_visitor_, 489 EXPECT_CALL(*spdy_framer_visitor_,
465 OnHeaders(stream_id, /*has_priority=*/false, _, _, _, 490 OnHeadersMock(stream_id, /*has_priority=*/false, _, _, _,
466 /*fin=*/false, _)) 491 /*fin=*/false, _));
467 .WillOnce(SaveArg<6>(&actual_header_block));
468 } 492 }
469 } 493 }
470 494
471 spdy_framer_->ProcessInput(df->data, df->size); 495 spdy_framer_->ProcessInput(df->data, df->size);
472 ASSERT_EQ(1, spdy_framer_->frames_received()); 496 ASSERT_EQ(1, spdy_framer_->frames_received());
473 ASSERT_EQ(3u, actual_header_block.size()); 497 ASSERT_EQ(3u, spdy_framer_visitor_->actual_header_block_.size());
474 ASSERT_EQ("200 OK", actual_header_block[":status"]); 498 ASSERT_EQ("200 OK", spdy_framer_visitor_->actual_header_block_[":status"]);
475 ASSERT_EQ("HTTP/1.1", actual_header_block[":version"]); 499 ASSERT_EQ("HTTP/1.1", spdy_framer_visitor_->actual_header_block_[":version"]);
476 ASSERT_EQ("value1", actual_header_block["key1"]); 500 ASSERT_EQ("value1", spdy_framer_visitor_->actual_header_block_["key1"]);
477 } 501 }
478 502
479 TEST_P(SpdySMProxyTest, SendDataFrame) { 503 TEST_P(SpdySMProxyTest, SendDataFrame) {
480 uint32_t stream_id = 133; 504 uint32_t stream_id = 133;
481 SpdyDataFlags flags = DATA_FLAG_NONE; 505 SpdyDataFlags flags = DATA_FLAG_NONE;
482 const char* actual_data; 506 const char* actual_data;
483 size_t actual_size; 507 size_t actual_size;
484 508
485 interface_->SendDataFrame(stream_id, "hello", 5, flags, true); 509 interface_->SendDataFrame(stream_id, "hello", 5, flags, true);
486 510
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
564 BalsaHeaders headers; 588 BalsaHeaders headers;
565 memory_cache_->InsertFile(&headers, filename, ""); 589 memory_cache_->InsertFile(&headers, filename, "");
566 } 590 }
567 591
568 interface_->NewStream(stream_id, 0, filename); 592 interface_->NewStream(stream_id, 0, filename);
569 ASSERT_TRUE(HasStream(stream_id)); 593 ASSERT_TRUE(HasStream(stream_id));
570 } 594 }
571 595
572 TEST_P(SpdySMServerTest, NewStreamError) { 596 TEST_P(SpdySMServerTest, NewStreamError) {
573 uint32_t stream_id = 82; 597 uint32_t stream_id = 82;
574 SpdyHeaderBlock actual_header_block;
575 const char* actual_data; 598 const char* actual_data;
576 size_t actual_size; 599 size_t actual_size;
577 testing::MockFunction<void(int)> checkpoint; // NOLINT 600 testing::MockFunction<void(int)> checkpoint; // NOLINT
578 601
579 interface_->NewStream(stream_id, 0, "nonexistingfile"); 602 interface_->NewStream(stream_id, 0, "nonexistingfile");
580 603
581 ASSERT_EQ(2u, connection_->output_list()->size()); 604 ASSERT_EQ(2u, connection_->output_list()->size());
582 605
583 { 606 {
584 InSequence s; 607 InSequence s;
585 if (GetParam() < HTTP2) { 608 if (GetParam() < HTTP2) {
586 EXPECT_CALL(*spdy_framer_visitor_, OnSynReply(stream_id, false, _)) 609 EXPECT_CALL(*spdy_framer_visitor_, OnSynReplyMock(stream_id, false, _));
587 .WillOnce(SaveArg<2>(&actual_header_block));
588 } else { 610 } else {
589 EXPECT_CALL(*spdy_framer_visitor_, 611 EXPECT_CALL(*spdy_framer_visitor_,
590 OnHeaders(stream_id, /*has_priority=*/false, _, _, _, 612 OnHeadersMock(stream_id, /*has_priority=*/false, _, _, _,
591 /*fin=*/false, _)) 613 /*fin=*/false, _));
592 .WillOnce(SaveArg<6>(&actual_header_block));
593 } 614 }
594 EXPECT_CALL(checkpoint, Call(0)); 615 EXPECT_CALL(checkpoint, Call(0));
595 EXPECT_CALL(*spdy_framer_visitor_, 616 EXPECT_CALL(*spdy_framer_visitor_,
596 OnDataFrameHeader(stream_id, _, true)); 617 OnDataFrameHeader(stream_id, _, true));
597 EXPECT_CALL(*spdy_framer_visitor_, OnStreamFrameData(stream_id, _, _)) 618 EXPECT_CALL(*spdy_framer_visitor_, OnStreamFrameData(stream_id, _, _))
598 .Times(1) 619 .Times(1)
599 .WillOnce(DoAll(SaveArg<1>(&actual_data), SaveArg<2>(&actual_size))); 620 .WillOnce(DoAll(SaveArg<1>(&actual_data), SaveArg<2>(&actual_size)));
600 EXPECT_CALL(*spdy_framer_visitor_, OnStreamFrameData(stream_id, NULL, 0)) 621 EXPECT_CALL(*spdy_framer_visitor_, OnStreamFrameData(stream_id, NULL, 0))
601 .Times(1); 622 .Times(1);
602 } 623 }
603 624
604 std::list<DataFrame*>::const_iterator i = connection_->output_list()->begin(); 625 std::list<DataFrame*>::const_iterator i = connection_->output_list()->begin();
605 DataFrame* df = *i++; 626 DataFrame* df = *i++;
606 spdy_framer_->ProcessInput(df->data, df->size); 627 spdy_framer_->ProcessInput(df->data, df->size);
607 checkpoint.Call(0); 628 checkpoint.Call(0);
608 df = *i++; 629 df = *i++;
609 spdy_framer_->ProcessInput(df->data, df->size); 630 spdy_framer_->ProcessInput(df->data, df->size);
610 631
611 ASSERT_EQ(2, spdy_framer_->frames_received()); 632 ASSERT_EQ(2, spdy_framer_->frames_received());
612 ASSERT_EQ(2u, actual_header_block.size()); 633 ASSERT_EQ(2u, spdy_framer_visitor_->actual_header_block_.size());
613 ASSERT_EQ("404 Not Found", actual_header_block["status"]); 634 ASSERT_EQ("404 Not Found",
614 ASSERT_EQ("HTTP/1.1", actual_header_block["version"]); 635 spdy_framer_visitor_->actual_header_block_["status"]);
636 ASSERT_EQ("HTTP/1.1", spdy_framer_visitor_->actual_header_block_["version"]);
615 ASSERT_EQ("wtf?", StringPiece(actual_data, actual_size)); 637 ASSERT_EQ("wtf?", StringPiece(actual_data, actual_size));
616 } 638 }
617 639
618 } // namespace 640 } // namespace
619 641
620 } // namespace net 642 } // namespace net
OLDNEW
« no previous file with comments | « net/tools/flip_server/spdy_interface.cc ('k') | net/tools/quic/end_to_end_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698