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

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

Issue 1811043002: Landing Recent QUIC changes until 2016-03-15 16:26 UTC (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add an export clause. Created 4 years, 9 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/quic/quic_session_test.cc ('k') | net/quic/stream_sequencer_buffer.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_stream_sequencer.h" 5 #include "net/quic/quic_stream_sequencer.h"
6 6
7 #include <utility> 7 #include <utility>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "base/rand_util.h" 11 #include "base/rand_util.h"
12 #include "net/base/ip_endpoint.h" 12 #include "net/base/ip_endpoint.h"
13 #include "net/quic/quic_flags.h" 13 #include "net/quic/quic_flags.h"
14 #include "net/quic/quic_frame_list.h"
15 #include "net/quic/quic_utils.h" 14 #include "net/quic/quic_utils.h"
16 #include "net/quic/reliable_quic_stream.h" 15 #include "net/quic/reliable_quic_stream.h"
17 #include "net/quic/test_tools/mock_clock.h" 16 #include "net/quic/test_tools/mock_clock.h"
18 #include "net/quic/test_tools/quic_stream_sequencer_peer.h" 17 #include "net/quic/test_tools/quic_stream_sequencer_peer.h"
19 #include "net/quic/test_tools/quic_test_utils.h" 18 #include "net/quic/test_tools/quic_test_utils.h"
20 #include "net/test/gtest_util.h" 19 #include "net/test/gtest_util.h"
21 #include "testing/gmock/include/gmock/gmock.h" 20 #include "testing/gmock/include/gmock/gmock.h"
22 #include "testing/gmock_mutant.h" 21 #include "testing/gmock_mutant.h"
23 #include "testing/gtest/include/gtest/gtest.h" 22 #include "testing/gtest/include/gtest/gtest.h"
24 23
(...skipping 524 matching lines...) Expand 10 before | Expand all | Expand 10 after
549 OnFrame(3, "def"); 548 OnFrame(3, "def");
550 // Missing packet: 6, ghi. 549 // Missing packet: 6, ghi.
551 OnFrame(9, "jkl"); 550 OnFrame(9, "jkl");
552 551
553 vector<string> expected = {"abcdef"}; 552 vector<string> expected = {"abcdef"};
554 ASSERT_TRUE(VerifyReadableRegions(expected)); 553 ASSERT_TRUE(VerifyReadableRegions(expected));
555 554
556 sequencer_->MarkConsumed(6); 555 sequencer_->MarkConsumed(6);
557 } 556 }
558 557
559 TEST(QuicFrameListTest, FrameOverlapsBufferedData) {
560 QuicFrameList buffer;
561
562 // Ensure that FrameOverlapsBufferedData returns appropriate responses when
563 // there is existing data buffered.
564 const int kBufferedOffset = 10;
565 const int kBufferedDataLength = 3;
566 const int kNewDataLength = 3;
567 string data(kNewDataLength, '.');
568
569 // No overlap if no buffered frames.
570 EXPECT_EQ(0u, buffer.BytesBuffered());
571 size_t bytes_written;
572 // Add a buffered frame.
573 buffer.OnStreamData(
574 kBufferedOffset,
575 StringPiece(string(kBufferedDataLength, '.').data(), kBufferedDataLength),
576 QuicTime::Zero(), &bytes_written);
577
578 // New byte range partially overlaps with buffered frame, start offset
579 // preceding buffered frame.
580 EXPECT_TRUE(QuicStreamSequencerPeer::FrameOverlapsBufferedData(
581 &buffer, QuicStreamFrame(1, false, kBufferedOffset - 1, data)));
582 EXPECT_TRUE(QuicStreamSequencerPeer::FrameOverlapsBufferedData(
583 &buffer,
584 QuicStreamFrame(1, false, kBufferedOffset - kNewDataLength + 1, data)));
585
586 // New byte range partially overlaps with buffered frame, start offset inside
587 // existing buffered frame.
588 EXPECT_TRUE(QuicStreamSequencerPeer::FrameOverlapsBufferedData(
589 &buffer, QuicStreamFrame(1, false, kBufferedOffset + 1, data)));
590 EXPECT_TRUE(QuicStreamSequencerPeer::FrameOverlapsBufferedData(
591 &buffer, QuicStreamFrame(
592 1, false, kBufferedOffset + kBufferedDataLength - 1, data)));
593
594 // New byte range entirely outside of buffered frames, start offset
595 // preceeding buffered frame.
596 EXPECT_FALSE(QuicStreamSequencerPeer::FrameOverlapsBufferedData(
597 &buffer,
598 QuicStreamFrame(1, false, kBufferedOffset - kNewDataLength, data)));
599
600 // New byte range entirely outside of buffered frames, start offset later than
601 // buffered frame.
602 EXPECT_FALSE(QuicStreamSequencerPeer::FrameOverlapsBufferedData(
603 &buffer,
604 QuicStreamFrame(1, false, kBufferedOffset + kBufferedDataLength, data)));
605 }
606
607 TEST_F(QuicStreamSequencerTest, DontAcceptOverlappingFrames) { 558 TEST_F(QuicStreamSequencerTest, DontAcceptOverlappingFrames) {
608 // The peer should never send us non-identical stream frames which contain 559 // The peer should never send us non-identical stream frames which contain
609 // overlapping byte ranges - if they do, we close the connection. 560 // overlapping byte ranges - if they do, we close the connection.
610 561
611 QuicStreamFrame frame1(kClientDataStreamId1, false, 1, StringPiece("hello")); 562 QuicStreamFrame frame1(kClientDataStreamId1, false, 1, StringPiece("hello"));
612 sequencer_->OnStreamFrame(frame1); 563 sequencer_->OnStreamFrame(frame1);
613 564
614 QuicStreamFrame frame2(kClientDataStreamId1, false, 2, StringPiece("hello")); 565 QuicStreamFrame frame2(kClientDataStreamId1, false, 2, StringPiece("hello"));
615 EXPECT_CALL(stream_, CloseConnectionWithDetails(QUIC_INVALID_STREAM_FRAME, _)) 566 EXPECT_CALL(stream_, CloseConnectionWithDetails(QUIC_INVALID_STREAM_FRAME, _))
616 .Times(1); 567 .Times(1);
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
695 EXPECT_EQ(timestamp, t1); 646 EXPECT_EQ(timestamp, t1);
696 QuicStreamSequencerTest::ConsumeData(3); 647 QuicStreamSequencerTest::ConsumeData(3);
697 EXPECT_EQ(0u, NumBufferedBytes()); 648 EXPECT_EQ(0u, NumBufferedBytes());
698 EXPECT_EQ(6u, sequencer_->NumBytesConsumed()); 649 EXPECT_EQ(6u, sequencer_->NumBytesConsumed());
699 EXPECT_EQ(0u, sequencer_->NumBytesBuffered()); 650 EXPECT_EQ(0u, sequencer_->NumBytesBuffered());
700 } 651 }
701 652
702 } // namespace 653 } // namespace
703 } // namespace test 654 } // namespace test
704 } // namespace net 655 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_session_test.cc ('k') | net/quic/stream_sequencer_buffer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698