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

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

Issue 14311002: [SPDY] Avoid leaking bytes from the session flow control receive window (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 7 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « net/spdy/spdy_stream_spdy2_unittest.cc ('k') | net/spdy/spdy_stream_test_util.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 (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 "base/basictypes.h" 5 #include "base/basictypes.h"
6 #include "base/memory/ref_counted.h" 6 #include "base/memory/ref_counted.h"
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/strings/string_piece.h" 8 #include "base/strings/string_piece.h"
9 #include "net/base/completion_callback.h" 9 #include "net/base/completion_callback.h"
10 #include "net/base/net_log_unittest.h" 10 #include "net/base/net_log_unittest.h"
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
124 EXPECT_TRUE(stream->HasUrl()); 124 EXPECT_TRUE(stream->HasUrl());
125 EXPECT_EQ(kStreamUrl, stream->GetUrl().spec()); 125 EXPECT_EQ(kStreamUrl, stream->GetUrl().spec());
126 126
127 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequest(true)); 127 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequest(true));
128 128
129 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); 129 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose());
130 130
131 EXPECT_TRUE(delegate.send_headers_completed()); 131 EXPECT_TRUE(delegate.send_headers_completed());
132 EXPECT_EQ("200", delegate.GetResponseHeaderValue(":status")); 132 EXPECT_EQ("200", delegate.GetResponseHeaderValue(":status"));
133 EXPECT_EQ("HTTP/1.1", delegate.GetResponseHeaderValue(":version")); 133 EXPECT_EQ("HTTP/1.1", delegate.GetResponseHeaderValue(":version"));
134 EXPECT_EQ(std::string(kPostBody, kPostBodyLength), delegate.received_data()); 134 EXPECT_EQ(std::string(kPostBody, kPostBodyLength),
135 delegate.TakeReceivedData());
135 EXPECT_EQ(static_cast<int>(kPostBodyLength), delegate.data_sent()); 136 EXPECT_EQ(static_cast<int>(kPostBodyLength), delegate.data_sent());
136 } 137 }
137 138
138 TEST_F(SpdyStreamSpdy3Test, SendHeaderAndDataAfterOpen) { 139 TEST_F(SpdyStreamSpdy3Test, SendHeaderAndDataAfterOpen) {
139 session_ = SpdySessionDependencies::SpdyCreateSession(&session_deps_); 140 session_ = SpdySessionDependencies::SpdyCreateSession(&session_deps_);
140 141
141 scoped_ptr<SpdyFrame> expected_request(ConstructSpdyWebSocketSynStream( 142 scoped_ptr<SpdyFrame> expected_request(ConstructSpdyWebSocketSynStream(
142 1, 143 1,
143 "/chat", 144 "/chat",
144 "server.example.com", 145 "server.example.com",
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
202 stream->set_spdy_headers(headers.Pass()); 203 stream->set_spdy_headers(headers.Pass());
203 EXPECT_TRUE(stream->HasUrl()); 204 EXPECT_TRUE(stream->HasUrl());
204 205
205 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequest(true)); 206 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequest(true));
206 207
207 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); 208 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose());
208 209
209 EXPECT_TRUE(delegate.send_headers_completed()); 210 EXPECT_TRUE(delegate.send_headers_completed());
210 EXPECT_EQ("101", delegate.GetResponseHeaderValue(":status")); 211 EXPECT_EQ("101", delegate.GetResponseHeaderValue(":status"));
211 EXPECT_EQ(1, delegate.headers_sent()); 212 EXPECT_EQ(1, delegate.headers_sent());
212 EXPECT_EQ(std::string(), delegate.received_data()); 213 EXPECT_EQ(std::string(), delegate.TakeReceivedData());
213 EXPECT_EQ(6, delegate.data_sent()); 214 EXPECT_EQ(6, delegate.data_sent());
214 } 215 }
215 216
216 TEST_F(SpdyStreamSpdy3Test, PushedStream) { 217 TEST_F(SpdyStreamSpdy3Test, PushedStream) {
217 session_ = SpdySessionDependencies::SpdyCreateSession(&session_deps_); 218 session_ = SpdySessionDependencies::SpdyCreateSession(&session_deps_);
218 scoped_refptr<SpdySession> spdy_session(CreateSpdySession()); 219 scoped_refptr<SpdySession> spdy_session(CreateSpdySession());
219 220
220 MockRead reads[] = { 221 MockRead reads[] = {
221 MockRead(ASYNC, 0, 0), // EOF 222 MockRead(ASYNC, 0, 0), // EOF
222 }; 223 };
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
321 322
322 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequest(true)); 323 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequest(true));
323 324
324 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); 325 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose());
325 326
326 const SpdyStreamId stream_id = stream->stream_id(); 327 const SpdyStreamId stream_id = stream->stream_id();
327 328
328 EXPECT_TRUE(delegate.send_headers_completed()); 329 EXPECT_TRUE(delegate.send_headers_completed());
329 EXPECT_EQ("200", delegate.GetResponseHeaderValue(":status")); 330 EXPECT_EQ("200", delegate.GetResponseHeaderValue(":status"));
330 EXPECT_EQ("HTTP/1.1", delegate.GetResponseHeaderValue(":version")); 331 EXPECT_EQ("HTTP/1.1", delegate.GetResponseHeaderValue(":version"));
331 EXPECT_EQ(std::string(kPostBody, kPostBodyLength), delegate.received_data()); 332 EXPECT_EQ(std::string(kPostBody, kPostBodyLength),
333 delegate.TakeReceivedData());
332 EXPECT_EQ(static_cast<int>(kPostBodyLength), delegate.data_sent()); 334 EXPECT_EQ(static_cast<int>(kPostBodyLength), delegate.data_sent());
333 335
334 // Check that the NetLog was filled reasonably. 336 // Check that the NetLog was filled reasonably.
335 net::CapturingNetLog::CapturedEntryList entries; 337 net::CapturingNetLog::CapturedEntryList entries;
336 log.GetEntries(&entries); 338 log.GetEntries(&entries);
337 EXPECT_LT(0u, entries.size()); 339 EXPECT_LT(0u, entries.size());
338 340
339 // Check that we logged SPDY_STREAM_ERROR correctly. 341 // Check that we logged SPDY_STREAM_ERROR correctly.
340 int pos = net::ExpectLogContainsSomewhere( 342 int pos = net::ExpectLogContainsSomewhere(
341 entries, 0, 343 entries, 0,
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
471 473
472 EXPECT_FALSE(stream->send_stalled_by_flow_control()); 474 EXPECT_FALSE(stream->send_stalled_by_flow_control());
473 475
474 data.RunFor(3); 476 data.RunFor(3);
475 477
476 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); 478 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose());
477 479
478 EXPECT_TRUE(delegate.send_headers_completed()); 480 EXPECT_TRUE(delegate.send_headers_completed());
479 EXPECT_EQ("200", delegate.GetResponseHeaderValue(":status")); 481 EXPECT_EQ("200", delegate.GetResponseHeaderValue(":status"));
480 EXPECT_EQ("HTTP/1.1", delegate.GetResponseHeaderValue(":version")); 482 EXPECT_EQ("HTTP/1.1", delegate.GetResponseHeaderValue(":version"));
481 EXPECT_EQ(std::string(kPostBody, kPostBodyLength), delegate.received_data()); 483 EXPECT_EQ(std::string(kPostBody, kPostBodyLength),
484 delegate.TakeReceivedData());
482 EXPECT_EQ(static_cast<int>(kPostBodyLength), delegate.body_data_sent()); 485 EXPECT_EQ(static_cast<int>(kPostBodyLength), delegate.body_data_sent());
483 } 486 }
484 487
485 // Cause a send stall by reducing the flow control send window to 488 // Cause a send stall by reducing the flow control send window to
486 // 0. The stream should resume when that window is then adjusted 489 // 0. The stream should resume when that window is then adjusted
487 // positively. 490 // positively.
488 TEST_F(SpdyStreamSpdy3Test, ResumeAfterSendWindowSizeAdjust) { 491 TEST_F(SpdyStreamSpdy3Test, ResumeAfterSendWindowSizeAdjust) {
489 GURL url(kStreamUrl); 492 GURL url(kStreamUrl);
490 493
491 session_ = 494 session_ =
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
562 565
563 EXPECT_FALSE(stream->send_stalled_by_flow_control()); 566 EXPECT_FALSE(stream->send_stalled_by_flow_control());
564 567
565 data.RunFor(3); 568 data.RunFor(3);
566 569
567 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); 570 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose());
568 571
569 EXPECT_TRUE(delegate.send_headers_completed()); 572 EXPECT_TRUE(delegate.send_headers_completed());
570 EXPECT_EQ("200", delegate.GetResponseHeaderValue(":status")); 573 EXPECT_EQ("200", delegate.GetResponseHeaderValue(":status"));
571 EXPECT_EQ("HTTP/1.1", delegate.GetResponseHeaderValue(":version")); 574 EXPECT_EQ("HTTP/1.1", delegate.GetResponseHeaderValue(":version"));
572 EXPECT_EQ(std::string(kPostBody, kPostBodyLength), delegate.received_data()); 575 EXPECT_EQ(std::string(kPostBody, kPostBodyLength),
576 delegate.TakeReceivedData());
573 EXPECT_EQ(static_cast<int>(kPostBodyLength), delegate.body_data_sent()); 577 EXPECT_EQ(static_cast<int>(kPostBodyLength), delegate.body_data_sent());
574 } 578 }
575 579
576 } // namespace 580 } // namespace
577 581
578 } // namespace test 582 } // namespace test
579 583
580 } // namespace net 584 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/spdy_stream_spdy2_unittest.cc ('k') | net/spdy/spdy_stream_test_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698