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

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: 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
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_METHOD4(OnStreamFrameData, void(SpdyStreamId, 58 MOCK_METHOD4(OnStreamFrameData,
60 const char*, 59 void(SpdyStreamId, const char*, size_t, bool));
61 size_t,
62 bool));
63 MOCK_METHOD1(OnSettings, void(bool clear_persisted)); 60 MOCK_METHOD1(OnSettings, void(bool clear_persisted));
64 MOCK_METHOD3(OnSetting, void(SpdySettingsIds, uint8, uint32)); 61 MOCK_METHOD3(OnSetting, void(SpdySettingsIds, uint8, uint32));
65 MOCK_METHOD1(OnPing, void(uint32 unique_id)); 62 MOCK_METHOD1(OnPing, void(uint32 unique_id));
66 MOCK_METHOD2(OnRstStream, void(SpdyStreamId, SpdyRstStreamStatus)); 63 MOCK_METHOD2(OnRstStream, void(SpdyStreamId, SpdyRstStreamStatus));
67 MOCK_METHOD2(OnGoAway, void(SpdyStreamId, SpdyGoAwayStatus)); 64 MOCK_METHOD2(OnGoAway, void(SpdyStreamId, SpdyGoAwayStatus));
68 MOCK_METHOD2(OnWindowUpdate, void(SpdyStreamId, uint32)); 65 MOCK_METHOD2(OnWindowUpdate, void(SpdyStreamId, uint32));
69 MOCK_METHOD2(OnPushPromise, void(SpdyStreamId, SpdyStreamId)); 66 MOCK_METHOD2(OnPushPromise, void(SpdyStreamId, SpdyStreamId));
70 }; 67 };
71 68
72 class FakeSMConnection : public SMConnection { 69 class FakeSMConnection : public SMConnection {
73 public: 70 public:
74 FakeSMConnection(EpollServer* epoll_server, 71 FakeSMConnection(EpollServer* epoll_server,
75 SSLState* ssl_state, 72 SSLState* ssl_state,
76 MemoryCache* memory_cache, 73 MemoryCache* memory_cache,
77 FlipAcceptor* acceptor, 74 FlipAcceptor* acceptor,
78 std::string log_prefix) 75 std::string log_prefix)
79 : SMConnection(epoll_server, 76 : SMConnection(epoll_server,
80 ssl_state, 77 ssl_state,
81 memory_cache, 78 memory_cache,
82 acceptor, 79 acceptor,
83 log_prefix) {} 80 log_prefix) {}
84 81
85 MOCK_METHOD0(Cleanup, void()); 82 MOCK_METHOD0(Cleanup, void());
86 MOCK_METHOD8(InitSMConnection, void(SMConnectionPoolInterface*, 83 MOCK_METHOD8(InitSMConnection,
87 SMInterface*, 84 void(SMConnectionPoolInterface*,
88 EpollServer*, 85 SMInterface*,
89 int, 86 EpollServer*,
90 std::string, 87 int,
91 std::string, 88 std::string,
92 std::string, 89 std::string,
93 bool)); 90 std::string,
91 bool));
94 }; 92 };
95 93
96 // This class is almost SpdySM, except one function. 94 // This class is almost SpdySM, except one function.
97 // This class is the test target of tests in this file. 95 // This class is the test target of tests in this file.
98 class TestSpdySM : public SpdySM { 96 class TestSpdySM : public SpdySM {
99 public: 97 public:
100 virtual ~TestSpdySM() {} 98 virtual ~TestSpdySM() {}
101 TestSpdySM(SMConnection* connection, 99 TestSpdySM(SMConnection* connection,
102 SMInterface* sm_http_interface, 100 SMInterface* sm_http_interface,
103 EpollServer* epoll_server, 101 EpollServer* epoll_server,
104 MemoryCache* memory_cache, 102 MemoryCache* memory_cache,
105 FlipAcceptor* acceptor, 103 FlipAcceptor* acceptor,
106 SpdyMajorVersion version) 104 SpdyMajorVersion version)
107 : SpdySM(connection, 105 : SpdySM(connection,
108 sm_http_interface, 106 sm_http_interface,
109 epoll_server, 107 epoll_server,
110 memory_cache, 108 memory_cache,
111 acceptor, 109 acceptor,
112 version) {} 110 version) {}
113 111
114 MOCK_METHOD2(FindOrMakeNewSMConnectionInterface, 112 MOCK_METHOD2(FindOrMakeNewSMConnectionInterface,
115 SMInterface*(const std::string&, const std::string&)); 113 SMInterface*(const std::string&, const std::string&));
116 }; 114 };
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 }; 185 };
188 186
189 class SpdySMProxyTest : public SpdySMTestBase { 187 class SpdySMProxyTest : public SpdySMTestBase {
190 public: 188 public:
191 SpdySMProxyTest() : SpdySMTestBase(FLIP_HANDLER_PROXY) {} 189 SpdySMProxyTest() : SpdySMTestBase(FLIP_HANDLER_PROXY) {}
192 virtual ~SpdySMProxyTest() {} 190 virtual ~SpdySMProxyTest() {}
193 }; 191 };
194 192
195 class SpdySMServerTest : public SpdySMTestBase { 193 class SpdySMServerTest : public SpdySMTestBase {
196 public: 194 public:
197 SpdySMServerTest(): SpdySMTestBase(FLIP_HANDLER_SPDY_SERVER) {} 195 SpdySMServerTest() : SpdySMTestBase(FLIP_HANDLER_SPDY_SERVER) {}
198 virtual ~SpdySMServerTest() {} 196 virtual ~SpdySMServerTest() {}
199 }; 197 };
200 198
201 INSTANTIATE_TEST_CASE_P(SpdySMProxyTest, 199 INSTANTIATE_TEST_CASE_P(SpdySMProxyTest,
202 SpdySMProxyTest, 200 SpdySMProxyTest,
203 Values(SPDY2, SPDY3, SPDY4)); 201 Values(SPDY2, SPDY3, SPDY4));
204 INSTANTIATE_TEST_CASE_P(SpdySMServerTest, 202 INSTANTIATE_TEST_CASE_P(SpdySMServerTest, SpdySMServerTest, Values(SPDY2));
205 SpdySMServerTest,
206 Values(SPDY2));
207 203
208 TEST_P(SpdySMProxyTest, InitSMConnection) { 204 TEST_P(SpdySMProxyTest, InitSMConnection) {
209 { 205 {
210 InSequence s; 206 InSequence s;
211 EXPECT_CALL(*connection_, InitSMConnection(_, _, _, _, _, _, _, _)); 207 EXPECT_CALL(*connection_, InitSMConnection(_, _, _, _, _, _, _, _));
212 } 208 }
213 interface_->InitSMConnection(NULL, 209 interface_->InitSMConnection(
214 NULL, 210 NULL, NULL, epoll_server_.get(), -1, "", "", "", false);
215 epoll_server_.get(),
216 -1,
217 "",
218 "",
219 "",
220 false);
221 } 211 }
222 212
223 TEST_P(SpdySMProxyTest, OnSynStream) { 213 TEST_P(SpdySMProxyTest, OnSynStream) {
224 BufferedSpdyFramerVisitorInterface* visitor = interface_.get(); 214 BufferedSpdyFramerVisitorInterface* visitor = interface_.get();
225 scoped_ptr<MockSMInterface> mock_interface(new MockSMInterface); 215 scoped_ptr<MockSMInterface> mock_interface(new MockSMInterface);
226 uint32 stream_id = 92; 216 uint32 stream_id = 92;
227 uint32 associated_id = 43; 217 uint32 associated_id = 43;
228 std::string expected = "GET /path HTTP/1.0\r\n" 218 std::string expected =
219 "GET /path HTTP/1.0\r\n"
229 "method: GET\r\n" 220 "method: GET\r\n"
230 "scheme: http\r\n" 221 "scheme: http\r\n"
231 "url: http://www.example.com/path\r\n" 222 "url: http://www.example.com/path\r\n"
232 "version: HTTP/1.0\r\n\r\n"; 223 "version: HTTP/1.0\r\n\r\n";
233 SpdyHeaderBlock block; 224 SpdyHeaderBlock block;
234 block["method"] = "GET"; 225 block["method"] = "GET";
235 block["url"] = "http://www.example.com/path"; 226 block["url"] = "http://www.example.com/path";
236 block["scheme"] = "http"; 227 block["scheme"] = "http";
237 block["version"] = "HTTP/1.0"; 228 block["version"] = "HTTP/1.0";
238 StringSaver saver; 229 StringSaver saver;
239 { 230 {
240 InSequence s; 231 InSequence s;
241 EXPECT_CALL(*interface_, 232 EXPECT_CALL(*interface_, FindOrMakeNewSMConnectionInterface(_, _))
242 FindOrMakeNewSMConnectionInterface(_, _))
243 .WillOnce(Return(mock_interface.get())); 233 .WillOnce(Return(mock_interface.get()));
244 EXPECT_CALL(*mock_interface, SetStreamID(stream_id)); 234 EXPECT_CALL(*mock_interface, SetStreamID(stream_id));
245 EXPECT_CALL(*mock_interface, ProcessWriteInput(_, _)) 235 EXPECT_CALL(*mock_interface, ProcessWriteInput(_, _))
246 .WillOnce(DoAll(SaveArg<0>(&saver.data), 236 .WillOnce(DoAll(SaveArg<0>(&saver.data),
247 SaveArg<1>(&saver.size), 237 SaveArg<1>(&saver.size),
248 InvokeWithoutArgs(&saver, &StringSaver::Save), 238 InvokeWithoutArgs(&saver, &StringSaver::Save),
249 Return(0))); 239 Return(0)));
250 } 240 }
251 visitor->OnSynStream(stream_id, associated_id, 0, 0, false, false, block); 241 visitor->OnSynStream(stream_id, associated_id, 0, 0, false, false, block);
252 ASSERT_EQ(expected, saver.string); 242 ASSERT_EQ(expected, saver.string);
253 } 243 }
254 244
255 TEST_P(SpdySMProxyTest, OnStreamFrameData) { 245 TEST_P(SpdySMProxyTest, OnStreamFrameData) {
256 BufferedSpdyFramerVisitorInterface* visitor = interface_.get(); 246 BufferedSpdyFramerVisitorInterface* visitor = interface_.get();
257 scoped_ptr<MockSMInterface> mock_interface(new MockSMInterface); 247 scoped_ptr<MockSMInterface> mock_interface(new MockSMInterface);
258 uint32 stream_id = 92; 248 uint32 stream_id = 92;
259 uint32 associated_id = 43; 249 uint32 associated_id = 43;
260 SpdyHeaderBlock block; 250 SpdyHeaderBlock block;
261 testing::MockFunction<void(int)> checkpoint; // NOLINT 251 testing::MockFunction<void(int)> checkpoint; // NOLINT
262 252
263 scoped_ptr<SpdyFrame> frame(spdy_framer_->CreatePingFrame(12)); 253 scoped_ptr<SpdyFrame> frame(spdy_framer_->CreatePingFrame(12));
264 block["method"] = "GET"; 254 block["method"] = "GET";
265 block["url"] = "http://www.example.com/path"; 255 block["url"] = "http://www.example.com/path";
266 block["scheme"] = "http"; 256 block["scheme"] = "http";
267 block["version"] = "HTTP/1.0"; 257 block["version"] = "HTTP/1.0";
268 { 258 {
269 InSequence s; 259 InSequence s;
270 EXPECT_CALL(*interface_, 260 EXPECT_CALL(*interface_, FindOrMakeNewSMConnectionInterface(_, _))
271 FindOrMakeNewSMConnectionInterface(_, _))
272 .WillOnce(Return(mock_interface.get())); 261 .WillOnce(Return(mock_interface.get()));
273 EXPECT_CALL(*mock_interface, SetStreamID(stream_id)); 262 EXPECT_CALL(*mock_interface, SetStreamID(stream_id));
274 EXPECT_CALL(*mock_interface, ProcessWriteInput(_, _)).Times(1); 263 EXPECT_CALL(*mock_interface, ProcessWriteInput(_, _)).Times(1);
275 EXPECT_CALL(checkpoint, Call(0)); 264 EXPECT_CALL(checkpoint, Call(0));
276 EXPECT_CALL(*mock_interface, 265 EXPECT_CALL(*mock_interface,
277 ProcessWriteInput(frame->data(), frame->size())).Times(1); 266 ProcessWriteInput(frame->data(), frame->size())).Times(1);
278 } 267 }
279 268
280 visitor->OnSynStream(stream_id, associated_id, 0, 0, false, false, block); 269 visitor->OnSynStream(stream_id, associated_id, 0, 0, false, false, block);
281 checkpoint.Call(0); 270 checkpoint.Call(0);
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
335 TEST_P(SpdySMProxyTest, PostAcceptHook) { 324 TEST_P(SpdySMProxyTest, PostAcceptHook) {
336 interface_->PostAcceptHook(); 325 interface_->PostAcceptHook();
337 326
338 ASSERT_EQ(1u, connection_->output_list()->size()); 327 ASSERT_EQ(1u, connection_->output_list()->size());
339 std::list<DataFrame*>::const_iterator i = connection_->output_list()->begin(); 328 std::list<DataFrame*>::const_iterator i = connection_->output_list()->begin();
340 DataFrame* df = *i++; 329 DataFrame* df = *i++;
341 330
342 { 331 {
343 InSequence s; 332 InSequence s;
344 EXPECT_CALL(*spdy_framer_visitor_, OnSettings(false)); 333 EXPECT_CALL(*spdy_framer_visitor_, OnSettings(false));
345 EXPECT_CALL(*spdy_framer_visitor_, OnSetting( 334 EXPECT_CALL(*spdy_framer_visitor_,
346 SETTINGS_MAX_CONCURRENT_STREAMS, 0u, 100u)); 335 OnSetting(SETTINGS_MAX_CONCURRENT_STREAMS, 0u, 100u));
347 } 336 }
348 spdy_framer_->ProcessInput(df->data, df->size); 337 spdy_framer_->ProcessInput(df->data, df->size);
349 } 338 }
350 339
351 TEST_P(SpdySMProxyTest, NewStream) { 340 TEST_P(SpdySMProxyTest, NewStream) {
352 // TODO(yhirano): SpdySM::NewStream leads to crash when 341 // TODO(yhirano): SpdySM::NewStream leads to crash when
353 // acceptor_->flip_handler_type_ != FLIP_HANDLER_SPDY_SERVER. 342 // acceptor_->flip_handler_type_ != FLIP_HANDLER_SPDY_SERVER.
354 // It should be fixed though I don't know the solution now. 343 // It should be fixed though I don't know the solution now.
355 } 344 }
356 345
(...skipping 19 matching lines...) Expand all
376 const char* actual_data; 365 const char* actual_data;
377 size_t actual_size; 366 size_t actual_size;
378 testing::MockFunction<void(int)> checkpoint; // NOLINT 367 testing::MockFunction<void(int)> checkpoint; // NOLINT
379 368
380 interface_->SendErrorNotFound(stream_id); 369 interface_->SendErrorNotFound(stream_id);
381 370
382 ASSERT_EQ(2u, connection_->output_list()->size()); 371 ASSERT_EQ(2u, connection_->output_list()->size());
383 372
384 { 373 {
385 InSequence s; 374 InSequence s;
386 EXPECT_CALL(*spdy_framer_visitor_, 375 EXPECT_CALL(*spdy_framer_visitor_, OnSynReply(stream_id, false, _))
387 OnSynReply(stream_id, false, _))
388 .WillOnce(SaveArg<2>(&actual_header_block)); 376 .WillOnce(SaveArg<2>(&actual_header_block));
389 EXPECT_CALL(checkpoint, Call(0)); 377 EXPECT_CALL(checkpoint, Call(0));
390 EXPECT_CALL(*spdy_framer_visitor_, 378 EXPECT_CALL(*spdy_framer_visitor_,
391 OnStreamFrameData(stream_id, _, _, false)).Times(1) 379 OnStreamFrameData(stream_id, _, _, false))
392 .WillOnce(DoAll(SaveArg<1>(&actual_data), 380 .Times(1)
393 SaveArg<2>(&actual_size))); 381 .WillOnce(DoAll(SaveArg<1>(&actual_data), SaveArg<2>(&actual_size)));
394 EXPECT_CALL(*spdy_framer_visitor_, 382 EXPECT_CALL(*spdy_framer_visitor_,
395 OnStreamFrameData(stream_id, NULL, 0, true)).Times(1); 383 OnStreamFrameData(stream_id, NULL, 0, true)).Times(1);
396 } 384 }
397 385
398 std::list<DataFrame*>::const_iterator i = connection_->output_list()->begin(); 386 std::list<DataFrame*>::const_iterator i = connection_->output_list()->begin();
399 DataFrame* df = *i++; 387 DataFrame* df = *i++;
400 spdy_framer_->ProcessInput(df->data, df->size); 388 spdy_framer_->ProcessInput(df->data, df->size);
401 checkpoint.Call(0); 389 checkpoint.Call(0);
402 df = *i++; 390 df = *i++;
403 spdy_framer_->ProcessInput(df->data, df->size); 391 spdy_framer_->ProcessInput(df->data, df->size);
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
474 interface_->SendDataFrame(stream_id, "hello", 5, flags, true); 462 interface_->SendDataFrame(stream_id, "hello", 5, flags, true);
475 463
476 ASSERT_EQ(1u, connection_->output_list()->size()); 464 ASSERT_EQ(1u, connection_->output_list()->size());
477 std::list<DataFrame*>::const_iterator i = connection_->output_list()->begin(); 465 std::list<DataFrame*>::const_iterator i = connection_->output_list()->begin();
478 DataFrame* df = *i++; 466 DataFrame* df = *i++;
479 467
480 { 468 {
481 InSequence s; 469 InSequence s;
482 EXPECT_CALL(*spdy_framer_visitor_, 470 EXPECT_CALL(*spdy_framer_visitor_,
483 OnStreamFrameData(stream_id, _, _, false)) 471 OnStreamFrameData(stream_id, _, _, false))
484 .WillOnce(DoAll(SaveArg<1>(&actual_data), 472 .WillOnce(DoAll(SaveArg<1>(&actual_data), SaveArg<2>(&actual_size)));
485 SaveArg<2>(&actual_size)));
486 } 473 }
487 474
488 spdy_framer_->ProcessInput(df->data, df->size); 475 spdy_framer_->ProcessInput(df->data, df->size);
489 ASSERT_EQ(1, spdy_framer_->frames_received()); 476 ASSERT_EQ(1, spdy_framer_->frames_received());
490 ASSERT_EQ("hello", StringPiece(actual_data, actual_size)); 477 ASSERT_EQ("hello", StringPiece(actual_data, actual_size));
491 } 478 }
492 479
493 TEST_P(SpdySMProxyTest, SendLongDataFrame) { 480 TEST_P(SpdySMProxyTest, SendLongDataFrame) {
494 uint32 stream_id = 133; 481 uint32 stream_id = 133;
495 SpdyDataFlags flags = DATA_FLAG_NONE; 482 SpdyDataFlags flags = DATA_FLAG_NONE;
496 const char* actual_data; 483 const char* actual_data;
497 size_t actual_size; 484 size_t actual_size;
498 485
499 std::string data = 486 std::string data = std::string(kSpdySegmentSize, 'a') +
500 std::string(kSpdySegmentSize, 'a') + 487 std::string(kSpdySegmentSize, 'b') + "c";
501 std::string(kSpdySegmentSize, 'b') +
502 "c";
503 interface_->SendDataFrame(stream_id, data.data(), data.size(), flags, true); 488 interface_->SendDataFrame(stream_id, data.data(), data.size(), flags, true);
504 489
505 { 490 {
506 InSequence s; 491 InSequence s;
507 EXPECT_CALL(*spdy_framer_visitor_, 492 EXPECT_CALL(*spdy_framer_visitor_,
508 OnStreamFrameData(stream_id, _, _, false)).Times(3) 493 OnStreamFrameData(stream_id, _, _, false))
509 .WillRepeatedly(DoAll(SaveArg<1>(&actual_data), 494 .Times(3)
510 SaveArg<2>(&actual_size))); 495 .WillRepeatedly(
496 DoAll(SaveArg<1>(&actual_data), SaveArg<2>(&actual_size)));
511 } 497 }
512 498
513 ASSERT_EQ(3u, connection_->output_list()->size()); 499 ASSERT_EQ(3u, connection_->output_list()->size());
514 std::list<DataFrame*>::const_iterator i = connection_->output_list()->begin(); 500 std::list<DataFrame*>::const_iterator i = connection_->output_list()->begin();
515 DataFrame* df = *i++; 501 DataFrame* df = *i++;
516 spdy_framer_->ProcessInput(df->data, df->size); 502 spdy_framer_->ProcessInput(df->data, df->size);
517 ASSERT_EQ(std::string(kSpdySegmentSize, 'a'), 503 ASSERT_EQ(std::string(kSpdySegmentSize, 'a'),
518 StringPiece(actual_data, actual_size)); 504 StringPiece(actual_data, actual_size));
519 505
520 df = *i++; 506 df = *i++;
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
614 const char* actual_data; 600 const char* actual_data;
615 size_t actual_size; 601 size_t actual_size;
616 testing::MockFunction<void(int)> checkpoint; // NOLINT 602 testing::MockFunction<void(int)> checkpoint; // NOLINT
617 603
618 interface_->NewStream(stream_id, 0, "nonexistingfile"); 604 interface_->NewStream(stream_id, 0, "nonexistingfile");
619 605
620 ASSERT_EQ(2u, connection_->output_list()->size()); 606 ASSERT_EQ(2u, connection_->output_list()->size());
621 607
622 { 608 {
623 InSequence s; 609 InSequence s;
624 EXPECT_CALL(*spdy_framer_visitor_, 610 EXPECT_CALL(*spdy_framer_visitor_, OnSynReply(stream_id, false, _))
625 OnSynReply(stream_id, false, _))
626 .WillOnce(SaveArg<2>(&actual_header_block)); 611 .WillOnce(SaveArg<2>(&actual_header_block));
627 EXPECT_CALL(checkpoint, Call(0)); 612 EXPECT_CALL(checkpoint, Call(0));
628 EXPECT_CALL(*spdy_framer_visitor_, 613 EXPECT_CALL(*spdy_framer_visitor_,
629 OnStreamFrameData(stream_id, _, _, false)).Times(1) 614 OnStreamFrameData(stream_id, _, _, false))
630 .WillOnce(DoAll(SaveArg<1>(&actual_data), 615 .Times(1)
631 SaveArg<2>(&actual_size))); 616 .WillOnce(DoAll(SaveArg<1>(&actual_data), SaveArg<2>(&actual_size)));
632 EXPECT_CALL(*spdy_framer_visitor_, 617 EXPECT_CALL(*spdy_framer_visitor_,
633 OnStreamFrameData(stream_id, NULL, 0, true)).Times(1); 618 OnStreamFrameData(stream_id, NULL, 0, true)).Times(1);
634 } 619 }
635 620
636 std::list<DataFrame*>::const_iterator i = connection_->output_list()->begin(); 621 std::list<DataFrame*>::const_iterator i = connection_->output_list()->begin();
637 DataFrame* df = *i++; 622 DataFrame* df = *i++;
638 spdy_framer_->ProcessInput(df->data, df->size); 623 spdy_framer_->ProcessInput(df->data, df->size);
639 checkpoint.Call(0); 624 checkpoint.Call(0);
640 df = *i++; 625 df = *i++;
641 spdy_framer_->ProcessInput(df->data, df->size); 626 spdy_framer_->ProcessInput(df->data, df->size);
642 627
643 ASSERT_EQ(2, spdy_framer_->frames_received()); 628 ASSERT_EQ(2, spdy_framer_->frames_received());
644 ASSERT_EQ(2u, actual_header_block.size()); 629 ASSERT_EQ(2u, actual_header_block.size());
645 ASSERT_EQ("404 Not Found", actual_header_block["status"]); 630 ASSERT_EQ("404 Not Found", actual_header_block["status"]);
646 ASSERT_EQ("HTTP/1.1", actual_header_block["version"]); 631 ASSERT_EQ("HTTP/1.1", actual_header_block["version"]);
647 ASSERT_EQ("wtf?", StringPiece(actual_data, actual_size)); 632 ASSERT_EQ("wtf?", StringPiece(actual_data, actual_size));
648 } 633 }
649 634
650 } // namespace 635 } // namespace
651 636
652 } // namespace net 637 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698