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

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

Issue 93793004: Format and Refactor Flip Server. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 7 years 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/flip_server/spdy_ssl.h » ('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 8
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/strings/string_piece.h" 10 #include "base/strings/string_piece.h"
(...skipping 14 matching lines...) Expand all
25 using ::testing::InvokeWithoutArgs; 25 using ::testing::InvokeWithoutArgs;
26 using ::testing::Return; 26 using ::testing::Return;
27 using ::testing::SaveArg; 27 using ::testing::SaveArg;
28 using ::testing::Values; 28 using ::testing::Values;
29 29
30 namespace { 30 namespace {
31 31
32 struct StringSaver { 32 struct StringSaver {
33 public: 33 public:
34 StringSaver() : data(NULL), size(0) {} 34 StringSaver() : data(NULL), size(0) {}
35 void Save() { 35 void Save() { string = std::string(data, size); }
36 string = std::string(data, size);
37 }
38 36
39 const char* data; 37 const char* data;
40 size_t size; 38 size_t size;
41 std::string string; 39 std::string string;
42 }; 40 };
43 41
44 class SpdyFramerVisitor : public BufferedSpdyFramerVisitorInterface { 42 class SpdyFramerVisitor : public BufferedSpdyFramerVisitorInterface {
45 public: 43 public:
46 virtual ~SpdyFramerVisitor() {} 44 virtual ~SpdyFramerVisitor() {}
47 MOCK_METHOD1(OnError, void(SpdyFramer::SpdyError)); 45 MOCK_METHOD1(OnError, void(SpdyFramer::SpdyError));
48 MOCK_METHOD2(OnStreamError, void(SpdyStreamId, const std::string&)); 46 MOCK_METHOD2(OnStreamError, void(SpdyStreamId, const std::string&));
49 MOCK_METHOD7(OnSynStream, void(SpdyStreamId, 47 MOCK_METHOD7(OnSynStream,
50 SpdyStreamId, 48 void(SpdyStreamId,
51 SpdyPriority, 49 SpdyStreamId,
52 uint8, 50 SpdyPriority,
53 bool, 51 uint8,
54 bool, 52 bool,
55 const SpdyHeaderBlock&)); 53 bool,
54 const SpdyHeaderBlock&));
56 MOCK_METHOD3(OnSynStream, void(SpdyStreamId, bool, const SpdyHeaderBlock&)); 55 MOCK_METHOD3(OnSynStream, void(SpdyStreamId, bool, const SpdyHeaderBlock&));
57 MOCK_METHOD3(OnSynReply, void(SpdyStreamId, bool, const SpdyHeaderBlock&)); 56 MOCK_METHOD3(OnSynReply, void(SpdyStreamId, bool, const SpdyHeaderBlock&));
58 MOCK_METHOD3(OnHeaders, void(SpdyStreamId, bool, const SpdyHeaderBlock&)); 57 MOCK_METHOD3(OnHeaders, void(SpdyStreamId, bool, const SpdyHeaderBlock&));
59 MOCK_METHOD3(OnDataFrameHeader, void(SpdyStreamId, size_t, bool)); 58 MOCK_METHOD3(OnDataFrameHeader, void(SpdyStreamId, size_t, bool));
60 MOCK_METHOD4(OnStreamFrameData, void(SpdyStreamId, 59 MOCK_METHOD4(OnStreamFrameData, void(SpdyStreamId,
61 const char*, 60 const char*,
62 size_t, 61 size_t,
63 bool)); 62 bool));
64 MOCK_METHOD1(OnSettings, void(bool clear_persisted)); 63 MOCK_METHOD1(OnSettings, void(bool clear_persisted));
65 MOCK_METHOD3(OnSetting, void(SpdySettingsIds, uint8, uint32)); 64 MOCK_METHOD3(OnSetting, void(SpdySettingsIds, uint8, uint32));
(...skipping 11 matching lines...) Expand all
77 MemoryCache* memory_cache, 76 MemoryCache* memory_cache,
78 FlipAcceptor* acceptor, 77 FlipAcceptor* acceptor,
79 std::string log_prefix) 78 std::string log_prefix)
80 : SMConnection(epoll_server, 79 : SMConnection(epoll_server,
81 ssl_state, 80 ssl_state,
82 memory_cache, 81 memory_cache,
83 acceptor, 82 acceptor,
84 log_prefix) {} 83 log_prefix) {}
85 84
86 MOCK_METHOD0(Cleanup, void()); 85 MOCK_METHOD0(Cleanup, void());
87 MOCK_METHOD8(InitSMConnection, void(SMConnectionPoolInterface*, 86 MOCK_METHOD8(InitSMConnection,
88 SMInterface*, 87 void(SMConnectionPoolInterface*,
89 EpollServer*, 88 SMInterface*,
90 int, 89 EpollServer*,
91 std::string, 90 int,
92 std::string, 91 std::string,
93 std::string, 92 std::string,
94 bool)); 93 std::string,
94 bool));
95 }; 95 };
96 96
97 // This class is almost SpdySM, except one function. 97 // This class is almost SpdySM, except one function.
98 // This class is the test target of tests in this file. 98 // This class is the test target of tests in this file.
99 class TestSpdySM : public SpdySM { 99 class TestSpdySM : public SpdySM {
100 public: 100 public:
101 virtual ~TestSpdySM() {} 101 virtual ~TestSpdySM() {}
102 TestSpdySM(SMConnection* connection, 102 TestSpdySM(SMConnection* connection,
103 SMInterface* sm_http_interface, 103 SMInterface* sm_http_interface,
104 EpollServer* epoll_server, 104 EpollServer* epoll_server,
105 MemoryCache* memory_cache, 105 MemoryCache* memory_cache,
106 FlipAcceptor* acceptor, 106 FlipAcceptor* acceptor,
107 SpdyMajorVersion version) 107 SpdyMajorVersion version)
108 : SpdySM(connection, 108 : SpdySM(connection,
109 sm_http_interface, 109 sm_http_interface,
110 epoll_server, 110 epoll_server,
111 memory_cache, 111 memory_cache,
112 acceptor, 112 acceptor,
113 version) {} 113 version) {}
114 114
115 MOCK_METHOD2(FindOrMakeNewSMConnectionInterface, 115 MOCK_METHOD2(FindOrMakeNewSMConnectionInterface,
116 SMInterface*(const std::string&, const std::string&)); 116 SMInterface*(const std::string&, const std::string&));
117 }; 117 };
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 }; 188 };
189 189
190 class SpdySMProxyTest : public SpdySMTestBase { 190 class SpdySMProxyTest : public SpdySMTestBase {
191 public: 191 public:
192 SpdySMProxyTest() : SpdySMTestBase(FLIP_HANDLER_PROXY) {} 192 SpdySMProxyTest() : SpdySMTestBase(FLIP_HANDLER_PROXY) {}
193 virtual ~SpdySMProxyTest() {} 193 virtual ~SpdySMProxyTest() {}
194 }; 194 };
195 195
196 class SpdySMServerTest : public SpdySMTestBase { 196 class SpdySMServerTest : public SpdySMTestBase {
197 public: 197 public:
198 SpdySMServerTest(): SpdySMTestBase(FLIP_HANDLER_SPDY_SERVER) {} 198 SpdySMServerTest() : SpdySMTestBase(FLIP_HANDLER_SPDY_SERVER) {}
199 virtual ~SpdySMServerTest() {} 199 virtual ~SpdySMServerTest() {}
200 }; 200 };
201 201
202 INSTANTIATE_TEST_CASE_P(SpdySMProxyTest, 202 INSTANTIATE_TEST_CASE_P(SpdySMProxyTest,
203 SpdySMProxyTest, 203 SpdySMProxyTest,
204 Values(SPDY2, SPDY3, SPDY4)); 204 Values(SPDY2, SPDY3, SPDY4));
205 INSTANTIATE_TEST_CASE_P(SpdySMServerTest, 205 INSTANTIATE_TEST_CASE_P(SpdySMServerTest, SpdySMServerTest, Values(SPDY2));
206 SpdySMServerTest,
207 Values(SPDY2));
208 206
209 TEST_P(SpdySMProxyTest, InitSMConnection) { 207 TEST_P(SpdySMProxyTest, InitSMConnection) {
210 { 208 {
211 InSequence s; 209 InSequence s;
212 EXPECT_CALL(*connection_, InitSMConnection(_, _, _, _, _, _, _, _)); 210 EXPECT_CALL(*connection_, InitSMConnection(_, _, _, _, _, _, _, _));
213 } 211 }
214 interface_->InitSMConnection(NULL, 212 interface_->InitSMConnection(
215 NULL, 213 NULL, NULL, epoll_server_.get(), -1, "", "", "", false);
216 epoll_server_.get(),
217 -1,
218 "",
219 "",
220 "",
221 false);
222 } 214 }
223 215
224 TEST_P(SpdySMProxyTest, OnSynStream_SPDY2) { 216 TEST_P(SpdySMProxyTest, OnSynStream_SPDY2) {
225 if (GetParam() != SPDY2) { 217 if (GetParam() != SPDY2) {
226 // This test case is for SPDY2. 218 // This test case is for SPDY2.
227 return; 219 return;
228 } 220 }
229 BufferedSpdyFramerVisitorInterface* visitor = interface_.get(); 221 BufferedSpdyFramerVisitorInterface* visitor = interface_.get();
230 scoped_ptr<MockSMInterface> mock_interface(new MockSMInterface); 222 scoped_ptr<MockSMInterface> mock_interface(new MockSMInterface);
231 uint32 stream_id = 92; 223 uint32 stream_id = 92;
232 uint32 associated_id = 43; 224 uint32 associated_id = 43;
233 std::string expected = "GET /path HTTP/1.0\r\n" 225 std::string expected = "GET /path HTTP/1.0\r\n"
234 "Host: 127.0.0.1\r\n" 226 "Host: 127.0.0.1\r\n"
235 "hoge: fuga\r\n\r\n"; 227 "hoge: fuga\r\n\r\n";
236 SpdyHeaderBlock block; 228 SpdyHeaderBlock block;
237 block["method"] = "GET"; 229 block["method"] = "GET";
238 block["url"] = "/path"; 230 block["url"] = "/path";
239 block["scheme"] = "http"; 231 block["scheme"] = "http";
240 block["version"] = "HTTP/1.0"; 232 block["version"] = "HTTP/1.0";
241 block["hoge"] = "fuga"; 233 block["hoge"] = "fuga";
242 StringSaver saver; 234 StringSaver saver;
243 { 235 {
244 InSequence s; 236 InSequence s;
245 EXPECT_CALL(*interface_, 237 EXPECT_CALL(*interface_, FindOrMakeNewSMConnectionInterface(_, _))
246 FindOrMakeNewSMConnectionInterface(_, _))
247 .WillOnce(Return(mock_interface.get())); 238 .WillOnce(Return(mock_interface.get()));
248 EXPECT_CALL(*mock_interface, SetStreamID(stream_id)); 239 EXPECT_CALL(*mock_interface, SetStreamID(stream_id));
249 EXPECT_CALL(*mock_interface, ProcessWriteInput(_, _)) 240 EXPECT_CALL(*mock_interface, ProcessWriteInput(_, _))
250 .WillOnce(DoAll(SaveArg<0>(&saver.data), 241 .WillOnce(DoAll(SaveArg<0>(&saver.data),
251 SaveArg<1>(&saver.size), 242 SaveArg<1>(&saver.size),
252 InvokeWithoutArgs(&saver, &StringSaver::Save), 243 InvokeWithoutArgs(&saver, &StringSaver::Save),
253 Return(0))); 244 Return(0)));
254 } 245 }
255 visitor->OnSynStream(stream_id, associated_id, 0, 0, false, false, block); 246 visitor->OnSynStream(stream_id, associated_id, 0, 0, false, false, block);
256 ASSERT_EQ(expected, saver.string); 247 ASSERT_EQ(expected, saver.string);
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
303 SpdyHeaderBlock block; 294 SpdyHeaderBlock block;
304 testing::MockFunction<void(int)> checkpoint; // NOLINT 295 testing::MockFunction<void(int)> checkpoint; // NOLINT
305 296
306 scoped_ptr<SpdyFrame> frame(spdy_framer_->CreatePingFrame(12)); 297 scoped_ptr<SpdyFrame> frame(spdy_framer_->CreatePingFrame(12));
307 block["method"] = "GET"; 298 block["method"] = "GET";
308 block["url"] = "http://www.example.com/path"; 299 block["url"] = "http://www.example.com/path";
309 block["scheme"] = "http"; 300 block["scheme"] = "http";
310 block["version"] = "HTTP/1.0"; 301 block["version"] = "HTTP/1.0";
311 { 302 {
312 InSequence s; 303 InSequence s;
313 EXPECT_CALL(*interface_, 304 EXPECT_CALL(*interface_, FindOrMakeNewSMConnectionInterface(_, _))
314 FindOrMakeNewSMConnectionInterface(_, _))
315 .WillOnce(Return(mock_interface.get())); 305 .WillOnce(Return(mock_interface.get()));
316 EXPECT_CALL(*mock_interface, SetStreamID(stream_id)); 306 EXPECT_CALL(*mock_interface, SetStreamID(stream_id));
317 EXPECT_CALL(*mock_interface, ProcessWriteInput(_, _)).Times(1); 307 EXPECT_CALL(*mock_interface, ProcessWriteInput(_, _)).Times(1);
318 EXPECT_CALL(checkpoint, Call(0)); 308 EXPECT_CALL(checkpoint, Call(0));
319 EXPECT_CALL(*mock_interface, 309 EXPECT_CALL(*mock_interface,
320 ProcessWriteInput(frame->data(), frame->size())).Times(1); 310 ProcessWriteInput(frame->data(), frame->size())).Times(1);
321 } 311 }
322 312
323 visitor->OnSynStream(stream_id, associated_id, 0, 0, false, false, block); 313 visitor->OnSynStream(stream_id, associated_id, 0, 0, false, false, block);
324 checkpoint.Call(0); 314 checkpoint.Call(0);
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
413 TEST_P(SpdySMProxyTest, PostAcceptHook) { 403 TEST_P(SpdySMProxyTest, PostAcceptHook) {
414 interface_->PostAcceptHook(); 404 interface_->PostAcceptHook();
415 405
416 ASSERT_EQ(1u, connection_->output_list()->size()); 406 ASSERT_EQ(1u, connection_->output_list()->size());
417 std::list<DataFrame*>::const_iterator i = connection_->output_list()->begin(); 407 std::list<DataFrame*>::const_iterator i = connection_->output_list()->begin();
418 DataFrame* df = *i++; 408 DataFrame* df = *i++;
419 409
420 { 410 {
421 InSequence s; 411 InSequence s;
422 EXPECT_CALL(*spdy_framer_visitor_, OnSettings(false)); 412 EXPECT_CALL(*spdy_framer_visitor_, OnSettings(false));
423 EXPECT_CALL(*spdy_framer_visitor_, OnSetting( 413 EXPECT_CALL(*spdy_framer_visitor_,
424 SETTINGS_MAX_CONCURRENT_STREAMS, 0u, 100u)); 414 OnSetting(SETTINGS_MAX_CONCURRENT_STREAMS, 0u, 100u));
425 } 415 }
426 spdy_framer_->ProcessInput(df->data, df->size); 416 spdy_framer_->ProcessInput(df->data, df->size);
427 } 417 }
428 418
429 TEST_P(SpdySMProxyTest, NewStream) { 419 TEST_P(SpdySMProxyTest, NewStream) {
430 // TODO(yhirano): SpdySM::NewStream leads to crash when 420 // TODO(yhirano): SpdySM::NewStream leads to crash when
431 // acceptor_->flip_handler_type_ != FLIP_HANDLER_SPDY_SERVER. 421 // acceptor_->flip_handler_type_ != FLIP_HANDLER_SPDY_SERVER.
432 // It should be fixed though I don't know the solution now. 422 // It should be fixed though I don't know the solution now.
433 } 423 }
434 424
(...skipping 23 matching lines...) Expand all
458 const char* actual_data; 448 const char* actual_data;
459 size_t actual_size; 449 size_t actual_size;
460 testing::MockFunction<void(int)> checkpoint; // NOLINT 450 testing::MockFunction<void(int)> checkpoint; // NOLINT
461 451
462 interface_->SendErrorNotFound(stream_id); 452 interface_->SendErrorNotFound(stream_id);
463 453
464 ASSERT_EQ(2u, connection_->output_list()->size()); 454 ASSERT_EQ(2u, connection_->output_list()->size());
465 455
466 { 456 {
467 InSequence s; 457 InSequence s;
468 EXPECT_CALL(*spdy_framer_visitor_, 458 EXPECT_CALL(*spdy_framer_visitor_, OnSynReply(stream_id, false, _))
469 OnSynReply(stream_id, false, _))
470 .WillOnce(SaveArg<2>(&actual_header_block)); 459 .WillOnce(SaveArg<2>(&actual_header_block));
471 EXPECT_CALL(checkpoint, Call(0)); 460 EXPECT_CALL(checkpoint, Call(0));
472 EXPECT_CALL(*spdy_framer_visitor_, 461 EXPECT_CALL(*spdy_framer_visitor_,
473 OnDataFrameHeader(stream_id, _, true)); 462 OnDataFrameHeader(stream_id, _, true));
474 EXPECT_CALL(*spdy_framer_visitor_, 463 EXPECT_CALL(*spdy_framer_visitor_,
475 OnStreamFrameData(stream_id, _, _, false)).Times(1) 464 OnStreamFrameData(stream_id, _, _, false)).Times(1)
476 .WillOnce(DoAll(SaveArg<1>(&actual_data), 465 .WillOnce(DoAll(SaveArg<1>(&actual_data),
477 SaveArg<2>(&actual_size))); 466 SaveArg<2>(&actual_size)));
478 EXPECT_CALL(*spdy_framer_visitor_, 467 EXPECT_CALL(*spdy_framer_visitor_,
479 OnStreamFrameData(stream_id, NULL, 0, true)).Times(1); 468 OnStreamFrameData(stream_id, NULL, 0, true)).Times(1);
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
679 ASSERT_EQ(1u, connection_->output_list()->size()); 668 ASSERT_EQ(1u, connection_->output_list()->size());
680 std::list<DataFrame*>::const_iterator i = connection_->output_list()->begin(); 669 std::list<DataFrame*>::const_iterator i = connection_->output_list()->begin();
681 DataFrame* df = *i++; 670 DataFrame* df = *i++;
682 671
683 { 672 {
684 InSequence s; 673 InSequence s;
685 EXPECT_CALL(*spdy_framer_visitor_, 674 EXPECT_CALL(*spdy_framer_visitor_,
686 OnDataFrameHeader(stream_id, _, false)); 675 OnDataFrameHeader(stream_id, _, false));
687 EXPECT_CALL(*spdy_framer_visitor_, 676 EXPECT_CALL(*spdy_framer_visitor_,
688 OnStreamFrameData(stream_id, _, _, false)) 677 OnStreamFrameData(stream_id, _, _, false))
689 .WillOnce(DoAll(SaveArg<1>(&actual_data), 678 .WillOnce(DoAll(SaveArg<1>(&actual_data), SaveArg<2>(&actual_size)));
690 SaveArg<2>(&actual_size)));
691 } 679 }
692 680
693 spdy_framer_->ProcessInput(df->data, df->size); 681 spdy_framer_->ProcessInput(df->data, df->size);
694 ASSERT_EQ(1, spdy_framer_->frames_received()); 682 ASSERT_EQ(1, spdy_framer_->frames_received());
695 ASSERT_EQ("hello", StringPiece(actual_data, actual_size)); 683 ASSERT_EQ("hello", StringPiece(actual_data, actual_size));
696 } 684 }
697 685
698 TEST_P(SpdySMProxyTest, SendLongDataFrame) { 686 TEST_P(SpdySMProxyTest, SendLongDataFrame) {
699 uint32 stream_id = 133; 687 uint32 stream_id = 133;
700 SpdyDataFlags flags = DATA_FLAG_NONE; 688 SpdyDataFlags flags = DATA_FLAG_NONE;
701 const char* actual_data; 689 const char* actual_data;
702 size_t actual_size; 690 size_t actual_size;
703 691
704 std::string data = 692 std::string data = std::string(kSpdySegmentSize, 'a') +
705 std::string(kSpdySegmentSize, 'a') + 693 std::string(kSpdySegmentSize, 'b') + "c";
706 std::string(kSpdySegmentSize, 'b') +
707 "c";
708 interface_->SendDataFrame(stream_id, data.data(), data.size(), flags, true); 694 interface_->SendDataFrame(stream_id, data.data(), data.size(), flags, true);
709 695
710 { 696 {
711 InSequence s; 697 InSequence s;
712 for (int i = 0; i < 3; ++i) { 698 for (int i = 0; i < 3; ++i) {
713 EXPECT_CALL(*spdy_framer_visitor_, 699 EXPECT_CALL(*spdy_framer_visitor_,
714 OnDataFrameHeader(stream_id, _, false)); 700 OnDataFrameHeader(stream_id, _, false));
715 EXPECT_CALL(*spdy_framer_visitor_, 701 EXPECT_CALL(*spdy_framer_visitor_,
716 OnStreamFrameData(stream_id, _, _, false)) 702 OnStreamFrameData(stream_id, _, _, false))
717 .WillOnce(DoAll(SaveArg<1>(&actual_data), 703 .WillOnce(DoAll(SaveArg<1>(&actual_data),
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
824 const char* actual_data; 810 const char* actual_data;
825 size_t actual_size; 811 size_t actual_size;
826 testing::MockFunction<void(int)> checkpoint; // NOLINT 812 testing::MockFunction<void(int)> checkpoint; // NOLINT
827 813
828 interface_->NewStream(stream_id, 0, "nonexistingfile"); 814 interface_->NewStream(stream_id, 0, "nonexistingfile");
829 815
830 ASSERT_EQ(2u, connection_->output_list()->size()); 816 ASSERT_EQ(2u, connection_->output_list()->size());
831 817
832 { 818 {
833 InSequence s; 819 InSequence s;
834 EXPECT_CALL(*spdy_framer_visitor_, 820 EXPECT_CALL(*spdy_framer_visitor_, OnSynReply(stream_id, false, _))
835 OnSynReply(stream_id, false, _))
836 .WillOnce(SaveArg<2>(&actual_header_block)); 821 .WillOnce(SaveArg<2>(&actual_header_block));
837 EXPECT_CALL(checkpoint, Call(0)); 822 EXPECT_CALL(checkpoint, Call(0));
838 EXPECT_CALL(*spdy_framer_visitor_, 823 EXPECT_CALL(*spdy_framer_visitor_,
839 OnDataFrameHeader(stream_id, _, true)); 824 OnDataFrameHeader(stream_id, _, true));
840 EXPECT_CALL(*spdy_framer_visitor_, 825 EXPECT_CALL(*spdy_framer_visitor_,
841 OnStreamFrameData(stream_id, _, _, false)).Times(1) 826 OnStreamFrameData(stream_id, _, _, false)).Times(1)
842 .WillOnce(DoAll(SaveArg<1>(&actual_data), 827 .WillOnce(DoAll(SaveArg<1>(&actual_data),
843 SaveArg<2>(&actual_size))); 828 SaveArg<2>(&actual_size)));
844 EXPECT_CALL(*spdy_framer_visitor_, 829 EXPECT_CALL(*spdy_framer_visitor_,
845 OnStreamFrameData(stream_id, NULL, 0, true)).Times(1); 830 OnStreamFrameData(stream_id, NULL, 0, true)).Times(1);
846 } 831 }
847 832
848 std::list<DataFrame*>::const_iterator i = connection_->output_list()->begin(); 833 std::list<DataFrame*>::const_iterator i = connection_->output_list()->begin();
849 DataFrame* df = *i++; 834 DataFrame* df = *i++;
850 spdy_framer_->ProcessInput(df->data, df->size); 835 spdy_framer_->ProcessInput(df->data, df->size);
851 checkpoint.Call(0); 836 checkpoint.Call(0);
852 df = *i++; 837 df = *i++;
853 spdy_framer_->ProcessInput(df->data, df->size); 838 spdy_framer_->ProcessInput(df->data, df->size);
854 839
855 ASSERT_EQ(2, spdy_framer_->frames_received()); 840 ASSERT_EQ(2, spdy_framer_->frames_received());
856 ASSERT_EQ(2u, actual_header_block.size()); 841 ASSERT_EQ(2u, actual_header_block.size());
857 ASSERT_EQ("404 Not Found", actual_header_block["status"]); 842 ASSERT_EQ("404 Not Found", actual_header_block["status"]);
858 ASSERT_EQ("HTTP/1.1", actual_header_block["version"]); 843 ASSERT_EQ("HTTP/1.1", actual_header_block["version"]);
859 ASSERT_EQ("wtf?", StringPiece(actual_data, actual_size)); 844 ASSERT_EQ("wtf?", StringPiece(actual_data, actual_size));
860 } 845 }
861 846
862 } // namespace 847 } // namespace
863 848
864 } // namespace net 849 } // namespace net
OLDNEW
« no previous file with comments | « net/tools/flip_server/spdy_interface.cc ('k') | net/tools/flip_server/spdy_ssl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698