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

Side by Side Diff: net/quic/quic_session_test.cc

Issue 136523005: Use the right priority when marking QUIC streams write blocked via (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixes for quic_reliable_client_stream_test Created 6 years, 11 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/quic/quic_session.cc ('k') | net/quic/test_tools/quic_test_utils.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 "net/quic/quic_session.h" 5 #include "net/quic/quic_session.h"
6 6
7 #include <set> 7 #include <set>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/containers/hash_tables.h" 10 #include "base/containers/hash_tables.h"
(...skipping 14 matching lines...) Expand all
25 using std::vector; 25 using std::vector;
26 using testing::_; 26 using testing::_;
27 using testing::InSequence; 27 using testing::InSequence;
28 using testing::InvokeWithoutArgs; 28 using testing::InvokeWithoutArgs;
29 using testing::StrictMock; 29 using testing::StrictMock;
30 30
31 namespace net { 31 namespace net {
32 namespace test { 32 namespace test {
33 namespace { 33 namespace {
34 34
35 const QuicPriority kSomeMiddlePriority = 2; 35 const QuicPriority kHighestPriority = 0;
36 const QuicPriority kSomeMiddlePriority = 3;
36 37
37 class TestCryptoStream : public QuicCryptoStream { 38 class TestCryptoStream : public QuicCryptoStream {
38 public: 39 public:
39 explicit TestCryptoStream(QuicSession* session) 40 explicit TestCryptoStream(QuicSession* session)
40 : QuicCryptoStream(session) { 41 : QuicCryptoStream(session) {
41 } 42 }
42 43
43 virtual void OnHandshakeMessage( 44 virtual void OnHandshakeMessage(
44 const CryptoHandshakeMessage& message) OVERRIDE { 45 const CryptoHandshakeMessage& message) OVERRIDE {
45 encryption_established_ = true; 46 encryption_established_ = true;
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
272 const char data[] = 273 const char data[] =
273 "\0\0\0\0" // priority 274 "\0\0\0\0" // priority
274 "\1\0\0\0" // headers id 275 "\1\0\0\0" // headers id
275 "\0\0\0\4" // length 276 "\0\0\0\4" // length
276 "abcd"; // invalid compressed data 277 "abcd"; // invalid compressed data
277 EXPECT_CALL(*connection_, SendConnectionClose(QUIC_DECOMPRESSION_FAILURE)); 278 EXPECT_CALL(*connection_, SendConnectionClose(QUIC_DECOMPRESSION_FAILURE));
278 stream->ProcessRawData(data, arraysize(data)); 279 stream->ProcessRawData(data, arraysize(data));
279 } 280 }
280 } 281 }
281 282
283 TEST_P(QuicSessionTest, DebugDFatalIfMarkingClosedStreamWriteBlocked) {
284 TestStream* stream2 = session_.CreateOutgoingDataStream();
285 // Close the stream.
286 stream2->Reset(QUIC_BAD_APPLICATION_PAYLOAD);
287 // TODO(rtenneti): enable when chromium supports EXPECT_DEBUG_DFATAL.
288 /*
289 QuicStreamId kClosedStreamId = stream2->id();
290 EXPECT_DEBUG_DFATAL(
291 session_.MarkWriteBlocked(kClosedStreamId, kSomeMiddlePriority),
292 "Marking unknown stream 2 blocked.");
293 */
294 }
295
296 TEST_P(QuicSessionTest, DebugDFatalIfMarkWriteBlockedCalledWithWrongPriority) {
297 const QuicPriority kDifferentPriority = 0;
298
299 TestStream* stream2 = session_.CreateOutgoingDataStream();
300 EXPECT_NE(kDifferentPriority, stream2->EffectivePriority());
301 // TODO(rtenneti): enable when chromium supports EXPECT_DEBUG_DFATAL.
302 /*
303 EXPECT_DEBUG_DFATAL(
304 session_.MarkWriteBlocked(stream2->id(), kDifferentPriority),
305 "Priorities do not match. Got: 0 Expected: 3");
306 */
307 }
308
282 TEST_P(QuicSessionTest, OnCanWrite) { 309 TEST_P(QuicSessionTest, OnCanWrite) {
283 TestStream* stream2 = session_.CreateOutgoingDataStream(); 310 TestStream* stream2 = session_.CreateOutgoingDataStream();
284 TestStream* stream4 = session_.CreateOutgoingDataStream(); 311 TestStream* stream4 = session_.CreateOutgoingDataStream();
285 TestStream* stream6 = session_.CreateOutgoingDataStream(); 312 TestStream* stream6 = session_.CreateOutgoingDataStream();
286 313
287 session_.MarkWriteBlocked(stream2->id(), kSomeMiddlePriority); 314 session_.MarkWriteBlocked(stream2->id(), kSomeMiddlePriority);
288 session_.MarkWriteBlocked(stream6->id(), kSomeMiddlePriority); 315 session_.MarkWriteBlocked(stream6->id(), kSomeMiddlePriority);
289 session_.MarkWriteBlocked(stream4->id(), kSomeMiddlePriority); 316 session_.MarkWriteBlocked(stream4->id(), kSomeMiddlePriority);
290 317
291 InSequence s; 318 InSequence s;
(...skipping 15 matching lines...) Expand all
307 StreamBlocker stream2_blocker(&session_, stream2->id()); 334 StreamBlocker stream2_blocker(&session_, stream2->id());
308 stream2_blocker.MarkWriteBlocked(); 335 stream2_blocker.MarkWriteBlocked();
309 EXPECT_FALSE(session_.HasPendingHandshake()); 336 EXPECT_FALSE(session_.HasPendingHandshake());
310 337
311 TestStream* stream3 = session_.CreateOutgoingDataStream(); 338 TestStream* stream3 = session_.CreateOutgoingDataStream();
312 StreamBlocker stream3_blocker(&session_, stream3->id()); 339 StreamBlocker stream3_blocker(&session_, stream3->id());
313 stream3_blocker.MarkWriteBlocked(); 340 stream3_blocker.MarkWriteBlocked();
314 EXPECT_FALSE(session_.HasPendingHandshake()); 341 EXPECT_FALSE(session_.HasPendingHandshake());
315 342
316 // Blocking (due to buffering of) the Crypto stream is detected. 343 // Blocking (due to buffering of) the Crypto stream is detected.
317 session_.MarkWriteBlocked(kCryptoStreamId, kSomeMiddlePriority); 344 session_.MarkWriteBlocked(kCryptoStreamId, kHighestPriority);
318 EXPECT_TRUE(session_.HasPendingHandshake()); 345 EXPECT_TRUE(session_.HasPendingHandshake());
319 346
320 TestStream* stream4 = session_.CreateOutgoingDataStream(); 347 TestStream* stream4 = session_.CreateOutgoingDataStream();
321 StreamBlocker stream4_blocker(&session_, stream4->id()); 348 StreamBlocker stream4_blocker(&session_, stream4->id());
322 stream4_blocker.MarkWriteBlocked(); 349 stream4_blocker.MarkWriteBlocked();
323 EXPECT_TRUE(session_.HasPendingHandshake()); 350 EXPECT_TRUE(session_.HasPendingHandshake());
324 351
325 InSequence s; 352 InSequence s;
326 // Force most streams to re-register, which is common scenario when we block 353 // Force most streams to re-register, which is common scenario when we block
327 // the Crypto stream, and only the crypto stream can "really" write. 354 // the Crypto stream, and only the crypto stream can "really" write.
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
504 } 531 }
505 532
506 QuicRstStreamFrame rst1(stream_id1, QUIC_STREAM_NO_ERROR); 533 QuicRstStreamFrame rst1(stream_id1, QUIC_STREAM_NO_ERROR);
507 session_.OnRstStream(rst1); 534 session_.OnRstStream(rst1);
508 EXPECT_EQ(0u, session_.GetNumOpenStreams()); 535 EXPECT_EQ(0u, session_.GetNumOpenStreams());
509 } 536 }
510 537
511 } // namespace 538 } // namespace
512 } // namespace test 539 } // namespace test
513 } // namespace net 540 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_session.cc ('k') | net/quic/test_tools/quic_test_utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698